기초부터 핵심 기술, 실무 활용, 효과적인 운영법까지!
기초부터 핵심 기술, 실무 활용, 효과적인 운영법까지!
실전 투입을 위한 준비로 제격인 쿠버네티스 교과서
쿠버네티스는 지금도 변화 중이고 거대한 기능을 갖춘 강력한 플랫폼이다. 그만큼 학습하기에 쉽지 않은 대상이기도 하다. 저자는 다년간의 교육과 워크숍에서 찾은 효과적인 학습 과정을 바탕으로 이 책을 구성했다. 핵심 개념에서 시작하여 세부 사항을 설명하고, 어렵고 복잡한 주제는 쿠버네티스 사용에 어느 정도 익숙해진 후에 접하도록 배치했다. 또한, 기술적 지식을 너무 얕지 않게 전달하면서도 애플리케이션에서 쿠버네티스를 어떻게 사용할 수 있는지에 초점을 맞췄다. 특히 280개가 넘는 실습 예제와 연습 문제로 직접 실습해볼 수 있으며, 이 실습을 통해 쿠버네티스의 다양한 기능과 실무 프랙티스, 쿠버네티스 생태계를 구성하는 여러 도구의 사용법을 익힐 수 있다.
1부 쿠버네티스 빠르게 훑어보기
1장 시작하기 전에
1.1 쿠버네티스 이해하기
1.2 이 책의 대상 독자
1.3 실습 환경 만들기
__1.3.1 이 책의 예제 코드 내려받기
__1.3.2 도커 데스크톱 설치하기
__1.3.3 도커 커뮤니티 에디션과 K3s 설치하기
__1.3.4 쿠버네티스 명령행 도구 설치하기
__1.3.5 애저 환경에서 단일 노드 쿠버네티스 클러스터 실행하기
__1.3.6 AWS에서 단일 노드 쿠버네티스 클러스터 실행하기
__1.3.7 생성한 클러스터 확인하기
1.4 바로 활용하기
2장 파드와 디플로이먼트로 컨테이너 실행하기
2.1 쿠버네티스는 어떻게 컨테이너를 실행하고 관리하는가
2.2 컨트롤러 객체와 함께 파드 실행하기
2.3 애플리케이션 매니페스트에 배포 정의하기
2.4 파드에서 실행 중인 애플리케이션에 접근하기
2.5 쿠버네티스의 리소스 관리 이해하기
2.6 연습 문제
3장 네트워크를 통해 서비스에 파드 연결하기
3.1 쿠버네티스 내부의 네트워크 트래픽 라우팅
3.2 파드와 파드 간 통신
3.3 외부 트래픽을 파드로 전달하기
3.4 쿠버네티스 클러스터 외부로 트래픽 전달하기
3.5 쿠버네티스 서비스의 해소 과정
3.6 연습 문제
4장 컨피그맵과 비밀값으로 애플리케이션 설정하기
4.1 쿠버네티스에서 애플리케이션에 설정이 전달되는 과정
4.2 컨피그맵에 저장한 설정 파일 사용하기
4.3 컨피그맵에 담긴 설정값 데이터 주입하기
4.4 비밀값을 이용하여 민감한 정보가 담긴 설정값 다루기
4.5 쿠버네티스의 애플리케이션 설정 관리
4.6 연습 문제
5장 볼륨, 마운트, 클레임을 이용한 데이터 퍼시스턴시
5.1 쿠버네티스에서 컨테이너 파일 시스템이 구축되는 과정
5.2 볼륨과 마운트로 노드에 데이터 저장하기
5.3 전체에서 접근 가능하도록 데이터 저장하기: 영구볼륨과 클레임
5.4 스토리지의 유형과 동적 볼륨 프로비저닝
5.5 스토리지를 선택할 때 고려할 점
5.6 연습 문제
6장 컨트롤러 리소스를 이용한 애플리케이션의 스케일링
6.1 쿠버네티스는 어떻게 애플리케이션을 스케일링하는가
6.2 디플로이먼트와 레플리카셋을 이용한 부하 스케일링
6.3 데몬셋을 이용한 스케일링으로 고가용성 확보하기
6.4 쿠버네티스의 객체 간 오너십
6.5 연습 문제
2부 쿠버네티스 실무에 활용하기
7장 멀티컨테이너 파드를 이용하여 애플리케이션 확장하기
7.1 파드와 컨테이너의 통신
7.2 초기화 컨테이너를 이용한 애플리케이션 시작
7.3 어댑터 컨테이너를 이용한 일관성 있는 애플리케이션 관리
7.4 외부와의 통신을 추상화하기: 앰배서더 컨테이너
7.5 파드 환경 이해하기
7.6 연습 문제
8장 데이터를 많이 다루는 애플리케이션 실행하기: 스테이트풀셋과 잡
8.1 스테이트풀셋을 이용한 안정성 모델링
8.2 스테이트풀셋에서 초기화 컨테이너 활용하기
8.3 볼륨 클레임 템플릿으로 스토리지 요청하기
8.4 잡과 크론잡을 이용한 유지 보수 작업
8.5 유상태 애플리케이션을 위한 플랫폼 선택하기
8.6 연습 문제
9장 롤아웃과 롤백을 이용한 애플리케이션 릴리스 관리
9.1 쿠버네티스의 롤링 업데이트
9.2 롤아웃과 롤백을 이용한 디플로이먼트 업데이트
9.3 디플로이먼트의 롤링 업데이트 설정
9.4 데몬셋과 스테이트풀셋의 롤링 업데이트
9.5 릴리스 전략 이해하기
9.6 연습 문제
10장 헬름을 이용한 애플리케이션 패키징 및 관리
10.1 헬름이 제공하는 기능
10.2 헬름으로 애플리케이션 패키징하기
10.3 차트 간 의존 관계 모델링하기
10.4 헬름으로 설치한 릴리스의 업그레이드와 롤백
10.5 헬름은 어떤 상황에 적합한가
10.6 연습 문제
11장 애플리케이션 개발: 개발 워크플로와 CI/CD
11.1 도커 개발 워크플로
11.2 쿠버네티스 개발 워크플로
11.3 컨텍스트와 네임스페이스를 이용하여 워크로드 분리하기
11.4 도커를 배제한 쿠버네티스의 지속적 전달
11.5 쿠버네티스 환경의 개발자 워크플로 평가하기
11.6 연습 문제
3부 운영 환경으로 가자
12장 자기수복형 애플리케이션 활용하기
12.1 정상 파드에만 트래픽 라우팅하기: 레디니스 프로브
12.2 고장을 일으킨 파드 재시작하기: 리브니스 프로브
12.3 헬름을 이용한 안전한 애플리케이션 업데이트
12.4 계산 리소스를 관리하여 애플리케이션 및 노드 보호하기
12.5 자기수복형 애플리케이션의 한계점
12.6 연습 문제
13장 플루언트디와 일래스틱서치를 이용한 중앙화된 로그 관리
13.1 쿠버네티스의 로그 관리
13.2 플루언트디를 이용한 로그 파일 수집
13.3 수집된 로그를 일래스틱서치에 저장하기
13.4 로그 파싱 및 필터링하기
13.5 쿠버네티스에 적용할 수 있는 그 외 로그 모델
13.6 연습 문제
14장 프로메테우스를 이용한 쿠버네티스 및 애플리케이션 모니터링
14.1 프로메테우스가 쿠버네티스 애플리케이션을 모니터링하는 과정
14.2 프로메테우스 클라이언트 라이브러리가 사용된 애플리케이션 모니터링하기
14.3 측정값 추출기를 이용한 모니터링
14.4 쿠버네티스 객체와 컨테이너 모니터링하기
14.5 모니터링을 위한 투자의 방향성
14.6 연습 문제
15장 인그레스를 이용한 인입 트래픽 관리
15.1 인그레스의 라우팅 과정
15.2 인그레스 규칙을 이용한 HTTP 트래픽 라우팅
15.3 인그레스 컨트롤러 비교하기
15.4 인그레스를 사용하여 HTTPS 적용하기
15.5 인그레스 및 인그레스 컨트롤러의 이해
15.6 연습 문제
16장 폴리시, 컨텍스트, API 접근 제어를 이용한 애플리케이션 보안
16.1 네트워크 폴리시를 이용하여 컨테이너 통신 제약하기
16.2 보안 컨텍스트를 이용하여 컨테이너 기능 제약하기
16.3 웹훅을 이용한 워크로드의 차단 또는 변경하기
16.4 오픈 폴리시 에이전트를 이용한 어드미션 컨트롤
16.5 쿠버네티스의 보안 그 깊은 곳
16.6 연습 문제
4부 고급 쿠버네티스 사용법
17장 역할 기반 접근 제어를 이용한 리소스 보안
17.1 쿠버네티스 리소스에 대한 접근 제어하기
17.2 클러스터 내부의 리소스 접근 제어하기
17.3 사용자나 서비스 계정 또는 그 그룹에 롤을 부여하기
17.4 서드파티 플러그인을 사용한 권한 부여 검증하기
17.5 RBAC 전략 구상하기
17.6 연습 문제
18장 쿠버네티스 배치하기: 다중 노드 혹은 다중 아키텍처 클러스터
18.1 쿠버네티스 클러스터의 구조
18.2 컨트롤플레인 초기화하기
18.3 노드를 추가하고 클러스터에서 애플리케이션 실행하기
18.4 윈도우 노드를 추가하고 하이브리드 애플리케이션 실행하기
18.5 쿠버네티스 클러스터를 확장할 때 고려할 것
18.6 연습 문제
19장 워크로드의 배치 조정과 자동 스케일링
19.1 쿠버네티스의 워크로드 배치 과정
19.2 어피니티 및 안티어피니티를 이용한 파드 배정 지정
19.3 자동 스케일링을 이용하여 처리 용량 제어
19.4 선점과 우선순위를 이용한 리소스 보호
19.5 워크로드 관리의 메커니즘 이해
19.6 연습 문제
20장 사용자 정의 리소스와 오퍼레이터를 이용하여 쿠버네티스 확장하기
20.1 사용자 정의 리소스를 이용한 쿠버네티스 확장하기
20.2 사용자 정의 컨트롤러를 이용한 워크플로 트리거
20.3 오퍼레이터를 이용한 서드파티 컴포넌트 관리하기
20.4 오퍼레이터 직접 작성하기
20.5 쿠버네티스의 기능 확장이 필요한 시점은 언제일까
20.6 연습 문제
21장 쿠버네티스에서 서버리스 펑션 실행하기
21.1 서버리스 플랫폼의 동작 원리
21.2 HTTP 요청을 통해 서버리스 펑션 호출하기
21.3 서버리스 펑션 호출하기: 이벤트 트리거와 스케줄 트리거
21.4 Serverless를 이용하여 서버리스 펑션 추상화하기
21.5 서버리스 펑션의 용도 이해하기
21.6 연습 문제
22장 끝없는 정진
22.1 장별 추가 학습 자료
22.2 어떤 쿠버네티스 플랫폼을 선택해야 할까
22.3 쿠버네티스의 개발 프로세스
22.4 커뮤니티 참여하기
부록은 무료 전자책으로 제공합니다. 온라인 서점 eBook 코너에서 ‘쿠버네티스 교과서’로 검색하면 찾을 수 있습니다.
부록 A. 애플리케이션 소스 코드에서 도커 이미지까지
부록 B. 컨테이너 모니터링으로 투명성 있는 애플리케이션 만들기
부록 C. 컨테이너의 애플리케이션 설정 관리
부록 D. 도커를 이용한 로그 생성 및 관리
ㆍ지은이 엘튼 스톤맨
ㆍ옮긴이 심효섭
독자의견 남기기