컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커
실무에 바로 적용할 수 있는 컨테이너 인프라 환경 기술!
IT 자원을 효율적으로 빠르게 사용할 수 있는 방법으로 컨테이너 환경이 거론되었으나 그동안 관리가 어렵고 복잡해서 상용되기 어려웠다. 하지만 쿠버네티스가 등장하면서 복잡도가 줄어들고 비용 대비 생산성을 높일 수 있게 되었다. 이 책은 현재 컨테이너 오케스트레이션 분야에서 표준으로 자리 잡고 있는 쿠버네티스를 활용해 시스템을 구축하고 운영하는 방법에 초점을 맞춰 구성했다. 컨테이너 인프라 환경 구축부터 통합 및 배포, 인프라 환경 운영을 위한 모니터링까지 쿠버네티스를 기반으로 시스템을 구축하고 운영하는 데 필요한 기초를 탄탄하게 다질 수 있을 것이다.
«컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커»는 1~3장을 공개합니다.
목차
- 1장 새로운 인프라 환경이 온다
- 1.1 컨테이너 인프라 환경이란
- 1.1.1 모놀리식 아키텍처
- 1.1.2 마이크로서비스 아키텍처
- 1.1.3 컨테이너 인프라 환경에 적합한 아키텍처
- 1.2 컨테이너 인프라 환경을 지원하는 도구
- 1.2.1 도커
- 1.2.2 쿠버네티스
- 1.2.3 젠킨스
- 1.2.4 프로메테우스와 그라파나
- 1.3 새로운 인프라 환경의 시작
- 2장 테스트 환경 구성하기
- 2.1 테스트 환경을 자동으로 구성하는 도구
- 2.1.1 버추얼박스 설치하기
- 2.1.2 베이그런트 설치하기
- 2.1.3 베이그런트 구성하고 테스트하기
- 2.2 베이그런트로 테스트 환경 구축하기
- 2.2.1 가상 머신에 필요한 설정 자동으로 구성하기
- 2.2.2 가상 머신에 추가 패키지 설치하기
- 2.2.3 가상 머신 추가로 구성하기
- 2.3 터미널 프로그램으로 가상 머신 접속하기
- 2.3.1 푸티 설치하기
- 2.3.2 슈퍼푸티 설치하기
- 2.3.3 슈퍼푸티로 다수의 가상 머신 접속하기
- 3장 컨테이너를 다루는 표준 아키텍처, 쿠버네티스
- 3.1 쿠버네티스 이해하기
- 3.1.1 왜 쿠버네티스일까
- 3.1.2 쿠버네티스 구성 방법
- 3.1.3 쿠버네티스 구성하기
- 3.1.4 파드 배포를 중심으로 쿠버네티스 구성 요소 살펴보기
- 3.1.5 파드의 생명주기로 쿠버네티스 구성 요소 살펴보기
- 3.1.6 쿠버네티스 구성 요소의 기능 검증하기
- 3.2 쿠버네티스 기본 사용법 배우기
- 3.2.1 파드를 생성하는 방법
- 3.2.2 오브젝트란
- 3.2.3 레플리카셋으로 파드 수 관리하기
- 3.2.4 스펙을 지정해 오브젝트 생성하기
- 3.2.5 apply로 오브젝트 생성하고 관리하기
- 3.2.6 파드의 컨테이너 자동 복구 방법
- 3.2.7 파드의 동작 보증 기능
- 3.2.8 노드 자원 보호하기
- 3.2.9 노드 유지보수하기
- 3.2.10 파드 업데이트하고 복구하기
- 3.3 쿠버네티스 연결을 담당하는 서비스
- 3.3.1 가장 간단하게 연결하는 노드포트
- 3.3.2 사용 목적별로 연결하는 인그레스
- 3.3.3 클라우드에서 쉽게 구성 가능한 로드밸런서
- 3.3.4 온프레미스에서 로드밸런서를 제공하는 MetalLB
- 3.3.5 부하에 따라 자동으로 파드 수를 조절하는 HPA
- 3.4 알아두면 쓸모 있는 쿠버네티스 오브젝트
- 3.4.1 데몬셋
- 3.4.2 컨피그맵
- 3.4.3 PV와 PVC
- 3.4.4 스테이트풀셋
- 4장 쿠버네티스를 이루는 컨테이너 도우미, 도커
- 4.1 도커를 알아야 하는 이유
- 4.1.1 파드, 컨테이너, 도커, 쿠버네티스의 관계
- 4.1.2 다양한 컨테이너 관리 도구
- 4.2 도커로 컨테이너 다루기
- 4.2.1 컨테이너 이미지 알아보기
- 4.2.2 컨테이너 실행하기
- 4.2.3 컨테이너 내부 파일 변경하기
- 4.2.4 사용하지 않는 컨테이너 정리하기
- 4.3 4가지 방법으로 컨테이너 이미지 만들기
- 4.3.1 기본 방법으로 빌드하기
- 4.3.2 컨테이너 용량 줄이기
- 4.3.3 컨테이너 내부에서 컨테이너 빌드하기
- 4.3.4 최적화해 컨테이너 빌드하기
- 4.4 쿠버네티스에서 직접 만든 컨테이너 사용하기
- 4.4.1 쿠버네티스에서 도커 이미지 구동하기
- 4.4.2 레지스트리 구성하기
- 4.4.3 직접 만든 이미지로 컨테이너 구동하기
- 5장 지속적 통합과 배포 자동화, 젠킨스
- 5.1 컨테이너 인프라 환경에서 CI/CD
- 5.1.1 CI/CD 도구 비교
- 5.1.2 젠킨스로 쿠버네티스 운영 환경 개선하기
- 5.2 젠킨스 설치를 위한 간편화 도구 살펴보기
- 5.2.1 배포 간편화 도구 비교하기
- 5.2.2 커스터마이즈로 배포 간편화하기
- 5.2.3 헬름으로 배포 간편화하기
- 5.3 젠킨스 설치 및 설정하기
- 5.3.1 헬름으로 젠킨스 설치하기
- 5.3.2 젠킨스 살펴보기
- 5.3.3 젠킨스 컨트롤러 설정하기
- 5.3.4 젠킨스 에이전트 설정하기
- 5.4 젠킨스로 CI/CD 구현하기
- 5.4.1 Freestyle로 간단히 echo-ip 배포하기
- 5.4.2 Pipeline 프로젝트로 손쉽게 echo-ip 배포하기
- 5.4.3 Pipeline 프로젝트로 구현하는 블루그린 배포 전략
- 5.5 젠킨스 플러그인을 통해 구현되는 GitOps
- 5.5.1 쿠버네티스 환경에 적합한 선언적인 배포 환경
- 5.5.2 슬랙을 통해 변경 사항 알리기
- 5.5.3 배포 변경 사항을 자동 비교하기
- 6장 안정적인 운영을 완성하는 모니터링, 프로메테우스와 그라파나
- 6.1 컨테이너 인프라 환경 모니터링하기
- 6.1.1 모니터링 도구 선택하기
- 6.1.2 쿠버네티스 환경에 적합한 모니터링 데이터 수집 방법
- 6.2 프로메테우스로 모니터링 데이터 수집과 통합하기
- 6.2.1 헬름으로 프로메테우스 설치하기
- 6.2.2 프로메테우스의 웹 UI 다루기
- 6.2.3 서비스 디스커버리로 수집 대상 가져오기
- 6.2.4 노드 익스포터로 쿠버네티스 노드 메트릭 수집하기
- 6.2.5 쿠버 스테이트 메트릭으로 쿠버네티스 클러스터 메트릭 수집하기
- 6.3 PromQL로 메트릭 데이터 추출하기
- 6.3.1 메트릭 데이터의 구조
- 6.3.2 PromQL 연산자
- 6.3.3 PromQL 데이터 타입
- 6.3.4 PromQL 함수
- 6.3.5 서머리와 히스토그램
- 6.4 그라파나로 모니터링 데이터 시각화하기
- 6.4.1 헬름으로 그라파나 설치하기
- 6.4.2 프로메테우스를 데이터 소스로 구성하기
- 6.4.3 노드 메트릭 데이터 시각화하기
- 6.4.4 파드 메트릭 데이터 시각화하기
- 6.5 좀 더 견고한 모니터링 환경 만들기
- 6.5.1 얼럿매니저로 이상 신호 감지하고 알려주기
- 6.5.2 내가 만든 대시보드 공유하기
- 6.5.3 다른 사람이 만든 대시보드 가져오기
- 부록A kubectl을 더 쉽게 사용하기
- A.1 kubectl 명령 자동 완성하기
- A.2 kubectl 별칭 사용하기
- A.3 kubectl 약어 사용하기
- 부록B 쿠버 대시보드 구성하기
- B.1 쿠버 대시보드 배포하기
- B.2 쿠버 대시보드에서 오브젝트 생성하기
- 부록C kubespray로 쿠버네티스 자동 구성하기
- C.1 kubespray를 위한 가상 머신 설치하기
- C.2 kubespray 설정 및 실행하기
- 부록D 컨테이너 깊게 들여다보기
- D.1 쿠버네티스가 컨테이너를 다루는 과정
- D.2 컨테이너 PID 1의 의미
- D.3 도커 아닌 runC로 컨테이너 생성하기