가상화 기술을 기반으로 한 가상머신 기술의 높은 오버헤드, 낮은 성능 등 단점이 부각되면서 이러한 문제 해결을 위해 보다 경량화된 도커/컨테이너 기술이 각광받고 있다. 이러한 추세에 따라 관리해야 하는 도커/컨테이너의 수가 많아지면서, 이를 효율적으로 관리 및 운영할 수 있는 쿠버네티스를 설명하는 책이다. 애플리케이션의 컨테이너화 방법부터 쿠버네티스의 설치, 운영에 필요한 기본 개념 및 용어, 운영 환경에서 활용 방안까지 예제와 함께 알기 쉽게 소개한다. 또한 3판에서는 운영 환경에 필요한 정책 및 거버넌스, 최신 기술인 서비스 메시를 새롭게 추가했다. 쿠버네티스를 처음 접하는 독자가 고급 사용자가 될 수 있도록 이끌어주는 좋은 지침서가 될 것이다.
Contents
1장. 쿠버네티스 소개
__속도
____불변성의 가치
____선언형 컨피규레이션
____자가 치유 시스템
__서비스와 팀의 확장
____분리
____애플리케이션과 클러스터의 손쉬운 확장
____마이크로서비스를 통한 개발 팀 확장
____일관성과 확장에 대한 고려 사항 분리
__인프라 추상화
__효율성
__클라우드 네이티브 에코시스템
__요약
2장. 컨테이너 생성과 실행
__컨테이너 이미지
__도커를 활용한 애플리케이션 이미지 빌드
____도커파일
____이미지 크기 최적화
____이미지 보안
__다단계 이미지 빌드
__원격 레지스트리에 이미지 저장
__컨테이너 런타임 인터페이스
____도커로 컨테이너 실행
____kuard 애플리케이션 탐색
____리소스 사용량 제한
__정리
__요약
3장. 쿠버네티스 클러스터 배포
__퍼블릭 클라우드 제공자 환경에 쿠버네티스 설치
____구글 쿠버네티스 엔진을 활용해 쿠버네티스 설치
____애저 쿠버네티스 서비스에 쿠버네티스 설치
____아마존 웹 서비스에 쿠버네티스 설치
__미니큐브를 통해 로컬 환경에 쿠버네티스 설치
__도커 환경에서 쿠버네티스 실행
__쿠버네티스 클라이언트
____클러스터 상태 확인
____쿠버네티스 노드 조회
__클러스터 컴포넌트
____쿠버네티스 프록시
____쿠버네티스 DNS
____쿠버네티스 UI
__요약
4장. 공통 kubectl 명령
__네임스페이스
__콘텍스트
__쿠버네티스 API 객체 조회
__쿠버네티스 객체 생성, 수정, 삭제
__객체 라벨링과 애노테이션
__디버깅 명령
__클러스터 관리
__명령 자동 완성
__클러스터 조회의 대안
__요약
5장. 파드
__쿠버네티스에서의 파드
__파드에 대한 생각
__파드 매니페스트
____파드 생성
____파드 매니페스트 생성
__파드 실행
____파드 조회
____파드 세부 사항
____파드 삭제
__파드에 접근
____로그를 통해 더 많은 정보 얻기
____exec를 사용해 컨테이너에서 명령 실행
____컨테이너 내외부로 파일 복사
__상태 검사
____활성 프로브
____준비 프로브
____시작 프로브
____고급 프로브 구성
____상태 검사의 기타 타입
__리소스 관리
____리소스 요청: 최소 필요 리소스
____리소스 제한으로 리소스 사용량 제한
__볼륨을 통한 데이터 보존
____파드에 볼륨 사용
____파드에서 볼륨을 사용하는 다양한 방법
__종합
__요약
6장. 라벨과 애노테이션
__라벨
____라벨 적용
____라벨 수정
____라벨 셀렉터
____API 객체의 라벨 셀렉터
____쿠버네티스 아키텍처의 라벨
__애노테이션
__정리
__요약
7장. 서비스 탐색
__서비스 탐색이란?
__서비스 객체
____서비스 DNS
____준비 검사
__클러스터 외부로의 서비스
__로드밸런서 연계
__고급 세부 정보
____엔드포인트
____수동 서비스 탐색
____kube-proxy와 클러스터 IP
____클러스터 IP 환경 변수
__기타 환경과 연결
____클러스터 외부 리소스에 연결
____클러스터 내부의 서비스에 외부 리소스 연결
__정리
__요약
8장. 인그레스를 통한 HTTP 로드밸런싱
__인그레스 스펙과 인그레스 컨트롤러
__컨투어 설치
____DNS 설정
____로컬 hosts 파일 설정
__인그레스의 사용
____가장 간단한 사용법
____호스트 이름의 사용
____경로 사용
____정리
__심화된 인그레스 주제와 문제
____다중 인그레스 컨트롤러 실행
____다중 인그레스 객체
____인그레스와 네임스페이스
____경로 재작성
____TLS 제공
__인그레스의 대체 구현
__인그레스의 미래
__요약
9장. 레플리카셋
__조정 루프
__파드와 레플리카셋의 관계
____기존 컨테이너 수용
____컨테이너 격리
__레플리카셋을 통한 설계
__레플리카셋 명세
____파드 템플릿
____라벨
__레플리카셋 생성
__레플리카셋 검사
____파드에서 레플리카셋 찾기
____레플리카셋에 대한 파드 집합 찾기
__레플리카셋 확장
____kubectl scale을 사용한 명령형 확장
____kubectl apply를 사용한 선언형 확장
____레플리카셋 자동 확장
__레플리카셋 삭제
__요약
10장. 디플로이먼트
__첫 번째 디플로이먼트
__디플로이먼트 내부
__디플로이먼트 생성
__디플로이먼트 관리
__디플로이먼트 업데이트
____디플로이먼트 확장
____컨테이너 이미지 업데이트
____롤아웃 이력
__디플로이먼트 전략
____재생성 전략
____롤링업데이트 전략
____서비스 안정을 위한 느린 롤아웃
__디플로이먼트 삭제
__디플로이먼트 모니터링
__요약
11장. 데몬셋
__데몬셋 스케줄러
__데몬셋 생성
__데몬셋을 특정 노드로 제한
____노드에 라벨 추가
____노드 셀렉터
__데몬셋 업데이트
__데몬셋 삭제
__요약
12장. 잡
__잡 객체
__잡 패턴
____원샷
____병렬
____작업 대기열
__크론잡
__요약
13장. 컨피그맵과 시크릿
__컨피그맵
____컨피그맵 생성
____컨피그맵 사용
__시크릿
____시크릿 생성
____시크릿 사용
____사설 컨테이너 레지스트리
__명명 규칙
__컨피그맵과 시크릿 관리
____조회
____생성
____업데이트
__요약
14장. 쿠버네티스를 위한 역할 기반 접근 제어
__역할 기반 접근 제어
____쿠버네티스에서의 ID
____역할과 역할 바인딩의 이해
____쿠버네티스에서의 역할과 역할 바인딩
__RBAC을 관리하기 위한 기술
____can-i를 통한 권한 부여 테스트
____소스 컨트롤에서 RBAC 관리
__고급 주제
____클러스터 역할 조합
____바인딩을 위한 그룹 사용
__요약
15장. 서비스 메시
__암호화와 상호 TLS를 통한 인증
__트래픽 셰이핑
__내부 검사
__서비스 메시가 정말로 필요한가?
__서비스 메시 구현체에 대한 내부 검사
__서비스 메시 환경
__요약
16장. 스토리지 솔루션과 쿠버네티스의 연계
__외부 서비스 가져오기
____셀렉터가 없는 서비스
____외부 서비스의 제약 사항: 상태 검사
__신뢰할 수 있는 싱글톤 실행
____MySQL 싱글톤 실행
____동적 볼륨 프로비저닝
__스테이트풀셋을 통한 쿠버네티스 네이티브 스토리지
____스테이트풀셋의 속성
____스테이트풀셋을 통한 몽고DB 수동 복제
____몽고DB 클러스터 생성 자동화
____영구 볼륨과 스테이트풀셋
____마지막 단계: 준비 프로브
__요약
17장. 쿠버네티스 확장
__쿠버네티스 확장의 의미
__확장 지점
__사용자 정의 리소스를 위한 패턴
____저스트 데이터
____컴파일러
____오퍼레이터
____시작하기
__요약
18장. 공통 프로그래밍 언어에서 쿠버네티스 접근하기
__쿠버네티스 API: 클라이언트의 관점
____OpenAPI와 생성된 클라이언트 라이브러리
____kubectl x는 어떤가?
__쿠버네티스 API 프로그래밍
____클라이언트 라이브러리 설치
____쿠버네티스 API에 인증
____쿠버네티스 API에 접근
____모두 합치기: 파이썬, 자바, .NET에서 파드 나열과 생성
____객체 생성과 패치
____변경 사항에 대한 쿠버네티스 API 지켜보기
____파드와 상호작용
__요약
19장. 쿠버네티스에서 애플리케이션 보안
__SecurityContext 이해
____SecurityContext 문제
__파드 보안
____파드 보안이란?
____파드 보안 표준 적용
__서비스 계정 관리
__역할 기반 접근 제어
__런타임 클래스
__네트워크 정책
__서비스 메시
__보안 벤치마크 도구
__이미지 보안
__요약
20장. 쿠버네티스 클러스터에 대한 정책과 거버넌스
__정책과 거버넌스가 중요한 이유
__승인 흐름
__게이트키퍼를 통한 정책과 거버넌스
____개방형 정책 에이전트란?
____게이트키퍼 설치
____정책 구성
____제약 조건 템플릿 이해
____제약 조건 생성
____감사
____변형
____데이터 복제
____메트릭
____정책 라이브러리
__요약
21장. 멀티클러스터 애플리케이션 배포
__시작에 앞서
__로드밸런싱 접근 방식으로 맨 위에서부터 시작하기
__멀티클러스터를 위한 애플리케이션 구축
____복제된 사일로: 가장 단순한 교차 지역 모델
____샤딩: 지역 데이터
____더 나은 유연성: 마이크로서비스 라우팅
__요약
22장. 애플리케이션 구성
__알아야 할 원칙
____신뢰성 있는 원천 데이터로서의 파일 시스템
____코드 리뷰의 역할
____피처 게이트
__소스 컨트롤에서의 애플리케이션 관리
____파일 시스템 레이아웃
____정기 버전 관리
__개발, 테스트, 배포를 위한 애플리케이션 구조화
____목표
____릴리스 진행
__템플릿을 통한 애플리케이션 매개변수화
____헬름과 템플릿을 통한 매개변수화
____매개변수화를 위한 파일 시스템 레이아웃
__전 세계에 애플리케이션 배포
____전 세계 배포를 위한 아키텍처
____전 세계 배포 구현
____전 세계 배포를 위한 대시보드와 모니터링
__요약
부록. 쿠버네티스 클러스터 구축
Author
브렌던 번스,조 베다,켈시 하이타워,라클런 이븐슨,이준
짧은 기간 동안 소프트웨어 산업 경력을 쌓은 후, 인간처럼 움직이는 로봇 팔에 대한 운동 계획을 연구해 로보틱스 분야에서 박사 학위를 취득했다. 그 후 잠시 동안 컴퓨터과학 교수로 활동했다. 결국 시애틀로 돌아와 구글에 합류해 저지연 색인을 사용한 웹 검색 인프라 업무를 담당했다. 구글에 있는 동안 조 베다(Joe Beda), 크레이그 맥룩키(Craig McLuckie) 와 함께 쿠버네티스 프로젝트를 탄생시켰다. 현재 마이크로소프트 애저(Microsoft Azure)의 엔지니어링 임원으로 재직 중이다.
마이크로소프트 애저의 최고 엔지니어. 쿠버네티스 오픈 소스 프로젝트의 공동 설립자다. 10년 넘게 클라우드 애플리케이션을 구축해왔다.
짧은 기간 동안 소프트웨어 산업 경력을 쌓은 후, 인간처럼 움직이는 로봇 팔에 대한 운동 계획을 연구해 로보틱스 분야에서 박사 학위를 취득했다. 그 후 잠시 동안 컴퓨터과학 교수로 활동했다. 결국 시애틀로 돌아와 구글에 합류해 저지연 색인을 사용한 웹 검색 인프라 업무를 담당했다. 구글에 있는 동안 조 베다(Joe Beda), 크레이그 맥룩키(Craig McLuckie) 와 함께 쿠버네티스 프로젝트를 탄생시켰다. 현재 마이크로소프트 애저(Microsoft Azure)의 엔지니어링 임원으로 재직 중이다.
마이크로소프트 애저의 최고 엔지니어. 쿠버네티스 오픈 소스 프로젝트의 공동 설립자다. 10년 넘게 클라우드 애플리케이션을 구축해왔다.