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 개발 환경 설정 모범 사례
CHAPTER 03 모니터링과 로깅
_3.1 메트릭 vs 로그
_3.2 모니터링 기법
_3.3 모니터링 패턴
_3.4 쿠버네티스 메트릭 개요
__3.4.1 cAdvisor
__3.4.2 메트릭 서버
__3.4.3 kube-state-metrics
_3.5 어떤 메트릭을 모니터링하나?
_3.6 모니터링 툴
_3.7 프로메테우스를 이용한 쿠버네티스 모니터링
_3.8 로깅 개요
_3.9 로깅 툴
_3.10 로키 스택을 사용한 로깅
_3.11 알림
_3.12 모니터링, 로깅, 알림 모범 사례
__3.12.1 모니터링
__3.12.2 로깅
__3.12.3 알림
CHAPTER 04 구성, 시크릿, RBAC
_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 애플리케이션 플랫폼 구축 모범 사례
CHAPTER 16 상태와 스테이트풀 애플리케이션 관리
_16.1 볼륨과 볼륨 마운트
_16.2 볼륨 모범 사례
_16.3 쿠버네티스 스토리지
__16.3.1 퍼시스턴트볼륨
__16.3.2 퍼시스턴트볼륨클레임
__16.3.3 스토리지클래스
__16.3.4 쿠버네티스 스토리지 모범 사례
_16.4 스테이트풀 애플리케이션
__16.4.1 스테이트풀셋
__16.4.2 오퍼레이터
__16.4.3 스테이트풀셋과 오퍼레이터 모범 사례
CHAPTER 17 어드미션 컨트롤과 인가
_17.1 어드미션 컨트롤
__17.1.1 어드미션 컨트롤러란?
__17.1.2 어드미션 컨트롤의 중요성
__17.1.3 어드미션 컨트롤러 타입
__17.1.4 어드미션 웹훅 구성
__17.1.5 어드미션 컨트롤 모범 사례
_17.2 인가
__17.2.1 인가 모듈
__17.2.2 인가 모범 사례
CHAPTER 18 깃옵스와 배포
_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 오퍼레이터 모범 사례