책소개
현업의 운영 경험을 바탕으로 엄선한 쿠버네티스 입문 A~Z
현재 다양한 인프라 구축의 핵심 기술은 컨테이너입니다. 운영체제, 데이터베이스, 웹 서버 등 인프라 구축에 필요한 컨테이너 이미지 각각을 조합해 인프라 환경을 손쉽게 설정할 수 있습니다. 그런데 이러한 컨테이너 각각을 사용자가 수동으로 관리하려면 적지 않은 수고를 들여야 합니다.
쿠버네티스는 자동으로 컨테이너를 관리하는 여러 가지 도구 중 사실상 표준으로 인정받는 검증된 플랫폼입니다. 이 책은 상용 서비스에 쿠버네티스를 도입하면서 얻은 저자들의 노하우를 바탕으로 쿠버네티스의 핵심 개념, 다양한 운영 방법, 쿠버네티스를 이용한 웹 서비스 구축 등을 실습 중심으로 배우도록 구성했습니다. 쿠버네티스를 처음 접한다면 더는 고민하지 말고 이 책으로 시작하세요!
저자소개
저자 : 정원천
저자 : 정원천
국내 최대 메신저 회사의 컨테이너 클라우드 플랫폼 엔지니어입니다. 최근에는 어떻게 유용한 컨테이너 플랫폼을 만들지와 효율적이고 안정적으로 운영할 수 있을지를 깊이 고민하는 중입니다. 업무에 오픈 소스를 활용해서 받은 도움을 오픈 소스 생태계에 환원하고 그 이상으로 기여하는 방법을 항상 고민하고 있습니다.
옮긴 책으로 『클라우드 컴퓨팅 바이블』(길벗, 2012), 『자바 프로그래밍 면접, 이렇게 준비한다』(한빛미디어, 2015)가 있습니다.
저자 : 공용준
국내 최대 메신저 회사에서 클라우드 서비스 개발 리딩을 맡고 있으며 데이터 센터 자동화, 프라이빗/퍼블릭 클라우드 서비스와 그에 필요한 기술을 연구, 개발해서 실제 서비스에 적용하고 있습니다. 2015년에는 캐나다 밴쿠버에서 열린 오픈스택 서밋에서 국내 개발자 중 최초로 ‘SDN without SDN’이라는 제목으로 발표했고, 2016년(도쿄)과 2017년(몬트리올) Netdev 콘퍼런스에서도 국내 최초로 확장 가능한 컨테이너 네트워크에 관해 발표했습니다. 한국 데이터베이스 진흥원 자문위원, 클라우드컴퓨팅조합에서 멘토로도 활동 중입니다.
지은 책으로 『카프카, 데이터 플랫폼의 최강자』(책만, 2018), 『클라우드 API를 활용한 빅데이터 분석』(에이콘출판사, 2015) 등이 있으며 옮긴 책으로 『클라우드 네이티브 인프라스트럭처』(책만, 2018), 『실전 클라우드 인프라 구축 기술』(한빛미디어, 2014) 등이 있습니다.
저자 : 홍석용
기술이 사용자들에게 가치 있게 전달되는 방법에 관심이 많은 클라우드 개발자입니다. L사에서 처음 클라우드를 시작했고, 지금은 국내 최대 메신저 회사에서 컨테이너 클라우드 플랫폼을 개발하고 있습니다. 인프라부터 프런트엔드를 모두 아우르는 ‘IT 사람’이 되려고 항상 연구를 멈추지 않습니다.
저자 : 정경록
국내 최대 메신저 회사에서 컨테이너 클라우드 플랫폼 개발 및 운영 업무를 담당하고 있습니다. 현업 프로그래머가 되면서 처음 접한 Go 프로그래밍 언어에 매력을 느꼈고, 부끄럽지 않은 코드를 작성하는 개발자가 되고자 더 나은 프로그래밍 방법을 찾는데 몰두하고 있습니다.
목차
Part I. 쿠버네티스 시작하기
1장. 쿠버네티스 소개
__1.1 컨테이너
__1.2 컨테이너 오케스트레이션 시스템
__1.3 쿠버네티스
__1.4 쿠버네티스의 특징
____1.4.1 선언적 API
____1.4.2 워크로드 분리
____1.4.3 어디서나 실행 가능
____1.4.4 커뮤니티
2장. 쿠버네티스 설치하기
__2.1 설치 없이 쿠버네티스 사용하기
____2.1.1 카타코다 쿠버네티스 플레이그라운드
____2.1.2 Play with Kubernetes
__2.2 도커 데스크톱을 이용한 쿠버네티스 설치
____2.2.1 윈도우에 도커와 쿠버네티스 설치하기
____2.2.2 macOS에 도커와 쿠버네티스 설치하기
__2.3 클라우드 서비스에서 제공하는 쿠버네티스 도구
____2.3.1 구글 쿠버네티스 엔진
____2.3.2 아마존 쿠버네티스 일래스틱 컨테이너 서비스
____2.3.3 애저 쿠버네티스 서비스
__2.4 쿠버네티스 클러스터를 직접 구성하는 도구
____2.4.1 Kubeadm
____2.4.2 Kubespray
3장. 쿠버네티스로 컨테이너 실행하기
__3.1 kubectl
____3.1.1 설치
____3.1.2 기본 사용법
____3.1.3 POSIX/GNU 스타일의 명령 작성 규칙
____3.1.4 플래그
____3.1.5 kubeconfig 환경 변수
____3.1.6 자동 완성
____3.1.7 다양한 사용 예
__3.2 디플로이먼트를 이용해 컨테이너 실행하기
____3.2.1 kubectl run으로 컨테이너 실행하기
____3.2.2 템플릿으로 컨테이너 실행하기
__3.3 클러스터 외부에서 클러스터 안 앱에 접근하기
Part II. 쿠버네티스 기본 개념
4장. 쿠버네티스 아키텍처
__4.1 쿠버네티스 클러스터의 전체 구조
__4.2 쿠버네티스의 주요 컴포넌트
____4.2.1 마스터용 컴포넌트
____4.2.2 노드용 컴포넌트
____4.2.3 애드온
__4.3 오브젝트와 컨트롤러
____4.3.1 네임스페이스
____4.3.2 템플릿
5장. 파드
__5.1 파드 개념
__5.2 파드 사용하기
__5.3 파드 생명 주기
__5.4 kubelet으로 컨테이너 진단하기
__5.5 초기화 컨테이너
__5.6 파드 인프라 컨테이너
__5.7 스태틱 파드
__5.8 파드에 CPU와 메모리 자원 할당
__5.9 파드에 환경 변수 설정하기
__5.10 파드 환경 설정 내용 적용하기
__5.11 파드 구성 패턴
____5.11.1 사이드카 패턴
____5.11.2 앰배서더 패턴
____5.11.3 어댑터 패턴
6장. 컨트롤러
__6.1 레플리케이션 컨트롤러
__6.2 레플리카세트
____6.2.1 레플리카세트 사용하기
____6.2.2 레플리카세트와 파드의 연관 관계
__6.3 디플로이먼트
____6.3.1 디플로이먼트 사용하기
____6.3.2 디플로이먼트 롤백하기
____6.3.3 파드 개수 조정하기
____6.3.4 디플로이먼트 배포 정지, 배포 재개, 재시작하기
____6.3.5 디플로이먼트 상태
__6.4 데몬세트
____6.4.1 데몬세트 사용하기
____6.4.2 데몬세트의 파드 업데이트 방법 변경하기
__6.5 스테이트풀세트
____6.5.1 스테이트풀세트 사용하기
____6.5.2 파드를 순서 없이 실행하거나 종료하기
____6.5.3 스테이트풀세트로 파드 업데이트하기
__6.6 잡
____6.6.1 잡 사용하기
____6.6.2 잡 병렬성 관리
____6.6.3 잡의 종류
____6.6.4 비정상적으로 실행 종료된 파드 관리하기
____6.6.5 잡 종료와 정리
____6.6.6 잡 패턴
__6.7 크론잡
____6.7.1 크론잡 사용하기
____6.7.2 크론잡 설정
7장. 서비스
__7.1 서비스의 개념
__7.2 서비스 타입
__7.3 서비스 사용하기
____7.3.1 ClusterIP 타입 서비스 사용하기
____7.3.2 NodePort 타입 서비스 사용하기
____7.3.3 LoadBalancer 타입 서비스 사용하기
____7.3.4 ExternalName 타입 서비스 사용하기
__7.4 헤드리스 서비스
__7.5 kube-proxy
____7.5.1 userspace 모드
____7.5.2 iptables 모드
____7.5.3 IPVS 모드
8장. 인그레스
__8.1 인그레스의 개념
__8.2 ingress-nginx 컨트롤러
__8.3 인그레스 SSL 설정하기
__8.4 무중단 배포를 할 때 주의할 점
____8.4.1 maxSurge와 maxUnavailable 필드 설정
____8.4.2 파드가 readinessProbe를 지원하는지 확인
____8.4.3 쿠버네티스와 컨테이너 안에 그레이스풀 종료 설정
__8.5 무중단 배포 테스트
9장. 레이블과 애너테이션
__9.1 레이블
__9.2 애너테이션
__9.3 레이블을 이용한 카나리 배포
10장. 컨피그맵
__10.1 컨피그맵 사용하기
__10.2 컨피그맵 설정 중 일부만 불러와서 사용하기
__10.3 컨피그맵 설정 전체를 한꺼번에 불러와서 사용하기
__10.4 컨피그맵을 볼륨에 불러와서 사용하기
11장. 시크릿
__11.1 시크릿 만들기
____11.1.1 명령으로 시크릿 만들기
____11.1.2 템플릿으로 시크릿 만들기
__11.2 시크릿 사용하기
____11.2.1 파드의 환경 변수로 시크릿 사용하기
____11.2.2 볼륨 형식으로 파드에 시크릿 제공하기
____11.2.3 프라이빗 컨테이너 이미지를 가져올 때 시크릿 사용하기
____11.2.4 시크릿으로 TLS 인증서