Top

쿠버네티스 오퍼레이터 [쿠버네티스에서 애플리케이션 추상화를 위한 도구]

  • 원서명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 아이디어와 이들이 공유하는 목표, 즉 운영 노력과 비용 절감, 서비스 안정성 향상 및 반복적인 유지 보수 작업에서 팀을 해방시켜 혁신을 유발하는 방법을 논의할 것이다.

저자/역자 소개

지은이의 말

쿠버네티스는 널리 사용되는 컨테이너 오케스트레이터다. 또한 많은 컴퓨터를 하나의 큰 컴퓨팅 리소스로 통합해서 활용하고 쿠버네티스 API를 통해 해당 리소스를 처리하는 수단을 제공한다. 쿠버네티스는 구글에서 시작한 오픈소스 소프트웨어로, 지난 5년 동안 CNCF(Cloud Native Computing Foundation, https://www.cncf.io/)의 후원하에 대규모 공동 작업자 그룹이 개발한 오픈소스 소프트웨어다.
오퍼레이터는 쿠버네티스를 확장해 특정 애플리케이션의 전체 라이프사이클 관리를 자동화한다. 오퍼레이터는 쿠버네티스에서 애플리케이션을 배포하기 위한 패키징 메커니즘의 역할을 하며 배포한 소프트웨어를 모니터링, 유지 관리, 복구 및 업그레이드한다.

지은이 소개

제이슨 도비스(Jason Dobies)

레드햇의 디벨로퍼 어드보케이트(developer advocate)다. 약 20년 동안 소프트웨어 산업에서 일하면서 파이썬, 자바, 고(Go)를 포함한 다양한 언어로 개발했다. 엔지니어로서의 경력 외에도 빌라노바대학교(Villanova University)의 겸임 교수로 재직 중이며, 소프트웨어 공학 및 졸업 프로젝트를 지도하고 있다. 컴퓨터 앞에 앉아 있지 않을 때는 아내와 두 자녀와 함께 시간을 보내고 비디오 게임과 운동을 즐긴다.

조슈아 우드(Joshua Wood)

레드햇의 디벨로퍼 어드보케이트로, 오픈소스 소프트웨어를 사용해 유틸리티 컴퓨팅을 구축하기 위해 경력을 쌓았다. 빠른 차, 느린 배, 짧은 자서전을 좋아한다.

옮긴이의 말

클라우드 환경을 구성하는 컨테이너는 사용자가 개발한 HTTP 서비스일 수도 있고 데이터 베이스 서버일 수도 있으며 NoSQL 서버나 캐시 서버일 수도 있다. 쿠버네티스는 기본적으로 이런 것들을 모두 동일하게 파드와 배포, 서비스 수준에서 표현하며 개발과 배포, 운영 역시 이러한 수준에서 이뤄진다.
쿠버네티스는 컨테이너를 기반으로 클라우드 환경에 최적화된 애플리케이션을 개발할 수 있는 훌륭한 토대를 제공하지만, 필요한 모든 것을 제공해주지는 못한다. 이에 CR을 통한 확장 가능한 구조를 제공하는데, 쿠버네티스 오퍼레이터는 이러한 확장을 자동화하는 데 사용할 수 있다. 애플리케이션별 배포 및 운영에 필요한 내용은 오퍼레이터가 자동으로 처리하므로 사용자는 하부 내용의 변화에 관계없이 쿠버네티스의 표준 리소스 관리 방식을 그대로 사용할 수 있다.
만약 쿠버네티스를 확장해 데이터베이스 서버, 캐시 서버 등 좀 더 상위 수준의 리소스를 쿠버네티스의 기본 단위로 다룰 수 있다면 어떻게 될까? 설정 및 운영이 단순해지고, 좀 더 직관적이며 고수준으로 클라우드 애플리케이션을 다룰 수 있을 것이다. 성공적인 사례로 이스티오 등의 서비스 메시 구현과 API 게이트웨이 등의 쿠버네티스 통합이 존재한다. 또한 카프카, 레디스, 각종 관계형 데이터베이스 및 NoSQL 등이 쿠버네티스 오퍼레이터를 구현하고 발전시키면서 이러한 목표를 향해 나아가고 있다.
이 책은 분량이 적고 필요한 모든 것을 다루고 있지는 못하지만, 쿠버네티스 오퍼레이터를 통해 쿠버네티스를 실제로 확장할 수 있는 좋은 시작점이 될 수 있을 것이다. 또한 오퍼레이터를 직접 구현하지 않더라도 쿠버네티스 내부를 좀 더 잘 이해하는 데도 도움이 될 것이다.

옮긴이 소개

이상근

숭실대학교에서 컴퓨터공학을 전공하고, 동대학 대학원에서 공학박사 학위를 받았다. 세부 전공은 분산처리이며, 주로 분산 컴퓨팅 아키텍처와 워크플로우 엔진을 연구했다. 학업을 마치고 개발자로 10년 이상 다양한 경력을 쌓았으며 엔터프라이즈 잡 스케줄러, 렌더팜 관리 시스템, 클라우드 데이터베이스 프로비저닝 서비스, 빅데이터 관련 시스템, 클라이언트 사이드 로드 밸런싱 등 다양한 개발 경험을 해왔다. 최근에는 마이크로서비스 아키텍처와 서비스 메시가 가져올 IT 시스템의 큰 변화에 주목하고 있으며, 애플리케이션 아키텍트로 일하고 있다.
번역서로 『엔터프라이즈 환경을 위한 마이크로서비스』(에이콘, 2020), 『이스티오 첫걸음』(에이콘, 2020)이 있다.
이 책의 1~6장 번역을 담당했다.

임성일

한국과학기술원에서 공학석사 학위를 받았다. 세부 전공은 데이터베이스이며, 상황인지 및 이동성 지원을 연구했다. 2010년 클라우드 태동기부터 퍼블릭/프라이빗 클라우드 환경지원을 위한 다양한 서비스를 개발했고 현재 SKT의 Cloud Labs에서 TACO SKT All Container Orchestrator 개발에 참여하고 있다. TACO의 LMA Logging/Montoring/Alerting 를 총괄하고 있으며 이에 따라 관련된 소프트웨어들의 진화, 발전을 관찰하며 배포 및 운영 지원을 위한 개발 툴로 오퍼레이터들을 개발해 적용하고 있다. 또한 Openstack, fluent 등 오픈소스의 업스트림 개발자로 활동하고 있다.
이 책의 7장 이후 번역을 담당했다.

목차

목차
  • 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 오퍼레이터 실행
    • 오퍼레이터 테스트
    • 요약
    • 관련 리소스

  • 7장. 오퍼레이터 SDK를 사용해 Go로 만드는 오퍼레이터
    • 오퍼레이터 초기화
    • 오퍼레이터의 리소스 관리 범위
    • 사용자 정의 리소스 정의
      • Go 타입 정의
      • CRD 매니페스트
    • 오퍼레이터 권한
    • 컨트롤러
      • Reconcile 함수
    • 오퍼레이터 작성 팁
      • 리소스 검색
      • 자식 리소스 생성
      • 자식 리소스 삭제
      • 자식 리소스 명명법
      • 멱등성
      • 오퍼레이터 영향도
    • 로컬에서 오퍼레이터 실행하기
    • 방문자 사이트 예제
    • 요약
    • 관련 리소스

  • 8장. 오퍼레이터 라이프사이클 매니저
    • OLM 사용자 정의 리소스
      • ClusterServiceVersion
      • CatalogSource
      • 구독
      • InstallPlan
      • OperatorGroup
    • OLM 설치하기
    • OLM 사용하기
      • 오퍼레이터 둘러보기
      • 오퍼레이터 삭제하기
    • OLM 번들 메타데이터 파일
      • CRD
      • 클러스터 서비스 버전 파일
      • 패키지 매니페스트 파일
    • 클러스터 서비스 버전 파일 작성하기
      • 파일 스켈레톤 생성하기
      • 메타데이터
      • 소유 CRD
      • 필수 CRD
      • 설치 모드
      • 버전 관리 및 업데이트
    • 패키지 매니페스트 파일 작성하기
    • 로컬 환경에서 실행하기
      • 전제 조건
      • OLM 번들 만들기
      • OLM을 통한 오퍼레이터 설치
      • 실행 중인 오퍼레이터 테스트하기
    • 방문자 사이트 오퍼레이터 예제
    • 요약
    • 관련 리소스

  • 9장. 오퍼레이터 철학
    • 모든 애플리케이션에 대한 SRE
    • 수고하지 말아라
      • 자동화 가능한 것: 당신의 컴퓨터가 할 작업
      • 제자리 달리기: 지속적인 가치가 없는 일
      • 고통의 증가: 시스템과 함께 확장되는 작업
    • 오퍼레이터: 쿠버네티스 애플리케이션 신뢰성 엔지니어링
      • 애플리케이션 상태 관리
      • 소프트웨어로 전송되는 골든 시그널
    • 매우 성공적인 오퍼레이터의 7가지 습관
    • 요약

  • 10장. 참여하기
    • 기능 요청과 버그 리포트
    • 기여하기
    • 오퍼레이터 공유하기
    • 요약

  • 부록 A. 클러스터 내부에 디플로이먼트로 오퍼레이터 실행하기
  • 부록 B. CR 검증
  • 부록 C. 역할 기반 접근 제어(RBAC)

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안