쿠버네티스 오퍼레이터 [쿠버네티스에서 애플리케이션 추상화를 위한 도구]
- 원서명Kubernetes Operators: Automating the Container Orchestration Platform (ISBN 9781492048046)
- 지은이제이슨 도비스(Jason Dobies), 조슈아 우드(Joshua Wood)
- 옮긴이이상근, 임성일
- ISBN : 9791161754789
- 20,000원
- 2020년 11월 18일 펴냄
- 페이퍼백 | 204쪽 | 188*235mm
- 시리즈 : 클라우드 컴퓨팅
책 소개
소스 코드 파일은 여기에서 내려 받으실 수 있습니다.
https://github.com/AcornPublishing/kubernetes-operators
요약
쿠버네티스 오퍼레이터는 쿠버네티스에서 애플리케이션을 패키징, 배포, 관리하는 방법이다. 쿠버네티스 오퍼레이터를 통해 쿠버네티스 클러스터에 애플리케이션별 기술을 추가해 복잡한 상태 저장 프로그램의 라이프사이클을 쉽게 자동화할 수 있다. 이 책에서는 구체적인 예시를 통해 오퍼레이터가 작동하는 방식과 오퍼레이터 프레임워크 및 SDK를 사용해 구축하는 방법을 보여준다.
추천의 글
“쿠버네티스는 세계에서 가장 강력한 컨테이너 오케스트레이션 플랫폼으로 부상했다. 그러나 미래의 플랫폼을 구축하고 운영하는 방법을 재정의할 수 있는 확장 가능한 API 및 자동화 프레임워크의 진정한 힘은 숨겨져 있다. 이 책은 잃어버린 매뉴얼이다.”
- 켈시 하이타워(Kelsey Hightower)/ 구글 클라우드(Google Cloud)의 테크놀로지스트
“제이슨과 조쉬의 『쿠버네티스 오퍼레이터』는 쿠버네티스의 중요성을 인지한다면 (디지털) 책장에서 놓치지 않아야 할 내용이다. 실습을 통해 오퍼레이터 패턴을 성공적으로 적용할 수 있다. 이 책은 『Programming Kubernetes』의 완벽한 후속작이라고 생각한다.”
- 마이클 하우젠블라스(Michael Hausenblas)/ 아마존 웹 서비스(Amazon Web Services)
“이 책은 중요한 워크로드에 오퍼레이터 패러다임을 채택하려는 모든 사람에게 필수다. 설계 원칙, 구현 경로 및 트랩, 기존 생태계의 활용에 대한 포괄적인 개요를 제공한다.”
- 아니쉬 아스타나(Anish Asthana)/ 레드햇(Red Hat)의 소프트웨어 엔지니어
“지난 몇 년, 제이슨과 함께 일하는 동안 늘 그의 머릿속에 있는 지식을 덤프하고 싶었는데 드디어 가지게 됐다. 조쉬와 제이슨은 오퍼레이터를 만드는 모든 사람을 위한 필수 가이드를 만들었으며, 고객을 위한 진정한 ‘쿠버네티스 애플리케이션 신뢰성 엔지니어링(Kubernetes Application Reliability Engineering)’ 기능을 목표로 오퍼레이터를 오토 파일럿 단계로 발전시키는 데 큰 도움이 될 것이다.”
- 데이브 모이러(Dave Meurer)/ 시놉시스 주식회사(Synopsys, Inc.)의 기술 제휴 파트너
“쿠버네티스 오퍼레이터를 위한 시장 최고의 데이터를 제공하는, 조쉬와 제이슨의 또 다른 훌륭한 책이다.”
- 조 고메스(Joe Gomes)/ 시놉시스 주식회사의 제휴 파트너
이 책에서 다루는 내용
■ 쿠버네티스 클러스터에 오퍼레이터를 배포하는 방법
■ 사용법부터 구현에 이르기까지 오퍼레이터 검토
■ 오퍼레이터 프레임워크 탐색: 오퍼레이터 SDK, 오퍼레이터 라이프사이클 매니저, 오퍼레이터 미터링
■ SDK의 Go 프로그래밍 언어 지원을 통해 오퍼레이터 구축, 패키지 및 실행
■ 기존 Helm 및 Ansible 자산을 오퍼레이터로 패키징 및 배포
■ 쿠버네티스 클러스터에 설치하기 위해 오퍼레이터를 배포하는 방법
■ 오퍼레이터가 사이트 신뢰성 엔지니어링 사례를 구현하는 데 어떻게 도움이 되는지 확인
이 책의 대상 독자
쿠버네티스 클러스터에 애플리케이션을 배포해봤다면 오퍼레이터 패턴이 등장하게 된 몇 가지 도전 의식과 열망에 공감할 것이다. 데이터베이스와 파일 시스템 같은 기본 서비스를 오케스트레이션된 클러스터 외부의 자체 빈민가에서 유지 관리하고 있으며 이를 오케스트레이션된 클러스터 인근으로 가져오고 싶다면 쿠버네티스 오퍼레이터에 대한 이 안내서가 도움될 것이다.
이 책의 구성
오퍼레이터가 무엇인지와 오퍼레이터가 쿠버네티스 API를 확장하는 방법을 설명한다. 기존 오퍼레이터를 배포하고 사용하는 방법과 레드햇 오퍼레이터 프레임워크(Red Hat Operator Framework, https://github.com/operator-framework)를 사용해 애플리케이션에 오퍼레이터를 작성, 분배하는 방법을 보여준다. 이는 오퍼레이터를 설계, 구축, 배포하기 위한 모범 사례와 연관돼 있으며, SRE(Site Reliability Engineering) 원칙을 사용해 오퍼레이터에 생명을 불어넣는다는 컨셉을 설명한다.
1장에서 오퍼레이터와 개념을 설명한 후, 책의 나머지 부분에서 실습할 수 있는 쿠버네티스 클러스터에 접근하는 방법을 제안한다. 클러스터가 실행되면 오퍼레이터를 배포하고 애플리케이션이 실패하거나 확장되거나 새 버전으로 업그레이드될 때의 동작을 관찰할 수 있다.
뒷부분에서는 오퍼레이터 SDK를 살펴보고 이를 사용해 오퍼레이터를 구축하고 예제 애플리케이션을 쿠버네티스 일등 시민으로 귀화시키는 방법을 보여준다. 이러한 실질적인 토대를 마련해 오퍼레이터가 도출한 SRE 아이디어와 이들이 공유하는 목표, 즉 운영 노력과 비용 절감, 서비스 안정성 향상 및 반복적인 유지 보수 작업에서 팀을 해방시켜 혁신을 유발하는 방법을 논의할 것이다.
목차
목차
- 1장. 오퍼레이터가 쿠버네티스에 제공하는 새로운 트릭
- 쿠버네티스 작동 방식
- 예: 상태 비저장 웹 서버
- 상태 저장은 어렵다
- 오퍼레이터는 소프트웨어 SRE다
- 오퍼레이터 작동 방식
- 쿠버네티스 CR
- 오퍼레이터는 어떻게 만들어지는가?
- 예: etcd 오퍼레이터
- 사라진 멤버의 경우
- 오퍼레이터는 누구를 위한 것인가?
- 오퍼레이터 채택
- 출발하자!
- 2장. 오퍼레이터 실행
- 오퍼레이터 실험 환경 구성
- 클러스터 버전 요구사항
- 인가 요구사항
- 표준 도구 및 기술
- 권장 클러스터 구성
- 클러스터 버전 확인
- 단순 오퍼레이터 실행
- 일반적인 시작점
- etcd 오퍼레이터 매니페스트 가져오기
- CR: 사용자 정의 API 엔드포인트
- 나는 누구인가: 오퍼레이터 서비스 계정 정의
- etcd 오퍼레이터 배포
- etcd 클러스터 선언
- etcd 실습
- etcd 클러스터 확장
- 장애 및 자동화된 복구
- etcd 클러스터 업그레이드
- 정리
- 요약
- 오퍼레이터 실험 환경 구성
- 3장. 쿠버네티스 인터페이스의 오퍼레이터
- 표준 확장: ReplicaSet 리소스
- 사용자 정의 리소스
- CR 또는 ConfigMap?
- 사용자 정의 컨트롤러
- 오퍼레이터 범위
- 네임스페이스 범위
- 클러스터 범위 오퍼레이터
- 권한 부여
- 서비스 계정
- 역할
- RoleBinding
- ClusterRole 및 ClusterRoleBinding
- 요약
- 4장. 오퍼레이터 프레임워크
- 오퍼레이터 프레임워크의 기원
- 오퍼레이터 성숙도 모델
- 오퍼레이터 SDK
- 오퍼레이터 SDK 도구 설치
- 오퍼레이터 라이프사이클 매니저
- 오퍼레이터 미터링
- 요약
- 5장. 샘플 애플리케이션: 방문자 사이트
- 애플리케이션 개요
- 매니페스트를 사용한 설치
- MySQL 배포
- 백엔드
- 프론트엔드
- 매니페스트 배포
- 방문자 사이트에 접근
- 정리
- 요약
- 6장. 어댑터 오퍼레이터
- Helm 오퍼레이터
- 오퍼레이터 구축
- CRD에 대한 설명
- 오퍼레이터 권한 검토
- Helm 오퍼레이터 실행
- Ansible 오퍼레이터
- 오퍼레이터 구축
- CRD에 대한 설명
- 오퍼레이터 권한 검토
- Ansible 오퍼레이터 실행
- 오퍼레이터 테스트
- 요약
- 관련 리소스
- Helm 오퍼레이터
- 7장. 오퍼레이터 SDK를 사용해 Go로 만드는 오퍼레이터
- 오퍼레이터 초기화
- 오퍼레이터의 리소스 관리 범위
- 사용자 정의 리소스 정의
- Go 타입 정의
- CRD 매니페스트
- 오퍼레이터 권한
- 컨트롤러
- Reconcile 함수
- 오퍼레이터 작성 팁
- 리소스 검색
- 자식 리소스 생성
- 자식 리소스 삭제
- 자식 리소스 명명법
- 멱등성
- 오퍼레이터 영향도
- 로컬에서 오퍼레이터 실행하기
- 방문자 사이트 예제
- 요약
- 관련 리소스
- 8장. 오퍼레이터 라이프사이클 매니저
- OLM 사용자 정의 리소스
- ClusterServiceVersion
- CatalogSource
- 구독
- InstallPlan
- OperatorGroup
- OLM 설치하기
- OLM 사용하기
- 오퍼레이터 둘러보기
- 오퍼레이터 삭제하기
- OLM 번들 메타데이터 파일
- CRD
- 클러스터 서비스 버전 파일
- 패키지 매니페스트 파일
- 클러스터 서비스 버전 파일 작성하기
- 파일 스켈레톤 생성하기
- 메타데이터
- 소유 CRD
- 필수 CRD
- 설치 모드
- 버전 관리 및 업데이트
- 패키지 매니페스트 파일 작성하기
- 로컬 환경에서 실행하기
- 전제 조건
- OLM 번들 만들기
- OLM을 통한 오퍼레이터 설치
- 실행 중인 오퍼레이터 테스트하기
- 방문자 사이트 오퍼레이터 예제
- 요약
- 관련 리소스
- OLM 사용자 정의 리소스
- 9장. 오퍼레이터 철학
- 모든 애플리케이션에 대한 SRE
- 수고하지 말아라
- 자동화 가능한 것: 당신의 컴퓨터가 할 작업
- 제자리 달리기: 지속적인 가치가 없는 일
- 고통의 증가: 시스템과 함께 확장되는 작업
- 오퍼레이터: 쿠버네티스 애플리케이션 신뢰성 엔지니어링
- 애플리케이션 상태 관리
- 소프트웨어로 전송되는 골든 시그널
- 매우 성공적인 오퍼레이터의 7가지 습관
- 요약
- 10장. 참여하기
- 기능 요청과 버그 리포트
- 기여하기
- 오퍼레이터 공유하기
- 요약
- 부록 A. 클러스터 내부에 디플로이먼트로 오퍼레이터 실행하기
- 부록 B. CR 검증
- 부록 C. 역할 기반 접근 제어(RBAC)