이 책은 2020년에 출간된 『쿠버네티스 모범 사례』 개정 도서로, 쿠버네티스 창시자 ‘브렌던 번스’와 분산 시스템, 오픈 소스, 엔터프라이즈 애플리케이션 개발 분야의 전문가 3인이 함께 집필한 쿠버네티스 모범 사례 가이드이다. 『쿠버네티스 창시자에게 배우는 모범 사례 2판』은 여러분이 정성껏 개발한 애플리케이션을 쿠버네티스에 처음 배포하는 단계부터 안정적인 운영에 이르기까지, 전 과정에 걸쳐 필요한 핵심 지식을 체계적으로 제공한다. 이 책에 담긴 실전 노하우와 검증된 모범 사례들을 통해 여러분의 쿠버네티스 애플리케이션 운영의 성공을 이끌어보자.
Contents
CHAPTER 01 기본 서비스 설치
_1.1 애플리케이션 개요
_1.2 구성 파일 관리
_1.3 디플로이먼트를 이용한 복제 서비스 생성
__1.3.1 이미지 관리 모범 사례
__1.3.2 애플리케이션 레플리카 생성
_1.4 HTTP 트래픽을 처리하는 외부 인그레스 설치
_1.5 컨피그맵으로 애플리케이션 구성
_1.6 시크릿 인증 관리
_1.7 간단한 스테이트풀 데이터베이스 배포
_1.8 서비스를 응용한 TCP 로드 밸런서 구축
_1.9 인그레스를 이용해 트래픽을 스태틱 파일 서버로 전달
_1.10 헬름을 이용한 애플리케이션 파라미터화
_1.11 서비스 배포 모범 사례
CHAPTER 02 개발자 워크플로
_2.1 목표
_2.2 개발 클러스터 구축
_2.3 여러 개발자가 사용할 공용 클러스터 구축
__2.3.1 유저 온보딩
__2.3.2 네임스페이스 생성과 보안
__2.3.3 네임스페이스 관리
__2.3.4 클러스터 수준 서비스
_2.4 개발자 워크플로 활성화
__2.4.1 초기 설치
__2.4.2 액티브한 개발 환경
__2.4.3 테스팅과 디버깅
_2.5 개발 환경 설정 모범 사례
_4.1 컨피그맵과 시크릿을 통한 구성
__4.1.1 컨피그맵
__4.1.2 시크릿
_4.2 컨피그맵, 시크릿 API 모범 사례
_4.3 시크릿 모범 사례
_4.4 RBAC
__4.4.1 RBAC 기초
__4.4.2 RBAC 모범 사례
CHAPTER 05 지속적 통합, 테스팅, 배포
_5.1 버전 관리
_5.2 지속적 통합
_5.3 테스팅
_5.4 컨테이너 빌드
_5.5 컨테이너 이미지 태깅
_5.6 지속적 배포
_5.7 배포 전략
_5.8 프로덕션 테스팅
_5.9 파이프라인 구축과 카오스 실험
__5.9.1 CI 구축
__5.9.2 CD 구축
__5.9.3 롤링 업그레이드 수행
__5.9.4 간단한 카오스 실험
_5.10 CI/CD 모범 사례
CHAPTER 06 버저닝, 릴리스, 롤아웃
_6.1 버저닝
_6.2 릴리스
_6.3 롤아웃
_6.4 종합 예제
_6.5 모범 사례
CHAPTER 07 글로벌 애플리케이션 분산과 스테이징
_7.1 이미지 분산 배포
_7.2 배포 파라미터화
_7.3 글로벌 트래픽 로드 밸런싱
_7.4 안정적인 글로벌 롤아웃
__7.4.1 사전 롤아웃 검사
__7.4.2 카나리 리전
__7.4.3 리전 타입 식별
__7.4.4 글로벌 롤아웃 전략 수립
_7.5 문제 발생 시 대처 요령
_7.6 글로벌 롤아웃 모범 사례
CHAPTER 08 리소스 관리
_8.1 쿠버네티스 스케줄러
__8.1.1 프레디킷
__8.1.2 우선순위
_8.2 고급 스케줄링 기법
__8.2.1 파드 어피니티와 안티-어피니티
__8.2.2 노드셀렉터
__8.2.3 테인트와 톨러레이션
_8.3 파드 리소스 관리
__8.3.1 리소스 요청
__8.3.2 리소스 리밋과 파드 QoS
__8.3.3 PodDisruptionBudgets
__8.3.4 네임스페이스를 이용한 리소스 관리
__8.3.5 리소스쿼터
__8.3.6 리밋레인지
__8.3.7 클러스터 스케일링
__8.3.8 애플리케이션 스케일링
__8.3.9 HPA를 이용한 수평 스케일링
__8.3.10 커스텀 메트릭을 이용한 HPA
__8.3.11 수직 파드 오토스케일러
_8.4 리소스 관리 모범 사례
CHAPTER 09 네트워킹, 네트워크 보안, 서비스 메시
_9.1 쿠버네티스 네트워킹 원리
_9.2 네트워크 플러그인
__9.2.1 Kubenet
__9.2.2 Kubenet 모범 사례
__9.2.3 CNI 플러그인
__9.2.4 CNI 모범 사례
_9.3 쿠버네티스 서비스
__9.3.1 ClusterIP 서비스 타입
__9.3.2 NodePort 서비스 타입
__9.3.3 ExternalName 서비스 타입
__9.3.4 LoadBalancer 서비스 타입
__9.3.5 인그레스와 인그레스 컨트롤러
__9.3.6 게이트웨이 API
__9.3.7 서비스와 인그레스 컨트롤러 모범 사례
_9.4 네트워크 보안 정책
_9.5 네트워크 정책 모범 사례
_9.6 서비스 메시
_9.7 서비스 메시 모범 사례
CHAPTER 10 파드와 컨테이너 보안
_10.1 파드 시큐리티 어드미션 컨트롤러
__10.1.1 파드 시큐리티 어드미션 활성화
__10.1.2 파드 보안 수준
__10.1.3 네임스페이스 레이블을 이용한 파드 시큐리티 활성화
_10.2 워크로드 격리와 런타임클래스
__10.2.1 런타임클래스 사용하기
__10.2.2 런타임 구현체
__10.2.3 워크로드 격리와 런타임클래스 모범 사례
_10.3 파드와 컨테이너 보안 관련 고려 사항
__10.3.1 어드미션 컨트롤러
__10.3.2 침입 및 이상 징후 탐지 툴
CHAPTER 11 클러스터 정책과 거버넌스
_11.1 정책과 거버넌스의 중요성
_11.2 정책의 변별성
_11.3 클라우드 네이티브 정책 엔진
_11.4 게이트키퍼 개요
__11.4.1 정책 예제
__11.4.2 게이트키퍼 용어
__11.4.3 제약조건 템플릿 정의
__11.4.4 제약조건 정의
__11.4.5 데이터 복제
__11.4.6 UX
_11.5 집행 액션과 감사 적용
__11.5.1 변형
__11.5.2 정책 테스팅
__11.5.3 게이트키퍼 연습하기
_11.6 정책과 거버넌스 모범 사례
CHAPTER 12 멀티클러스터 관리
_12.1 멀티클러스터의 필요성
_12.2 멀티클러스터 설계 문제
_12.3 멀티클러스터 배포 관리
_12.4 배포와 관리 패턴
_12.5 깃옵스로 클러스터를 관리하는 방식
_12.6 멀티클러스터 관리 툴
_12.7 쿠버네티스 페더레이션
_12.8 멀티클러스터 관리 모범 사례
CHAPTER 13 외부 서비스와 쿠버네티스 통합
_13.1 쿠버네티스로 서비스 임포트
__13.1.1 셀렉터리스 서비스로 안정적인 IP 주소 사용
__13.1.2 CNAME 기반 서비스로 안정적인 DNS 네임 사용
__13.1.3 액티브 컨트롤러 방식
_13.2 쿠버네티스에서 서비스 익스포트
__13.2.1 내부 로드 밸런서로 서비스 익스포트
__13.2.2 NodePort로 서비스 익스포트
__13.2.3 외부 서버와 쿠버네티스 통합
_13.3 쿠버네티스 간 서비스 공유
_13.4 서드파티 툴
_13.5 클러스터와 외부 서비스 연결 모범 사례
CHAPTER 14 쿠버네티스에서 머신러닝 실행하기
_14.1 머신러닝에 쿠버네티스를 사용하면 좋은 점
_14.2 머신러닝 워크플로
_14.3 쿠버네티스 클러스터 관리자가 고려해야 할 사항
__14.3.1 모델 훈련
__14.3.2 분산 훈련
__14.3.3 리소스 제약조건
__14.3.4 특수 하드웨어
__14.3.5 라이브러리, 드라이버, 커널 모듈
__14.3.6 스토리지
__14.3.7 네트워킹
__14.3.8 전용 프로토콜
_14.4 데이터 과학자의 관심사
_14.5 쿠버네티스 머신러닝 모범 사례
CHAPTER 15 고수준 애플리케이션 패턴 구축
_15.1 고수준 추상화 개발 방식
_15.2 쿠버네티스 확장
__15.2.1 쿠버네티스 클러스터 확장
__15.2.2 쿠버네티스 UX 확장
__15.2.3 컨테이너화 개발 간소화
__15.2.4 ‘푸시-투-디플로이’ 환경 구축
_15.3 플랫폼 구축 시 설계 고려 사항
__15.3.1 컨테이너 이미지로 익스포트하는 기능 지원
__15.3.2 기존 서비스와 서비스 디스커버리 메커니즘 지원
_15.4 애플리케이션 플랫폼 구축 모범 사례
_18.1 깃옵스란?
_18.2 깃옵스가 필요한 이유
_18.3 깃옵스 리포지터리 구조
_18.4 시크릿 관리
_18.5 플럭스 설치
_18.6 깃옵스 툴
_18.7 깃옵스 모범 사례
CHAPTER 19 보안
_19.1 클러스터 보안
__19.1.1 etcd 액세스
__19.1.2 인증
__19.1.3 인가
__19.1.4 TLS
__19.1.5 kubelet과 클라우드 메타데이터 액세스
__19.1.6 시크릿
__19.1.7 로깅과 감사
__19.1.8 클러스터 보안 태세 툴
_19.2 클러스터 보안 모범 사례
_19.3 워크로드 컨테이너 보안
__19.3.1 파드 시큐리티 어드미션
__19.3.2 Seccomp, AppArmor, SELinux
__19.3.3 어드미션 컨트롤러
__19.3.4 오퍼레이터
__19.3.5 네트워크 정책
__19.3.6 런타임 보안
__19.3.7 워크로드 컨테이너 보안 모범 사례
_19.4 코드 보안
__19.4.1 넌루트와 무배포 컨테이너
__19.4.2 컨테이너 취약점 탐색
__19.4.3 코드 리포지터리 보안
_19.5 코드 보안 모범 사례
CHAPTER 20 카오스 테스팅, 로드 테스팅, 실험
_20.1 카오스 테스팅
__20.1.1 카오스 테스팅의 목표
__20.1.2 카오스 테스팅의 전제 조건
__20.1.3 애플리케이션 통신에 관한 카오스 테스팅
__20.1.4 애플리케이션 작동에 관한 카오스 테스팅
__20.1.5 애플리케이션의 보안 및 복원성에 관한 퍼즈 테스팅
_20.2 로드 테스팅
__20.2.1 로드 테스팅의 목표
__20.2.2 로드 테스팅의 전제 조건
__20.2.3 실제와 가까운 트래픽 생성
__20.2.4 애플리케이션 로드 테스팅
__20.2.5 로드 테스팅을 이용한 애플리케이션 튜닝
_20.3 실험
__20.3.1 실험의 목표
__20.3.2 실험의 전제 조건
__20.3.3 실험 구축
CHAPTER 21 오퍼레이터 구현
_21.1 오퍼레이터 핵심 컴포넌트
_21.2 커스텀 리소스 정의
__21.2.1 쿠버네티스 API 오브젝트, 리소스, 버전, 그룹 및 카인드
_21.3 API 생성
_21.4 컨트롤러 조정
_21.5 리소스 검사
_21.6 컨트롤러 구현
_21.7 오퍼레이터 라이프 사이클
__21.7.1 버전 업그레이드
__21.7.2 오퍼레이터 모범 사례
Author
브렌던 번스,에디 비얄바,데이브 스트레벨,라클런 이븐슨,이일웅
짧은 기간 동안 소프트웨어 산업 경력을 쌓은 후, 인간처럼 움직이는 로봇 팔에 대한 운동 계획을 연구해 로보틱스 분야에서 박사 학위를 취득했다. 그 후 잠시 동안 컴퓨터과학 교수로 활동했다. 결국 시애틀로 돌아와 구글에 합류해 저지연 색인을 사용한 웹 검색 인프라 업무를 담당했다. 구글에 있는 동안 조 베다(Joe Beda), 크레이그 맥룩키(Craig McLuckie) 와 함께 쿠버네티스 프로젝트를 탄생시켰다. 현재 마이크로소프트 애저(Microsoft Azure)의 엔지니어링 임원으로 재직 중이다.
마이크로소프트 애저의 최고 엔지니어. 쿠버네티스 오픈 소스 프로젝트의 공동 설립자다. 10년 넘게 클라우드 애플리케이션을 구축해왔다.
짧은 기간 동안 소프트웨어 산업 경력을 쌓은 후, 인간처럼 움직이는 로봇 팔에 대한 운동 계획을 연구해 로보틱스 분야에서 박사 학위를 취득했다. 그 후 잠시 동안 컴퓨터과학 교수로 활동했다. 결국 시애틀로 돌아와 구글에 합류해 저지연 색인을 사용한 웹 검색 인프라 업무를 담당했다. 구글에 있는 동안 조 베다(Joe Beda), 크레이그 맥룩키(Craig McLuckie) 와 함께 쿠버네티스 프로젝트를 탄생시켰다. 현재 마이크로소프트 애저(Microsoft Azure)의 엔지니어링 임원으로 재직 중이다.
마이크로소프트 애저의 최고 엔지니어. 쿠버네티스 오픈 소스 프로젝트의 공동 설립자다. 10년 넘게 클라우드 애플리케이션을 구축해왔다.