마이크로서비스 구성을 전제로 컨테이너와 쿠버네티스, 클라우드 네이티브 응용 프로그램 구축 생태계의 한 축을 담당하고 있는 기술들의 활용 방법을 다룬다. 도커 사용법부터 쿠버네티스 클러스터 생성, 응용 프로그램 배포, 확장, 스토리지 관리, 모니터링에 이르기까지 쿠버네티스와 프로메테우스 환경을 각각의 시나리오를 보고 따라 할 수 있도록 안내한다.
Contents
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: 쿠버네티스에서 경고 알림 설정하기
__요약
부록
Author
오누르 일마즈,술레이만 아크바스,오주환
다국적 엔터프라이즈 소프트웨어 기업의 선임 소프트웨어 엔지니어다. CKA(Certified Kubernetes Administrator) 인증 보유자로, 사내에서는 쿠버네티스 및 클라우드 관리 시스템을 담당하고 있다. 또한 도커, 쿠버네티스, 클라우드 네이티브 애플리케이션을 비롯한 최신 기술에 깊은 관심이 있다. 공학 석사학위와 2개 분야의 공학 학사학위를 소지하고 있으며, 현재 박사학위 과정 중에 있다.
다국적 엔터프라이즈 소프트웨어 기업의 선임 소프트웨어 엔지니어다. CKA(Certified Kubernetes Administrator) 인증 보유자로, 사내에서는 쿠버네티스 및 클라우드 관리 시스템을 담당하고 있다. 또한 도커, 쿠버네티스, 클라우드 네이티브 애플리케이션을 비롯한 최신 기술에 깊은 관심이 있다. 공학 석사학위와 2개 분야의 공학 학사학위를 소지하고 있으며, 현재 박사학위 과정 중에 있다.