데브옵스를 지탱하는 클라우드 네이티브 입문 [쿠버네티스와 프로메테우스를 이용한 마이크로서비스 환경 구축과 배포, 모니터링 가이드]
- 원서명Introduction to DevOps with Kubernetes: Build scalable cloud-native applications using DevOps patterns created with Kubernetes (ISBN 9781789808285)
- 지은이오누르 일마즈(Onur Yılmaz), 술레이만 아크바스(Süleyman Akbaş)
- 옮긴이오주환
- ISBN : 9791161755786
- 30,000원
- 2021년 10월 29일 펴냄
- 페이퍼백 | 384쪽 | 188*235mm
- 시리즈 : acorn+PACKT, 소프트웨어 아키텍처
책 소개
요약
마이크로서비스 구성을 전제로 컨테이너와 쿠버네티스, 클라우드 네이티브 응용 프로그램 구축 생태계의 한 축을 담당하고 있는 기술들의 활용 방법을 다룬다. 도커 사용법부터 쿠버네티스 클러스터 생성, 응용 프로그램 배포, 확장, 스토리지 관리, 모니터링에 이르기까지 쿠버네티스와 프로메테우스 환경을 각각의 시나리오를 보고 따라 할 수 있도록 안내한다.
이 책에서 다루는 내용
◆ 온프레미스 시스템과 클라우드에서 쿠버네티스 클러스터 생성 및 관리
◆ 쿠버네티스로 다양한 데브옵스 실습 수행
◆ 구성과 시크릿, 스토리지 관리 기능을 알아보고 쿠버네티스에서 실습 수행
◆ 다양한 업데이트 기술을 쿠버네티스에 적용
◆ 쿠버네티스의 내장 스케일링 기능으로 애플리케이션 확장 및 축소
◆ 쿠버네티스에서 다양한 트러블슈팅 기술 사용 및 모니터링 시스템 설치
이 책의 대상 독자
데브옵스에 대한 확실한 이해와 함께 쿠버네티스로 데브옵스 사례를 적용하는 방법을 알고자 하는 독자에게 적합하다. 데브옵스나 쿠버네티스 경험이 없는 사람, 혹은 경험 많은 데브옵스 엔지니어가 쿠버네티스를 데브옵스 실무에 활용할 수 있도록 시야를 넓히는 데 유용하다.
이 책의 구성
1장, ‘데브옵스 소개’에서는 데브옵스를 소개한다. 데브옵스가 무엇인지와 데브옵스를 둘러싼 개념을 간략하게 알아본다.
2장, ‘마이크로서비스와 컨테이너 소개’에서는 마이크로서비스와 컨테이너화를 소개한다.
3장, ‘쿠버네티스 소개’에서는 쿠버네티스를 소개한다. 쿠버네티스의 역사와 아키텍처 그리고 앞으로 여러 장에 걸쳐 등장할 쿠버네티스의 주요 개념을 다룬다.
4장, ‘쿠버네티스 클러스터 만들기’에서는 첫 쿠버네티스 클러스터를 만들고, 쿠버네티스의 플랫폼 옵션을 살펴본다.
5장, ‘쿠버네티스에 애플리케이션 배포하기’에서는 쿠버네티스의 객체 관리를 살펴보고, 객체 관리 기능으로 쿠버네티스에 워드프레스 블로그를 배포한다.
6장, ‘쿠버네티스로 구성 및 스토리지 관리하기’에서는 쿠버네티스의 구성과 스토리지 관리 방법을 학습한다.
7장, ‘쿠버네티스에서 애플리케이션 업데이트 및 확장하기’에서는 쿠버네티스에서 애플리케이션을 업데이트하고 확장하는 방법을 살펴본다.
8장, ‘쿠버네티스에서 애플리케이션 트러블슈팅하기’에서는 쿠버네티스에서 동작하는 애플리케이션에 문제가 생겼을 때 트러블슈팅하는 방법을 설명한다.
9장, ‘쿠버네티스에서 애플리케이션 모니터링하기’에서는 쿠버네티스에서 가장 일반적으로 사용되는 도구를 활용해 인프라 및 애플리케이션을 모니터링하는 다양한 기술을 소개한다.
부록은 독자가 책에 수록된 활동을 수행하도록 돕기 위한 내용으로 구성됐다. 또한 책에서 의도한 목표를 달성하는 데 필요한 상세한 내용을 담고 있다.
목차
목차
- 1장. 데브옵스 소개
- 소개
- 소프트웨어 분야에 데브옵스가 끼치는 영향
- 데브옵스 문화와 그 이점
- 데브옵스 툴체인
- 계획 단계
- 실습 1: 깃허브에서 저장소와 프로젝트 보드 만들기
- 생성 단계
- 실습 2: 데브옵스 블로그 만들기
- 검증 단계
- 실습 3: CI/CD 시스템에 데브옵스 블로그 연결하기
- 패키지 생성 단계
- 릴리스 단계
- 실습 4: 데브옵스 블로그 릴리스하기
- 구성 단계
- 모니터링 단계
- 활동 1: 데브옵스 블로그용 CI/CD 파이프라인
- 요약
- 소개
- 2장. 마이크로서비스와 컨테이너 소개
- 소개
- 도커 소개
- 도커의 기본 개념
- 실습 5: 도커 ‘Hello World’ 컨테이너 만들기
- 도커 이미지 빌드하기
- Dockerfile
- 도커 레지스트리
- 실습 6: 도커 이미지 빌드하기 및 이를 도커 허브로 푸시하기
- 도커 컨테이너 실행하기
- 실습 7: 볼륨 매핑 및 포트 공유 기능을 사용한 도커 컨테이너 실행하기
- 활동 2: 도커를 사용해 워드프레스 블로그와 데이터베이스 설치하기
- 요약
- 3장. 쿠버네티스 소개
- 소개
- 쿠버네티스란 무엇인가?
- 쿠버네티스 아키텍처
- 마스터 컴포넌트
- 노드 컴포넌트
- 실습 8: 로컬 쿠버네티스 클러스터 설치 및 실행하기
- 쿠버네티스 클러스터 액세스하기
- 실습 9: 쿠버네티스 대시보드에서 애플리케이션의 상태 확인하기
- 실습 10: kubectl을 사용해 클러스터 관리 수행하기
- 쿠버네티스 기본 리소스
- 파드
- 레플리카셋
- 디플로이먼트
- 스테이트풀셋
- 활동 3: 쿠버네티스에 워드프레스 블로그 및 데이터베이스 설치하기
- 요약
- 소개
- 4장. 쿠버네티스 클러스터 만들기
- 소개
- 수동으로 쿠버네티스 클러스터 설정하기
- 실습 11: kubeadm을 사용해 쿠버네티스 클러스터 만들기
- 쿠버네티스 클러스터의 고려사항
- 개발 단계, 혹은 서비스 운영 단계에 따른 설정
- 사내 혹은 관리형 서비스 선택
- 온프레미스 혹은 클라우드 인프라
- 바닐라 쿠버네티스 혹은 커스텀 솔루션
- 쿠버네티스 플랫폼 옵션
- 로컬 머신 솔루션
- 호스팅 솔루션
- 턴키 솔루션
- 헵티오
- 코어OS 테크토닉
- 레드햇 오픈시프트
- 실습 12: GCP에서 관리형 클러스터 만들기
- 활동 4: 쿠버네티스 클러스터에서 실행 중인 애플리케이션을 마이그레이션하기
- 요약
- 5장. 쿠버네티스에 애플리케이션 배포하기
- 소개
- 쿠버네티스의 객체 관리
- 명령형 커맨드
- 명령형 구성
- 선언적 구성
- 실습 13: kubectl을 사용해 애플리케이션 배포하기
- 쿠버네티스의 서비스 디스커버리
- 실습 14: 서비스를 사용해 애플리케이션에 액세스하기
- 쿠버네티스 패키지 매니저: 헬름
- 실습 15: 쿠버네티스 클러스터에 헬름 설치하기
- 활동 5: 헬름을 사용해 쿠버네티스에서 워드프레스 블로그 설치 및 확장하기
- 요약
- 6장. 쿠버네티스로 구성 및 스토리지 관리하기
- 구성 관리
- 인프라 구성
- 런타임 구성
- 쿠버네티스의 구성 관리
- 컨피그맵 만들기
- 컨피그맵 업데이트하기
- 파드에서 컨피그맵 사용하기
- 실습 16: 문자열과 파일로부터 컨피그맵 만들기
- 시크릿 관리
- 시크릿 관리의 모범 사례
- 시크릿 식별하기
- 소스 코드에서 시크릿 분리하기
- 시크릿 로테이션
- 최소 권한 원칙
- 애플리케이션 로그에 대한 시크릿 출력 방지하기
- 유휴 시 암호화
- 쿠버네티스에서 시크릿 관리하기
- 시크릿 생성하기
- 시크릿 업데이트하기
- 파드에서 시크릿 사용하기
- 실습 17: 시크릿 생성 및 업데이트
- 활동 6: 즉석에서 구성 업데이트하기
- 스토리지 관리
- 쿠버네티스의 스토리지 관리
- 볼륨
- emptyDir
- gcePersistentDisk
- glusterfs
- 실습 18: emptyDir 볼륨을 사용해 컨테이너 간에 콘텐츠 공유하기
- 영구 볼륨(PV)
- 영구 볼륨 클레임(PVC)
- 액세스 모드
- 스토리지 클래스
- 활동 7: 쿠버네티스에서 영구 데이터베이스 실행하기
- 요약
- 구성 관리
- 7장. 쿠버네티스에서 애플리케이션 업데이트 및 확장하기
- 애플리케이션 업데이트하기
- 블루 그린 배포
- 롤링 업데이트
- 카나리아 릴리스
- 다크 런치와 피처 토글
- 소프트웨어 업데이트와 소프트웨어 업그레이드
- 쿠버네티스에서 애플리케이션 업데이트하기
- 스테이트풀셋 업데이트 전략
- OnDelete
- RollingUpdate
- 디플로이먼트 업데이트 전략
- Recreate
- RollingUpdate
- 쿠버네티스에서 블루 그린 배포 수행하기
- 쿠버네티스에서 롤링 업데이트 수행하기
- maxSurge
- maxUnavailable
- 롤링 업데이트를 사용해 디플로이먼트 업데이트하기
- 헬름을 사용해 애플리케이션 업데이트하기
- 실습 19: 롤링 업데이트를 사용해 쿠버네티스에서 디플로이먼트 업데이트하기
- 애플리케이션 확장하기
- 수평 확장과 수직 확장
- 오토스케일링
- 강력한 일관성과 최종 일관성
- 쿠버네티스에서 애플리케이션 확장하기
- 실습 20: 쿠버네티스에서 디플로이먼트 확장 및 축소하기
- HPA
- 활동 8: 오토스케일링 활성화 및 롤링 업데이트 수행하기
- 요약
- 애플리케이션 업데이트하기
- 8장. 쿠버네티스에서 애플리케이션 트러블슈팅하기
- 소개
- 트러블슈팅
- 문제 식별하기
- 테스트 개선하기
- 문서화
- 도구 소개
- 로깅
- 로그 수준
- 쿠버네티스에서 애플리케이션 트러블슈팅하기
- 파드의 수명주기
- 파드의 상태
- 파드 컨디션
- 컨디션 유형
- 파드 단계
- 재시작 정책
- 컨테이너 상태
- 자동 복구
- 상태 점검
- 활성 프로브
- 준비성 프로브
- 실습 21: 쿠버네티스에서 활성 및 준비성 프로브 사용하기
- 종료 로그 생성하기
- 트러블슈팅을 위한 편리한 커맨드들
- 그 외의 편리한 커맨드들
- 변경과 적용을 위한 커맨드
- 흔히 겪을 수 있는 문제에 대한 제안
- 리소스 부족
- Image Pull 실패
- 실습 22: 쿠버네티스에서 파드 오류 수정하기
- 커뮤니티에 문의하기
- 활동 9: 쿠버네티스에서 애플리케이션 트러블슈팅하기
- 요약
- 9장. 쿠버네티스에서 애플리케이션 모니터링하기
- 모니터링
- 인프라 모니터링
- 애플리케이션 성능 모니터링
- 경고 알림
- 도구
- 쿠버네티스에서 애플리케이션 모니터링하기
- 프로메테우스
- 알림매니저
- 그라파나
- 그라파나에서 대시보드 생성하기
- 실습 23: 프로메테우스와 그라파나 설치하기
- 사용자 정의 메트릭
- 실습 24: 프로메테우스에서 사용자 지정 메트릭 노출하기
- 쿠버네티스에서 공개된 메트릭
- 슬랙
- 웹훅 수신 기능
- 실습 25: 슬랙에 가입하고 워크스페이스 만들기
- 활동 10: 쿠버네티스에서 경고 알림 설정하기
- 요약
- 모니터링