쿠버네티스를 활용한 클라우드 네이티브 데브옵스

Book description

쿠버네티스가 표준 플랫폼으로 자리 잡은 클라우드 네이티브 세계에서 데브옵스를 실천하는 방법을 다룬다. 쿠버네티스 관련 기본 개념, 애플리케이션을 작성하고 상용 환경에서 배포하는 방법, 클러스터를 구성하고 운영하는 방법, 장애 대처와 데이터 복원 방법을 실용적인 예제와 함께 살펴본다. 또한 쿠버네티스 환경에서 사용하는 여러 도구를 살펴보고 쿠버네티스 확장성을 100% 활용하는 비법을 소개한다. 쿠버네티스를 사용하는 개발자와 운영자, 쿠버네티스 입문자 모두에게 훌륭한 안내서가 될 것이다.

Table of contents

  1. 쿠버네티스를 활용한 클라우드 네이티브 데브옵스
    1. 추천사
    2. 지은이·옮긴이 소개
    3. 옮긴이의 말
    4. 머리말
    5. 서문
    6. CONTENTS (1/4)
    7. CONTENTS (2/4)
    8. CONTENTS (3/4)
    9. CONTENTS (4/4)
  2. 1장 소프트웨어 세상의 세 가지 혁명
    1. 1.1 클라우드 혁명
      1. 1.1.1 시간을 구매하기
      2. 1.1.2 서비스형 인프라
    2. 1.2 데브옵스 탄생
      1. 1.2.1 아무도 데브옵스를 이해하지 못한다
      2. 1.2.2 비즈니스 이점
      3. 1.2.3 코드형 인프라
      4. 1.2.4 함께 배우기
    3. 1.3 컨테이너 등장
      1. 1.3.1 기술의 발전 과정
      2. 1.3.2 상자 안에서 생각하기
      3. 1.3.3 컨테이너에 소프트웨어 넣기
      4. 1.3.4 플러그 앤 플레이 애플리케이션
    4. 1.4 컨테이너 오케스트레이션
    5. 1.5 쿠버네티스
      1. 1.5.1 보그에서 쿠버네티스까지
      2. 1.5.2 쿠버네티스가 특별한 이유는 무엇일까?
      3. 1.5.3 쿠버네티스가 사라질까?
      4. 1.5.4 쿠버네티스는 만능이 아니다
    6. 1.6 클라우드 네이티브
    7. 1.7 운영의 미래
      1. 1.7.1 분산 데브옵스
      2. 1.7.2 중앙 집중식으로 유지되는 것들
      3. 1.7.3 개발자 생산성 엔지니어링
      4. 1.7.4 당신이 미래다
    8. 1.8 마치며
  3. 2장 쿠버네티스 첫걸음
    1. 2.1 첫 번째 컨테이너 실행하기
      1. 2.1.1 도커 데스크톱 설치하기
      2. 2.1.2 도커란 무엇인가?
      3. 2.1.3 컨테이너 이미지 실행하기
    2. 2.2 데모 애플리케이션
      1. 2.2.1 소스 코드 살펴보기
      2. 2.2.2 Go 소개
      3. 2.2.3 데모 애플리케이션 동작 소개
    3. 2.3 컨테이너 빌드하기
      1. 2.3.1 도커파일 이해하기
      2. 2.3.2 최소 컨테이너 이미지
      3. 2.3.3 도커 이미지 빌드 실행하기
      4. 2.3.4 이미지 이름 지정하기
      5. 2.3.5 포트 포워딩하기
    4. 2.4 컨테이너 레지스트리
      1. 2.4.1 레지스트리 인증하기
      2. 2.4.2 이미지 이름 지정 및 푸시
      3. 2.4.3 이미지 실행하기
    5. 2.5 헬로, 쿠버네티스
      1. 2.5.1 데모 애플리케이션 실행하기
      2. 2.5.2 컨테이너가 실행되지 않을 경우
    6. 2.6 Minikube
    7. 2.7 마치며
  4. 3장 쿠버네티스 구축하기
    1. 3.1 클러스터 아키텍처
      1. 3.1.1 컨트롤 플레인
      2. 3.1.2 노드 컴포넌트
      3. 3.1.3 고가용성
    2. 3.2 자체 호스팅 쿠버네티스 비용
      1. 3.2.1 자체 호스팅은 생각보다 어렵다
      2. 3.2.2 자체 호스팅은 지속적인 관리가 필요하다
      3. 3.2.3 도구가 모든 것을 해결하지는 않는다
      4. 3.2.4 쿠버네티스는 어렵다
      5. 3.2.5 관리 오버헤드
      6. 3.2.6 관리형 서비스 시작하기
    3. 3.3 관리형 쿠버네티스 서비스
      1. 3.3.1 구글 쿠버네티스 엔진
      2. 3.3.2 클러스터 오토스케일링
      3. 3.3.3 아마존 일래스틱 쿠버네티스 서비스
      4. 3.3.4 애저 쿠버네티스 서비스
      5. 3.3.5 오픈시프트
      6. 3.3.6 IBM 클라우드 쿠버네티스 서비스
      7. 3.3.7 VM웨어 PKS
    4. 3.4 턴키형 쿠버네티스 솔루션
      1. 3.4.1 스택포인트
      2. 3.4.2 컨테이너십 쿠버네티스 엔진
    5. 3.5 쿠버네티스 설치 프로그램
      1. 3.5.1 kops
      2. 3.5.2 Kubespray
      3. 3.5.3 TK8
      4. 3.5.4 켈시 하이타워의 튜토리얼
      5. 3.5.5 kubeadm
      6. 3.5.6 Tarmak
      7. 3.5.7 랜처 쿠버네티스 엔진
      8. 3.5.8 퍼핏 쿠버네티스 모듈
      9. 3.5.9 kubeformation
    6. 3.6 구입 또는 구축: 우리의 추천
      1. 3.6.1 적게 실행하는 소프트웨어
      2. 3.6.2 가능하면 관리형 쿠버네티스를 사용하라
      3. 3.6.3 업체 종속은 없을까?
      4. 3.6.4 표준 쿠버네티스 설치 도구를 사용하라
      5. 3.6.5 선택이 제한적일 때
      6. 3.6.6 베어 메탈과 온프레미스
    7. 3.7 클러스터가 없는 컨테이너 서비스
      1. 3.7.1 아마존 파게이트
      2. 3.7.2 애저 컨테이너 인스턴스
    8. 3.8 마치며
  5. 4장 쿠버네티스 오브젝트 다루기
    1. 4.1 디플로이먼트
      1. 4.1.1 관리와 스케줄링
      2. 4.1.2 컨테이너 재시작하기
      3. 4.1.3 디플로이먼트 조회하기
    2. 4.2 파드
    3. 4.3 레플리카셋
    4. 4.4 의도한 상태 유지하기
    5. 4.5 쿠버네티스 스케줄러
    6. 4.6 YAML 형식의 리소스 매니페스트
      1. 4.6.1 리소스는 데이터다
      2. 4.6.2 디플로이먼트 매니페스트
      3. 4.6.3 kubectl apply 사용하기
      4. 4.6.4 서비스 리소스
      5. 4.6.5 kubectl로 클러스터 조회하기
      6. 4.6.6 다음 단계로 리소스 활용하기
    7. 4.7 헬름: 쿠버네티스 패키지 매니저
      1. 4.7.1 헬름 설치하기
      2. 4.7.2 헬름 차트 설치하기
      3. 4.7.3 차트, 리포지터리, 릴리스
      4. 4.7.4 헬름 릴리스 목록 확인하기
    8. 4.8 마치며
  6. 5장 리소스 관리하기
    1. 5.1 리소스 이해하기
      1. 5.1.1 리소스 단위
      2. 5.1.2 리소스 요청
      3. 5.1.3 리소스 상한
      4. 5.1.4 컨테이너를 작게 유지하라
    2. 5.2 컨테이너 생명 주기 관리하기
      1. 5.2.1 활성 프로브
      2. 5.2.2 프로브 딜레이와 주기
      3. 5.2.3 다른 종류의 프로브
      4. 5.2.4 gRPC 프로브
      5. 5.2.5 준비성 프로브
      6. 5.2.6 파일 기반 준비성 프로브
      7. 5.2.7 minReadySeconds
      8. 5.2.8 PodDisruptionBudgets
    3. 5.3 네임스페이스 사용하기
      1. 5.3.1 네임스페이스 다루기
      2. 5.3.2 어떤 네임스페이스를 사용해야 할까?
      3. 5.3.3 서비스 주소
      4. 5.3.4 리소스 쿼터
      5. 5.3.5 기본 리소스 요청과 상한
    4. 5.4 클러스터 비용 최적화하기
      1. 5.4.1 디플로이먼트 최적화하기
      2. 5.4.2 파드 최적화하기
      3. 5.4.3 Vertical Pod Autoscaler
      4. 5.4.4 노드 최적화하기
      5. 5.4.5 스토리지 최적화하기
      6. 5.4.6 사용하지 않는 리소스 정리하기
      7. 5.4.7 여유 용량 파악하기
      8. 5.4.8 예약 인스턴스 사용하기
      9. 5.4.9 선점형(스폿) 인스턴스 사용하기
      10. 5.4.10 워크로드를 균형 있게 유지하기
    5. 5.5 마치며
  7. 6장 클러스터 운영하기
    1. 6.1 클러스터 사이징과 스케일링
      1. 6.1.1 클러스터 용량 계획 세우기
      2. 6.1.2 노드와 인스턴스
      3. 6.1.3 클러스터 스케일링
    2. 6.2 적합성 검사
      1. 6.2.1 CNCF 인증
      2. 6.2.2 Sonobuoy를 사용한 적합성 테스트
    3. 6.3 검증과 감사
      1. 6.3.1 K8Guard
      2. 6.3.2 Copper
      3. 6.3.3 kube-bench
      4. 6.3.4 쿠버네티스 감사 로깅
    4. 6.4 카오스 테스팅
      1. 6.4.1 상용과 스테이징 환경은 다르다
      2. 6.4.2 chaoskube
      3. 6.4.3 kube-monkey
      4. 6.4.4 PowerfulSeal
    5. 6.5 마치며
  8. 7장 유용한 쿠버네티스 도구
    1. 7.1 kubectl 마스터하기
      1. 7.1.1 셸 별칭 사용하기
      2. 7.1.2 짧은 플래그 사용하기
      3. 7.1.3 리소스 단축형 사용하기
      4. 7.1.4 kubectl 명령어 자동 완성 사용하기
      5. 7.1.5 도움말 보기
      6. 7.1.6 쿠버네티스 리소스 도움말 보기
      7. 7.1.7 더 자세한 출력 결과 확인하기
      8. 7.1.8 jq를 사용하여 JSON 데이터 다루기
      9. 7.1.9 오브젝트 감시하기
      10. 7.1.10 오브젝트 정보 확인하기
    2. 7.2 리소스 다루기
      1. 7.2.1 kubectl 명령형 커맨드
      2. 7.2.2 명령형 커맨드를 사용하지 않을 때
      3. 7.2.3 리소스 매니페스트 생성하기
      4. 7.2.4 리소스 내보내기
      5. 7.2.5 리소스 비교하기
    3. 7.3 컨테이너 다루기
      1. 7.3.1 컨테이너 로그 보기
      2. 7.3.2 컨테이너 연결하기
      3. 7.3.3 kubespy로 쿠버네티스 리소스 감시하기
      4. 7.3.4 컨테이너 포트 포워딩
      5. 7.3.5 컨테이너에 명령어 실행하기
      6. 7.3.6 문제를 해결하기 위한 컨테이너 실행하기
      7. 7.3.7 비지박스 명령어 사용하기
      8. 7.3.8 비지박스를 컨테이너에 추가하기
      9. 7.3.9 컨테이너에 프로그램 설치하기
      10. 7.3.10 kubesquash를 사용한 실시간 디버깅
    4. 7.4 컨텍스트와 네임스페이스
      1. 7.4.1 kubectx와 kubens
      2. 7.4.2 kube-ps1
    5. 7.5 쿠버네티스 셸과 도구
      1. 7.5.1 kube-shell
      2. 7.5.2 Click
      3. 7.5.3 kubed-sh
      4. 7.5.4 Stern
    6. 7.6 쿠버네티스 도구 직접 만들기
    7. 7.7 마치며
  9. 8장 컨테이너 실행하기
    1. 8.1 컨테이너와 파드
      1. 8.1.1 컨테이너란 무엇인가?
      2. 8.1.2 컨테이너의 구성 요소
      3. 8.1.3 파드의 구성 요소
    2. 8.2 컨테이너 매니페스트
      1. 8.2.1 이미지 식별자
      2. 8.2.2 latest 태그
      3. 8.2.3 컨테이너 다이제스트
      4. 8.2.4 베이스 이미지 태그
      5. 8.2.5 포트
      6. 8.2.6 리소스 요청과 상한
      7. 8.2.7 이미지 풀링 정책
      8. 8.2.8 환경 변수
    3. 8.3 컨테이너 보안
      1. 8.3.1 root가 아닌 사용자로 컨테이너 실행하기
      2. 8.3.2 root 컨테이너 차단하기
      3. 8.3.3 읽기 전용 파일 시스템 설정하기
      4. 8.3.4 권한 상승 비활성화하기
      5. 8.3.5 캐퍼빌리티
      6. 8.3.6 파드 보안 컨텍스트
      7. 8.3.7 파드 보안 정책
      8. 8.3.8 파드 서비스 계정
    4. 8.4 볼륨
      1. 8.4.1 emptyDir 볼륨
      2. 8.4.2 퍼시스턴트 볼륨
    5. 8.5 재시작 정책
    6. 8.6 이미지 풀 시크릿
    7. 8.7 마치며
  10. 9장 파드 관리하기
    1. 9.1 레이블
      1. 9.1.1 레이블이란 무엇인가?
      2. 9.1.2 셀렉터
      3. 9.1.3 고급 셀렉터
      4. 9.1.4 레이블의 다른 용도
      5. 9.1.5 레이블과 어노테이션
    2. 9.2 노드 어피니티
      1. 9.2.1 강제 어피니티
      2. 9.2.2 반강제 어피니티
    3. 9.3 파드 어피니티와 안티 어피니티
      1. 9.3.1 파드를 함께 배치하기
      2. 9.3.2 파드를 분산하여 배치하기
      3. 9.3.2 반강제 안티 어피니티
      4. 9.3.4 파드 어피니티를 사용하는 경우
    4. 9.4 테인트와 톨러레이션
    5. 9.5 파드 컨트롤러
      1. 9.5.1 데몬셋
      2. 9.5.2 스테이트풀셋
      3. 9.5.3 잡
      4. 9.5.4 크론잡
      5. 9.5.5 Horizontal Pod Autoscaler
      6. 9.5.6 파드 프리셋
      7. 9.5.7 오퍼레이터와 커스텀 리소스 정의(CRDs)
    6. 9.6 인그레스 리소스
      1. 9.6.1 인그레스 규칙
      2. 9.6.2 인그레스에서 TLS 종료 활용하기
      3. 9.6.3 인그레스 컨트롤러
    7. 9.7 이스티오
    8. 9.8 엔보이
    9. 9.9 마치며
  11. 10장 구성과 시크릿
    1. 10.1 컨피그 맵
      1. 10.1.1 컨피그 맵 생성하기
      2. 10.1.2 컨피그 맵을 사용해 환경 변수 설정하기
      3. 10.1.3 컨피그 맵에서 전체 환경 변수 가져오기
      4. 10.1.4 명령줄 인자로 환경 변수 사용하기
      5. 10.1.5 컨피그 맵으로 설정 파일 생성하기
      6. 10.1.6 설정 변경 시 파드 업데이트하기
    2. 10.2 쿠버네티스 시크릿
      1. 10.2.1 시크릿을 사용하여 환경 변수 설정하기
      2. 10.2.2 시크릿을 파일로 작성하기
      3. 10.2.3 시크릿 읽기
      4. 10.2.4 시크릿 접근하기
      5. 10.2.5 저장 데이터 암호화
      6. 10.2.6 시크릿 보존하기
    3. 10.3 시크릿 관리 전략
      1. 10.3.1 소스 제어에서 시크릿 암호화하기
      2. 10.3.2 원격으로 시크릿 저장하기
      3. 10.3.3 전용 시크릿 관리 도구 사용하기
      4. 10.3.4 추천 전략
    4. 10.4 SOPS로 시크릿 암호화하기
      1. 10.4.1 SOPS 소개
      2. 10.4.2 SOPS로 파일 암호화하기
      3. 10.4.3 KMS 백엔드 사용하기
    5. 10.5 마치며
  12. 11장 보안과 백업
    1. 11.1 접근 제어와 권한
      1. 11.1.1 클러스터별 접근 관리
      2. 11.1.2 역할 기반 접근 제어(RBAC) 소개
      3. 11.1.3 롤 이해하기
      4. 11.1.4 사용자에게 역할 바인딩하기
      5. 11.1.5 롤의 권한을 확인하는 방법
      6. 11.1.6 Cluster-Admin 접근 제어하기
      7. 11.1.7 애플리케이션과 배포
      8. 11.1.8 RBAC 문제 해결
    2. 11.2 보안 스캐닝
      1. 11.2.1 클레어
      2. 11.2.2 아쿠아
      3. 11.2.3 앵커 엔진
    3. 11.3 백업
      1. 11.3.1 쿠버네티스에서도 백업이 필요한가?
      2. 11.3.2 etcd 백업하기
      3. 11.3.3 리소스 상태 백업하기
      4. 11.3.4 클러스터 상태 백업하기
      5. 11.3.5 크고 작은 장애
      6. 11.3.6 Velero
    4. 11.4 클러스터 상태 모니터링
      1. 11.4.1 kubectl
      2. 11.4.2 CPU와 메모리 사용률
      3. 11.4.3 클라우드 서비스 업체 콘솔
      4. 11.4.4 쿠버네티스 대시보드
      5. 11.4.5 위브 스코프
      6. 11.4.6 kube-ops-view
      7. 11.4.7 node-problem-detector
    5. 11.5 추가 자료
    6. 11.6 마치며
  13. 12장 쿠버네티스 애플리케이션 배포
    1. 12.1 헬름으로 매니페스트 빌드하기
      1. 12.1.1 헬름 차트의 구성 요소
      2. 12.1.2 헬름 템플릿
      3. 12.1.3 변수 삽입하기
      4. 12.1.4 템플릿에서 인용 부호 처리하기
      5. 12.1.5 의존성 지정하기
    2. 12.2 헬름 차트 배포하기
      1. 12.2.1 변수 설정하기
      2. 12.2.2 특정 값을 가진 헬름 릴리스
      3. 12.2.3 헬름으로 애플리케이션 업데이트하기
      4. 12.2.4 이전 버전으로 롤백하기
      5. 12.2.5 헬름 차트 저장소 생성하기
      6. 12.2.6 SOPS로 헬름 차트의 시크릿 관리하기
    3. 12.3 헬름파일로 여러 개 차트 관리하기
      1. 12.3.1 헬름파일의 구성요소
      2. 12.3.2 차트 메타데이터
      3. 12.3.3 헬름파일 적용하기
    4. 12.4 고급 매니페스트 관리 도구
      1. 12.4.1 ksonnet
      2. 12.4.2 kapitan
      3. 12.4.3 kustomize
      4. 12.4.4 kompose
      5. 12.4.5 앤서블
      6. 12.4.6 kubeval
    5. 12.5 마치며
  14. 13장 개발 워크플로
    1. 13.1 개발 도구
      1. 13.1.1 Skaffold
      2. 13.1.2 Draft
      3. 13.1.3 Telepresence
      4. 13.1.4 Knative
    2. 13.2 배포 전략
      1. 13.2.1 롤링 업데이트
      2. 13.2.2 Recreate
      3. 13.2.3 maxSurge와 maxUnavailable
      4. 13.2.4 블루/그린 배포
      5. 13.2.5 레인보우 배포
      6. 13.2.6 카나리아 배포
    3. 13.3 헬름으로 마이그레이션 처리하기
      1. 13.3.1 헬름 훅
      2. 13.3.2 실패된 훅 처리하기
      3. 13.3.3 다른 훅
      4. 13.3.4 훅 체이닝
    4. 13.4 마치며
  15. 14장 쿠버네티스에서 지속적 배포하기
    1. 14.1 지속적 배포란 무엇인가?
    2. 14.2 어떤 CD 도구를 사용해야 할까?
      1. 14.2.1 젠킨스
      2. 14.2.2 드론
      3. 14.2.3 구글 클라우드 빌드
      4. 14.2.4 Concourse
      5. 14.2.5 스피네이커
      6. 14.2.6 깃랩 CI
      7. 14.2.7 코드프레시
      8. 14.2.8 애저 파이프라인
    3. 14.3. CD 컴포넌트
      1. 14.3.1 도커 허브
      2. 14.3.2 Gitkube
      3. 14.3.3 Flux
      4. 14.3.4 Keel
    4. 14.4 클라우드 빌드를 사용한 CD 파이프라인
      1. 14.4.1 구글 클라우드와 GKE 설정하기
      2. 14.4.2 데모 저장소 포크하기
      3. 14.4.3 클라우드 빌드 소개
      4. 14.4.4 테스트 컨테이너 빌드하기
      5. 14.4.5 테스트 실행하기
      6. 14.4.6 애플리케이션 컨테이너 빌드하기
      7. 14.4.7 쿠버네티스 매니페스트 검증하기
      8. 14.4.8 이미지 게시하기
      9. 14.4.9 Git SHA 태그
      10. 14.4.10 첫 번째 빌드 트리거 생성하기
      11. 14.4.11 트리거 테스트하기
      12. 14.4.12 CD 파이프라인에서 배포하기
      13. 14.4.13 배포 트리거 생성하기
      14. 14.4.14 빌드 파이프라인 최적화하기
      15. 14.4.15 예제 파이프라인 적용하기
    5. 14.5 마치며
  16. 15장 관측 가능성과 모니터링
    1. 15.1 관측 가능성이란?
      1. 15.1.1 모니터링이란?
      2. 15.1.2 블랙박스 모니터링
      3. 15.1.3 업/다운 테스트의 진정한 의미
      4. 15.1.4 로깅
      5. 15.1.5 메트릭 소개
      6. 15.1.6 추적
      7. 15.1.7 관측 가능성
    2. 15.2 관측 가능성 파이프라인
    3. 15.3 쿠버네티스 모니터링
      1. 15.3.1 외부 블랙박스 검사
      2. 15.3.2 내부 헬스 체크
    4. 15.4 마치며
  17. 16장 쿠버네티스 메트릭
    1. 16.1 메트릭이란 무엇인가?
      1. 16.1.1 시계열 데이터
      2. 16.1.2 카운터와 게이지
      3. 16.1.3 메트릭의 용도
    2. 16.2 좋은 메트릭 선택하기
      1. 16.2.1 서비스: RED 패턴
      2. 16.2.2 리소스: USE 패턴
      3. 16.2.3 비즈니스 메트릭
      4. 16.2.4 쿠버네티스 메트릭
    3. 16.3 메트릭 분석
      1. 16.3.1 단순 평균의 문제점
      2. 16.3.2 산술 평균, 중앙값, 이상점
      3. 16.3.3 백분위수 발견
      4. 16.3.4 메트릭 데이터에 백분위수 적용하기
      5. 16.3.5 최악의 상황 파악하기
      6. 16.3.6 백분위수를 넘어
    4. 16.4 대시보드로 메트릭 그래프 그리기
      1. 16.4.1 모든 서비스에 표준 레이아웃 사용하기
      2. 16.4.2 마스터 대시보드로 정보 방열판 구축하기
      3. 16.4.3 대시보드로 사전 감지하기
    5. 16.5 메트릭 알림
      1. 16.5.1 알림의 문제
      2. 16.5.2 당직은 지옥이 되어서는 안 된다
      3. 16.5.3 긴급하고, 중요하고, 조치가능한 알림
      4. 16.5.4 알림, 퇴근 후 호출, 야간 호출 횟수 추적하기
    6. 16.6 메트릭 도구와 서비스
      1. 16.6.1 프로메테우스
      2. 16.6.2 구글 스택드라이버
      3. 16.6.3 AWS 클라우드워치
      4. 16.6.4 애저 모니터
      5. 16.6.5 데이터도그
      6. 16.6.6 뉴렐릭
    7. 16.7 마치며
  18. INDEX

Product information

  • Title: 쿠버네티스를 활용한 클라우드 네이티브 데브옵스
  • Author(s): 최경현, 저스틴 도밍거스, 존 어런들
  • Release date: December 2019
  • Publisher(s): Hanbit Media, Inc.
  • ISBN: 9791162242445