쿠버네티스는 개발 및 배포 환경의 통일, 운영 자동화, 효율적인 자원 관리 등 엔지니어들이 가지고 있던 해묵은 고민을 해결해 주며, 개발환경과 운영환경을 극적으로 바꾸어 놓았다. ‘설정보다 관례(convention over configuration)’라는 개발 트렌드를 충실하게 반영해 쿠버네티스에 익숙하지 않은 개발자들도 쉽게 활용할 수 있다. 하지만 클라우드 네이티브한 앱을 만들기 위해서는 쿠버네티스가 제공하는 기능들이 무엇인지, 내가 작성한 코드와 쿠버네티스가 어떻게 상호 작용하는지, 어떤 방식으로 개발해야 쿠버네티스의 장점을 잘 활용할 수 있는지 알아야 한다.
이 책은 이미 설치된 클러스터를 활용하여 애플리케이션을 개발하고 배포하는 서버 개발자들을 대상으로 한다. 쿠버네티스 클러스터 운영에 필요한 지식보다는 실제 개발에 필요한 기본 개념과 노하우를 담는 데 주력했고, 쿠버네티스가 제공하는 많은 오브젝트 중 개발자들이 꼭 알아야 할 것들만 최대한 간결하게 설명했다. 각각의 설정이 어떤 의미를 가지는지 정확히 이해하지 못한 채 쿠버네티스를 써 왔거나, 더 좋은 코드를 작성하고 싶다는 생각을 해 왔다면 이 책이 큰 도움이 될 것이다.
Contents
1장 애플리케이션을 빈틈없이 실행하고 우아하게 종료하기
1.1 평범하게 애플리케이션 켜고 끄기
1.2 쿠버네티스 파드의 생애주기
1.3 프로브를 이용해 애플리케이션을 안정적으로 시작하고 유지하기
1.4 애플리케이션을 우아하게 종료하기
2장 디플로이먼트를 이용해 애플리케이션을 중단 없이 업데이트하기
2.1 디플로이먼트를 이용해 파드 생성하기
2.2 쿠버네티스의 상태 유지 원리
2.3 디플로이먼트를 이용하여 애플리케이션을 업데이트하기
2.4 생명주기 프로브를 이용한 안정적인 업데이트
2.5 애플리케이션의 업데이트를 되돌리기
3장 애플리케이션의 스케일 조정하기
3.1 애플리케이션의 성능 측정하기
3.2 파드 자원 사용량 정의하고 스케일 업하기
3.3 디플로이먼트를 수동으로 스케일 아웃하기
3.4 상황에 따라 자동으로 스케일 조정하기
4장 애플리케이션의 설정을 체계적으로 관리하기
4.1 환경 변수와 실행 인자
4.2 컨피그맵을 이용하여 여러 설정값 한번에 관리하기
4.3 시크릿을 이용해 민감한 설정값 관리하기
5장 애플리케이션과 네트워크 연결하기
5.1 파드 내부의 컨테이너끼리 통신하기
5.2 파드와 파드 사이의 통신
5.3 클러스터 외부에서 파드를 호출하는 방법
6장 쿠버네티스의 저장소 활용하기
6.1 파드에 임시 저장공간 확보하기
6.2 노드의 저장공간을 파드에서 활용하기
6.3 퍼시스턴트 볼륨을 이용한 정적 저장공간 할당
6.4 스토리지 클래스를 이용한 동적 저장공간 할당
7장 쿠버네티스를 활용한 애플리케이션 개발모범 사례
7.1 애플리케이션과 컨테이너의 로그 처리
7.2 데이터베이스의 설치와 연결
7.3 애플리케이션의 세션 처리하기
7.4 네임스페이스를 이용하여 개발환경 구분하기
8장 쿠버네티스 기반 배치 프로그램의 실행과 관리
8.1 쿠버네티스 잡을 이용한 프로세스 정의와 실행
8.2 배치 프로그램을 병렬로 실행하기
8.3 일정한 주기에 맞추어 배치 프로그램 돌리기
9장 애플리케이션을 쿠버네티스에 배포하기
9.1 직접 애플리케이션을 배포하고 관리하기
9.2 커스터마이즈를 이용해 환경별 오브젝트 관리하기
9.3 헬름을 이용하여 복잡한 배포 환경에 대응하기
10장 쿠버네티스에서 실행 중인 애플리케이션의 문제를 파악하는 방법
10.1 파드와 컨테이너의 상태 및 로그 조회하기
10.2 파드의 로그 조회하기
10.3 실행 중인 파드 내부에 진입하여 명령어 실행하기
10.4 파드와 파드 간의 통신 상태 점검하기
10.5 애플리케이션 문제 해결을 위한 다양한 기법
11장 kubectl을 활용하여 클러스터와 상호작용하는 다양한 방법
11.1 kubectl config를 이용한 컨텍스트 설정과 전환
11.2 kubectl에서 사용할 수 있는 다양한 명령어
11.3 JSONPath를 이용하여 오브젝트 정보 조회하기
Author
허준
30년 전 처음 컴퓨터를 접한 이후로 지금까지 흥미를 잃지 않고 계속 개발을 하고 있다. 본격적으로 개발자의 길로 들어선 이후 다양한 프로젝트에서 프레임워크, 서버, 클라이언트 개발 및 아키텍처 업무 등을 수행했다. 회사에서 실험적으로 진행했던 초창기 쿠버네티스 도입 프로젝트에 참여하면서 쿠버네티스가 개발자들의 세상을 바꿔놓을 거라는 확신을 가지게 되었고, 쿠버네티스에 대해 깊이 알아야겠다는 생각에 쿠버네티스의 오토스케일러에 관한 논문으로 석사 학위를 받았다. 클라우드 네이티브의 성지인 미국 시애틀에 파견을 가서 쿠버네티스 클러스터 관리 서비스를 만드는 프로젝트에 참여하기도 했다. 현재는 글로벌 만화/웹툰 서비스 업체에서 서버 개발 및 클라우드 운영을 담당하며, 클라우드를 활용하여 세계 독자들에게 재미있는 콘텐츠를 전달하는 일을 하고 있다.
30년 전 처음 컴퓨터를 접한 이후로 지금까지 흥미를 잃지 않고 계속 개발을 하고 있다. 본격적으로 개발자의 길로 들어선 이후 다양한 프로젝트에서 프레임워크, 서버, 클라이언트 개발 및 아키텍처 업무 등을 수행했다. 회사에서 실험적으로 진행했던 초창기 쿠버네티스 도입 프로젝트에 참여하면서 쿠버네티스가 개발자들의 세상을 바꿔놓을 거라는 확신을 가지게 되었고, 쿠버네티스에 대해 깊이 알아야겠다는 생각에 쿠버네티스의 오토스케일러에 관한 논문으로 석사 학위를 받았다. 클라우드 네이티브의 성지인 미국 시애틀에 파견을 가서 쿠버네티스 클러스터 관리 서비스를 만드는 프로젝트에 참여하기도 했다. 현재는 글로벌 만화/웹툰 서비스 업체에서 서버 개발 및 클라우드 운영을 담당하며, 클라우드를 활용하여 세계 독자들에게 재미있는 콘텐츠를 전달하는 일을 하고 있다.