쿠버네티스 시작하기 2/e [인프라의 미래 속으로]
- 원서명Kubernetes: Up and Running: Dive into the Future of Infrastructure, 2nd Edition (ISBN 9781492046530)
- 지은이브렌던 번스(Branden Burns), 조 베다(Joe Beda), 켈시 하이타워(Kelsey Hightower)
- 옮긴이이준, 김희곤, 이한선, 이해원, 이설민, 박재민, 문규태
- ISBN : 9791161754383
- 30,000원
- 2020년 07월 31일 펴냄
- 페이퍼백 | 360쪽 | 188*235mm
- 시리즈 : 소프트웨어 아키텍처
판매처
개정판책 소개
소스 코드 파일은 여기에서 내려 받으실 수 있습니다.
https://github.com/AcornPublishing/kubernetes-up-and-running-2e
요약
구글에서 설계하고 개발한 쿠버네티스의 탄생 배경부터 이를 사용할 때 알아야 할 핵심 개념(파드, 디플로이먼트, 서비스 등)을 설명한다. 『쿠버네티스 시작하기』의 2판으로 쿠버네티스 버전이 업데이트됨에 따라 새롭게 릴리즈된 내용(RBAC, 로드밸런서 등)이 추가됐다. 쿠버네티스를 처음 접하는 독자가 고급 사용자로 거듭날 수 있도록 돕는 좋은 지침서가 될 것이다.
추천의 글
“클라우드 네이티브 시스템과 관련해 세계에서 가장 존경받는 세 사람이 쓴 이 책은 쿠버네티스 개념의 기초를 탄탄히 세워주며, 스스로 탐구하는 데 도움이 되는 예제를 제공한다.”
- 리즈 라이스(Liz Rice)/ 아쿠아 시큐리티
이 책에서 다루는 내용
■ 쿠버네티스의 동작 방식을 살펴보기 위해 간단한 클러스터 생성 및 실행
■ 쿠버네티스, 파드, 서비스, 인그레스, 레플리카셋을 사용한 애플리케이션 배포 방법
■ 쿠버네티스에서 실행되고 있는 컨테이너화된 마이크로서비스와 스토리지의 연계
■ 데몬셋, 잡, 컨피그맵, 시크릿과 같은 쿠버네티스 특수 객체
■ 쿠버네티스에서 실제 애플리케이션을 개발하고 배포하는 방법과 관련한 실용적인 예제
이 책의 대상 독자
분산 시스템을 처음 접하든, 아니면 수년간 클라우드 네이티브 시스템을 배포한 경험이 있는 사용자든 관계없이 컨테이너와 쿠버네티스는 새로운 수준의 속도, 민첩성, 신뢰성, 효율성을 달성하는 데 도움이 될 수 있다. 이 책은 쿠버네티스 클러스터 오케스트레이터, 도구와 API를 사용해 분산 애플리케이션의 개발, 배포 및 유지 관리를 개선하는 방법을 설명한다. 쿠버네티스를 사용해본 경험이 없는 상태에서 이 책을 최대한 활용하려면, 서버 기반 애플리케이션에 대한 빌드 및 배포 지식을 갖추고 있어야 한다. 필수 사항은 아니지만 로드밸런서 및 네트워크 스토리지 같은 개념에 익숙하다면 내용을 이해하는 데 도움이 된다. 마찬가지로 리눅스, 리눅스 컨테이너, 도커에 대한 경험 역시 필수는 아니지만, 경험이 있다면 이 책을 최대한 활용하는 데 있어 큰 도움이 될 것이다
이 책의 구성
1장, ‘쿠버네티스 소개’는 쿠버네티스의 장점을 상위 수준 개념으로 소개하며, 쿠버네티스를 처음 접하는 경우 이 책의 내용을 모두 읽어야 하는 이유를 이해할 수 있다.
2장, ‘컨테이너 생성 및 실행’은 컨테이너 및 컨테이너화된 애플리케이션 개발 방법을 자세하게 소개한다. 이전에 도커(Docker)를 사용해본 경험이 있다면, 2장이 매우 유용할 것이다. 이미 도커에 대한 전문가라면 다시 한번 리뷰할 수 있는 기회가 될 것이다.
3장, ‘쿠버네티스 클러스터 배포’는 쿠버네티스를 배포하는 방법을 설명한다. 이 책은 쿠버네티스 사용 방법에 중점을 두고 있지만, 클러스터를 본격적으로 사용하기에 앞서 클러스터를 구동하고 이를 실행해야 한다. 이 책에서 운영 환경 구성을 위해 클러스터를 실행하는 방법을 다루지는 않지만, 3장에서 설명하는 클러스터를 생성하는 몇 가지 쉬운 방법을 통해 쿠버네티스 사용법을 알 수 있다.
4장, ‘공통 kubectl 커맨드’는 쿠버네티스 클러스터와 상호작용하는 데 사용되는 몇 가지 공통 커맨드를 소개한다.
5장부터는 쿠버네티스를 사용해 애플리케이션을 배포하는 방법을 자세히 살펴본다. 파드(5장), 라벨 및 애노테이션(6장), 서비스(7장), 인그레스(8장), 레플리카셋(9장)은 쿠버네티스에서 서비스를 배포하는 데 필요한 핵심 기본 사항이다. 그런 다음, 완전한 애플리케이션의 생명주기와 밀접한 관련이 있는 디플로이먼트(10장)를 살펴본다.
이후에는 쿠버네티스에서 데몬셋(11장), 잡(12장), 컨피그맵 및 시크릿(13장) 같이 좀 더 쿠버네티스에 특화된 객체를 다룬다. 이 개념은 대부분의 운영 환경 애플리케이션에 필수적이지만, 쿠버네티스를 학습하는 단계에서는 일단 건너뛰고 더 많은 경험과 전문 지식을 쌓고 난 후에 살펴보는 것이 더 도움이 될 수 있다.
15장에서는 쿠버네티스와 스토리지를 연계하는 방법을 살펴볼 것이다. 16장에서는 쿠버네티스의 확장을 설명한다. 마지막으로 쿠버네티스에 실제 애플리케이션을 개발 및 배포하는 방법(17장)과 애플리케이션을 소스 제어로 구성하는 방법(18장)을 사례를 통해 설명한다.
목차
목차
- 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장. 스토리지 솔루션과 쿠버네티스의 연계
- 외부 서비스 가져오기
- 셀렉터가 없는 서비스
- 외부 서비스의 제약사항: 상태 검사
- 신뢰할 수 있는 싱글톤 실행
- MySQL 싱글톤 실행
- 동적 볼륨 프로비저닝
- 스테이트풀셋을 통한 쿠버네티스 네이티브 스토리지
- 스테이트풀셋의 속성
- 스테이트풀셋을 통한 몽고DB 수동 복제
- 몽고DB 클러스터 생성 자동화
- 영구 볼륨과 스테이트풀셋
- 마지막 단계: 준비 프로브
- 요약
- 외부 서비스 가져오기
- 16장. 쿠버네티스 확장
- 쿠버네티스 확장의 의미
- 확장 지점
- 사용자 정의 리소스를 위한 패턴
- 저스트 데이터
- 컴파일러
- 오퍼레이터
- 시작하기
- 요약
- 17장. 실제 애플리케이션 배포
- 주피터
- 파스
- 사전 준비
- parse-server 빌드
- parse-server 배포
- 파스 테스트
- 고스트
- 고스트 구성
- 레디스
- 레디스 구성
- 레디스 서비스 생성
- 레디스 배표
- 레디스 클러스터로 사용
- 요약
- 18장. 애플리케이션 구성
- 알아야 할 원칙
- 신뢰성 있는 원천 데이터로서의 파일시스템
- 코드 리뷰의 역할
- 피처 게이트 및 가드
- 소스 제어에서의 애플리케이션 관리
- 파일시스템 레이아웃
- 정기 버전 관리
- 개발, 테스트 및 배포를 위한 애플리케이션 구조화
- 목표
- 릴리스 진행
- 템플릿을 통한 애플리케이션 매개변수화
- 헬름 및 템플릿을 통한 매개변수화
- 매개변수화를 위한 파일시스템 레이아웃
- 전 세계에 애플리케이션 배포
- 전 세계 배포를 위한 아키텍처
- 전 세계 배포 구현
- 전 세계 배포를 위한 대시보드 및 모니터링
- 요약
- 알아야 할 원칙
- 부록A. 라즈베리파이 쿠버네티스 클러스터 구축
- 부품 목록
- 이미지 굽기
- 첫 번째 부팅: 마스터 노드
- 네트워크 설정
- 쿠버네티스 설치
- 클러스터 설정
- 요약