쿠버네티스 시작하기 3/e
- 원서명Kubernetes: Up and Running, 3rd Edition: Dive into the Future of Infrastructure (ISBN 9781098110208)
- 지은이브렌던 번스(Brendan Burns), 조 베다(Joe Beda), 켈시 하이타워(Kelsey Hightower), 라클런 이븐슨(Lachlan Evenson)
- 옮긴이이준
- ISBN : 9791161757803
- 35,000원
- 2023년 08월 31일 펴냄
- 페이퍼백 | 484쪽 | 188*235mm
- 시리즈 : 클라우드 컴퓨팅
책 소개
소스 코드 파일은 여기에서 내려 받으실 수 있습니다.
https://github.com/AcornPublishing/kubernetes-up-and-running-3e
요약
가상화 기술을 기반으로 한 가상머신 기술의 높은 오버헤드, 낮은 성능 등 단점이 부각되면서 이러한 문제 해결을 위해 보다 경량화된 도커/컨테이너 기술이 각광받고 있다. 이러한 추세에 따라 관리해야 하는 도커/컨테이너의 수가 많아지면서, 이를 효율적으로 관리 및 운영할 수 있는 쿠버네티스를 설명하는 책이다. 애플리케이션의 컨테이너화 방법부터 쿠버네티스의 설치, 운영에 필요한 기본 개념 및 용어, 운영 환경에서 활용 방안까지 예제와 함께 알기 쉽게 소개한다. 또한 3판에서는 운영 환경에 필요한 정책 및 거버넌스, 최신 기술인 서비스 메시를 새롭게 추가했다. 쿠버네티스를 처음 접하는 독자가 고급 사용자가 될 수 있도록 이끌어주는 좋은 지침서가 될 것이다.
추천의 글
“클라우드 네이티브 시스템 분야에 대해서 세계에서 가장 존경받는 네 명의 권위자가 쓴 이 책은 쿠버네티스 개념에 대해 견고한 기초를 제공한다. 쿠버네티스를 직접 탐색하는 데 도움이 되는 예제가 포함돼 있다.”
─리즈 라이스(Liz Rice)/ Isovalent
이 책에서 다루는 내용
◆ 간단한 클러스터를 생성해 쿠버네티스 동작 방식 살펴보기
◆ 쿠버네티스를 통한 애플리케이션 배포 방법 자세히 알아보기
◆ 데몬셋, 잡, 컨피그맵 및 시크릿과 같은 쿠버네티스의 특수 객체 처리하기
◆ 완전한 애플리케이션의 라이프 사이클을 관리하는 디플로이먼트 고찰하기
◆ 애플리케이션 배포의 보안 강화하기
◆ 멀티클러스터 애플리케이션을 배포하고 프로그래밍 언어를 통해 쿠버네티스에 액세스하기
이 책의 대상 독자
분산 시스템을 처음 접하든, 아니면 수년간 클라우드 네이티브 시스템을 배포한 경험이 있는 사용자든 관계없이 컨테이너와 쿠버네티스는 새로운 수준의 속도, 민첩성, 신뢰성, 효율성을 달성하는 데 도움이 될 수 있다. 이 책은 쿠버네티스 클러스터 오케스트레이터, 도구와 API를 사용해 분산 애플리케이션의 개발, 배포, 보안, 유지 관리를 개선하는 방법을 설명한다. 쿠버네티스에 대한 사전 경험이 없는 상태에서 이 책을 최대한 활용하려면 서버 기반 애플리케이션에 대한 빌드와 배포 지식을 갖추고 있어야 한다. 또한 로드밸런서와 네트워크 스토리지 같은 개념에 익숙하다면 내용을 이해하는 데 도움이 된다. 마찬가지로 리눅스, 리눅스 컨테이너, 도커에 대한 경험 역시 필수는 아니지만 경험이 있다면 이 책을 최대한 활용하는 데 있어 큰 도움이 될 것이다.
이 책의 구성
1장, ‘쿠버네티스 소개’에서는 쿠버네티스의 장점을 상위 수준 개념으로 소개하며, 쿠버네티스를 처음 접하는 경우 이 책의 나머지 부분을 모두 읽어야 하는 이유를 설명한다.
2장, ‘컨테이너 생성과 실행’에서는 컨테이너 및 컨테이너화된 애플리케이션 개발 방법을 자세히 소개한다. 이전에 도커(Docker)를 사용해본 경험이 있다면 2장이 매우 유용할 것이다. 이미 도커 전문가라면 다시 한번 리뷰할 수 있는 기회가 될 것이다.
3장, ‘쿠버네티스 클러스터 배포’에서는 쿠버네티스를 배포하는 방법을 설명한다. 이 책의 내용 대부분은 쿠버네티스 사용 방법에 중점을 두고 있지만 클러스터를 본격적으로 사용하기에 앞서 클러스터를 구동하고 이를 실행해야 한다. 운영 환경 구성을 위해 클러스터를 실행하는 방법은 이 책에서 다루지 않지만 3장에서 클러스터를 생성하는 쉬운 방법을 통해 쿠버네티스 사용 방법을 이해할 수 있다.
4장, ‘공통 kubectl 명령’에서는 쿠버네티스 클러스터와 상호작용하는 데 사용되는 공통 명령을 소개한다.
5장부터는 쿠버네티스를 사용해 애플리케이션을 배포하는 방법을 자세히 살펴보는데, 파드(5장), 라벨과 애노테이션(6장), 서비스(7장), 인그레스(8장), 레플리카셋(9장)을 다룬다. 이들은 쿠버네티스에서 서비스를 배포하는 데 필요한 핵심 사항들이다. 그런 다음 완전한 애플리케이션의 생명주기와 밀접하게 관련이 있는 디플로이먼트(10장)를 살펴본다.
이후에는 쿠버네티스에서 데몬셋(11장), 잡(12장), 컨피그맵과 시크릿(13장) 같은 좀더 쿠버네티스에 특화된 객체를 다룬다. 이 개념들은 대부분의 운영 환경 애플리케이션에 필수적이지만 쿠버네티스를 학습하는 단계에서는 일단 건너뛰고 더 많은 경험과 전문 지식을 쌓고 난 후에 살펴보는 것이 더 도움이 될 수 있다.
다음으로 역할 기반 접근 제어(14장)를 소개하고 서비스 메시(15장) 및 쿠버네티스와 스토리지 연계(16장)를 살펴본다. 쿠버네티스 확장(17장)과 프로그래밍 언어에서 쿠버네티스 접근(18장)을 살펴본다. 그런 다음 쿠버네티스에서 애플리케이션 보안(19장), 쿠버네티스 정책과 거버넌스(20장)에 초점을 맞춰 설명한다. 마지막으로 멀티클러스터에서 애플리케이션을 개발하고 배포하는 방법(21장)에 대한 몇 가지 예제와 소스 컨트롤 시스템에서 애플리케이션을 구성하는 방법(22장)을 살펴보는 것으로 마무리한다.
목차
목차
- 1장. 쿠버네티스 소개
- 속도
- 불변성의 가치
- 선언형 컨피규레이션
- 자가 치유 시스템
- 서비스와 팀의 확장
- 분리
- 애플리케이션과 클러스터의 손쉬운 확장
- 마이크로서비스를 통한 개발 팀 확장
- 일관성과 확장에 대한 고려 사항 분리
- 인프라 추상화
- 효율성
- 클라우드 네이티브 에코시스템
- 요약
- 속도
- 2장. 컨테이너 생성과 실행
- 컨테이너 이미지
- 도커를 활용한 애플리케이션 이미지 빌드
- 도커파일
- 이미지 크기 최적화
- 이미지 보안
- 다단계 이미지 빌드
- 원격 레지스트리에 이미지 저장
- 컨테이너 런타임 인터페이스
- 도커로 컨테이너 실행
- kuard 애플리케이션 탐색
- 리소스 사용량 제한
- 정리
- 요약
- 3장. 쿠버네티스 클러스터 배포
- 퍼블릭 클라우드 제공자 환경에 쿠버네티스 설치
- 구글 쿠버네티스 엔진을 활용해 쿠버네티스 설치
- 애저 쿠버네티스 서비스에 쿠버네티스 설치
- 아마존 웹 서비스에 쿠버네티스 설치
- 미니큐브를 통해 로컬 환경에 쿠버네티스 설치
- 도커 환경에서 쿠버네티스 실행
- 쿠버네티스 클라이언트
- 클러스터 상태 확인
- 쿠버네티스 노드 조회
- 클러스터 컴포넌트
- 쿠버네티스 프록시
- 쿠버네티스 DNS
- 쿠버네티스 UI
- 요약
- 퍼블릭 클라우드 제공자 환경에 쿠버네티스 설치
- 4장. 공통 kubectl 명령
- 네임스페이스
- 콘텍스트
- 쿠버네티스 API 객체 조회
- 쿠버네티스 객체 생성, 수정, 삭제
- 객체 라벨링과 애노테이션
- 디버깅 명령
- 클러스터 관리
- 명령 자동 완성
- 클러스터 조회의 대안
- 요약
- 5장. 파드
- 쿠버네티스에서의 파드
- 파드에 대한 생각
- 파드 매니페스트
- 파드 생성
- 파드 매니페스트 생성
- 파드 실행
- 파드 조회
- 파드 세부 사항
- 파드 삭제
- 파드에 접근
- 로그를 통해 더 많은 정보 얻기
- exec를 사용해 컨테이너에서 명령 실행
- 컨테이너 내외부로 파일 복사
- 상태 검사
- 활성 프로브
- 준비 프로브
- 시작 프로브
- 고급 프로브 구성
- 상태 검사의 기타 타입
- 리소스 관리
- 리소스 요청: 최소 필요 리소스
- 리소스 제한으로 리소스 사용량 제한
- 볼륨을 통한 데이터 보존
- 파드에 볼륨 사용
- 파드에서 볼륨을 사용하는 다양한 방법
- 종합
- 요약
- 6장. 라벨과 애노테이션
- 라벨
- 라벨 적용
- 라벨 수정
- 라벨 셀렉터
- API 객체의 라벨 셀렉터
- 쿠버네티스 아키텍처의 라벨
- 애노테이션
- 정리
- 요약
- 라벨
- 7장. 서비스 탐색
- 서비스 탐색이란?
- 서비스 객체
- 서비스 DNS
- 준비 검사
- 클러스터 외부로의 서비스
- 로드밸런서 연계
- 고급 세부 정보
- 엔드포인트
- 수동 서비스 탐색
- kube-proxy와 클러스터 IP
- 클러스터 IP 환경 변수
- 기타 환경과 연결
- 클러스터 외부 리소스에 연결
- 클러스터 내부의 서비스에 외부 리소스 연결
- 정리
- 요약
- 8장. 인그레스를 통한 HTTP 로드밸런싱
- 인그레스 스펙과 인그레스 컨트롤러
- 컨투어 설치
- DNS 설정
- 로컬 hosts 파일 설정
- 인그레스의 사용
- 가장 간단한 사용법
- 호스트 이름의 사용
- 경로 사용
- 정리
- 심화된 인그레스 주제와 문제
- 다중 인그레스 컨트롤러 실행
- 다중 인그레스 객체
- 인그레스와 네임스페이스
- 경로 재작성
- TLS 제공
- 인그레스의 대체 구현
- 인그레스의 미래
- 요약
- 9장. 레플리카셋
- 조정 루프
- 파드와 레플리카셋의 관계
- 기존 컨테이너 수용
- 컨테이너 격리
- 레플리카셋을 통한 설계
- 레플리카셋 명세
- 파드 템플릿
- 라벨
- 레플리카셋 생성
- 레플리카셋 검사
- 파드에서 레플리카셋 찾기
- 레플리카셋에 대한 파드 집합 찾기
- 레플리카셋 확장
- kubectl scale을 사용한 명령형 확장
- kubectl apply를 사용한 선언형 확장
- 레플리카셋 자동 확장
- 레플리카셋 삭제
- 요약
- 10장. 디플로이먼트
- 첫 번째 디플로이먼트
- 디플로이먼트 내부
- 디플로이먼트 생성
- 디플로이먼트 관리
- 디플로이먼트 업데이트
- 디플로이먼트 확장
- 컨테이너 이미지 업데이트
- 롤아웃 이력
- 디플로이먼트 전략
- 재생성 전략
- 롤링업데이트 전략
- 서비스 안정을 위한 느린 롤아웃
- 디플로이먼트 삭제
- 디플로이먼트 모니터링
- 요약
- 11장. 데몬셋
- 데몬셋 스케줄러
- 데몬셋 생성
- 데몬셋을 특정 노드로 제한
- 노드에 라벨 추가
- 노드 셀렉터
- 데몬셋 업데이트
- 데몬셋 삭제
- 요약
- 12장. 잡
- 잡 객체
- 잡 패턴
- 원샷
- 병렬
- 작업 대기열
- 크론잡
- 요약
- 13장. 컨피그맵과 시크릿
- 컨피그맵
- 컨피그맵 생성
- 컨피그맵 사용
- 시크릿
- 시크릿 생성
- 시크릿 사용
- 사설 컨테이너 레지스트리
- 명명 규칙
- 컨피그맵과 시크릿 관리
- 조회
- 생성
- 업데이트
- 요약
- 컨피그맵
- 14장. 쿠버네티스를 위한 역할 기반 접근 제어
- 역할 기반 접근 제어
- 쿠버네티스에서의 ID
- 역할과 역할 바인딩의 이해
- 쿠버네티스에서의 역할과 역할 바인딩
- RBAC을 관리하기 위한 기술
- can-i를 통한 권한 부여 테스트
- 소스 컨트롤에서 RBAC 관리
- 고급 주제
- 클러스터 역할 조합
- 바인딩을 위한 그룹 사용
- 요약
- 역할 기반 접근 제어
- 15장. 서비스 메시
- 암호화와 상호 TLS를 통한 인증
- 트래픽 셰이핑
- 내부 검사
- 서비스 메시가 정말로 필요한가?
- 서비스 메시 구현체에 대한 내부 검사
- 서비스 메시 환경
- 요약
- 16장. 스토리지 솔루션과 쿠버네티스의 연계
- 외부 서비스 가져오기
- 셀렉터가 없는 서비스
- 외부 서비스의 제약 사항: 상태 검사
- 신뢰할 수 있는 싱글톤 실행
- MySQL 싱글톤 실행
- 동적 볼륨 프로비저닝
- 스테이트풀셋을 통한 쿠버네티스 네이티브 스토리지
- 스테이트풀셋의 속성
- 스테이트풀셋을 통한 몽고DB 수동 복제
- 몽고DB 클러스터 생성 자동화
- 영구 볼륨과 스테이트풀셋
- 마지막 단계: 준비 프로브
- 요약
- 외부 서비스 가져오기
- 17장. 쿠버네티스 확장
- 쿠버네티스 확장의 의미
- 확장 지점
- 사용자 정의 리소스를 위한 패턴
- 저스트 데이터
- 컴파일러
- 오퍼레이터
- 시작하기
- 요약
- 18장. 공통 프로그래밍 언어에서 쿠버네티스 접근하기
- 쿠버네티스 API: 클라이언트의 관점
- OpenAPI와 생성된 클라이언트 라이브러리
- kubectl x는 어떤가?
- 쿠버네티스 API 프로그래밍
- 클라이언트 라이브러리 설치
- 쿠버네티스 API에 인증
- 쿠버네티스 API에 접근
- 모두 합치기: 파이썬, 자바, .NET에서 파드 나열과 생성
- 객체 생성과 패치
- 변경 사항에 대한 쿠버네티스 API 지켜보기
- 파드와 상호작용
- 요약
- 쿠버네티스 API: 클라이언트의 관점
- 19장. 쿠버네티스에서 애플리케이션 보안
- SecurityContext 이해
- SecurityContext 문제
- 파드 보안
- 파드 보안이란?
- 파드 보안 표준 적용
- 서비스 계정 관리
- 역할 기반 접근 제어
- 런타임 클래스
- 네트워크 정책
- 서비스 메시
- 보안 벤치마크 도구
- 이미지 보안
- 요약
- SecurityContext 이해
- 20장. 쿠버네티스 클러스터에 대한 정책과 거버넌스
- 정책과 거버넌스가 중요한 이유
- 승인 흐름
- 게이트키퍼를 통한 정책과 거버넌스
- 개방형 정책 에이전트란?
- 게이트키퍼 설치
- 정책 구성
- 제약 조건 템플릿 이해
- 제약 조건 생성
- 감사
- 변형
- 데이터 복제
- 메트릭
- 정책 라이브러리
- 요약
- 21장. 멀티클러스터 애플리케이션 배포
- 시작에 앞서
- 로드밸런싱 접근 방식으로 맨 위에서부터 시작하기
- 멀티클러스터를 위한 애플리케이션 구축
- 복제된 사일로: 가장 단순한 교차 지역 모델
- 샤딩: 지역 데이터
- 더 나은 유연성: 마이크로서비스 라우팅
- 요약
- 22장. 애플리케이션 구성
- 알아야 할 원칙
- 신뢰성 있는 원천 데이터로서의 파일 시스템
- 코드 리뷰의 역할
- 피처 게이트
- 소스 컨트롤에서의 애플리케이션 관리
- 파일 시스템 레이아웃
- 정기 버전 관리
- 개발, 테스트, 배포를 위한 애플리케이션 구조화
- 목표
- 릴리스 진행
- 템플릿을 통한 애플리케이션 매개변수화
- 헬름과 템플릿을 통한 매개변수화
- 매개변수화를 위한 파일 시스템 레이아웃
- 전 세계에 애플리케이션 배포
- 전 세계 배포를 위한 아키텍처
- 전 세계 배포 구현
- 전 세계 배포를 위한 대시보드와 모니터링
- 요약
- 알아야 할 원칙
- 부록. 쿠버네티스 클러스터 구축