프로덕션 쿠버네티스 [애플리케이션 플랫폼 구축을 위한]
- 원서명Production Kubernetes: Building Successful Application Platforms (ISBN 9781492092308)
- 지은이조쉬 로소(Josh Rosso), 리치 랜더(Rich Lander), 알렉산더 브랜드(Alexander Brand), 존 해리스(John Harris)
- 옮긴이나정호
- ISBN : 9791161757971
- 40,000원
- 2023년 11월 28일 펴냄
- 페이퍼백 | 640쪽 | 188*235mm
- 시리즈 : 클라우드 컴퓨팅
책 소개
요약
쿠버네티스 기반 플랫폼의 구축과 운영에 필요한 핵심 요소, 실제 문제 해결 방법, 확장 가능한 아키텍처 디자인, 사용자 요구 고려, 도구 선택, 운영환경 방식에 대한 이해를 도와 효율적인 플랫폼을 구현하는 방법을 습득한다. 또한 이를 통해 쿠버네티스 기반 플랫폼 개발과 운영에 필요한 전반적인 지식을 활용할 수 있다.
추천의 글
쿠버네티스가 공개된 지 6년이 지났고, 공개됐을 때부터 저자는 쿠버네티스 개발 조직에 소속돼 실제로 쿠버네티스 프로젝트에 첫 번째 커밋을 수행했다(공개 릴리즈를 위한 클린 리포지터리를 만드는 과정에서의 유지보수를 담당했다). 쿠버네티스는 기대 이상의 성공을 거뒀다고 자신있게 말할 수 있다. 성공의 기반에는 규모가 큰 오픈소스 커뮤니티와 현실 세계와의 격차를 해소하려는 기여자들의 적극적인 참여가 있었다.
쿠버네티스를 일반 기업에 제공한다는 사명으로 공동 설립한 스타트업 헵티오(Heptio)에서 저자와 협력할 수 있었다. 헵티오에서 성공의 대부분은 실질적인 문제를 해결함에 있었고, 쿠버네티스의 실제 사용자와 직접 연결하는 동료의 노력이 있었기에 감사의 뜻을 전하고 싶다. 쿠버네티스를 운영 환경에서 실제로 작동하는 데 필요한 도구를 팀에 제공하기 위한 현장의 경험을 전하려는 목적을 두고 이 책을 썼다.
저자의 전체 경력은 애플리케이션 팀과 개발자를 대상으로 한 시스템 구축을 기반으로 한다. 마이크로소프트 인터넷 익스플로러(Microsoft Internet Explorer)부터 윈도우 프레젠테이션 파운데이션(Windows Presentation Foundation)에서 계속되고, 구글 컴퓨트 엔진(Google Compute Engine)과 쿠버네티스 및 클라우드로 전환됐다. 현장에서 ‘플랫폼 빌더의 저주’라는 현상으로부터 플랫폼을 구축하는 사람들이 고통받는 것을 여러 차례 목격했다. 플랫폼을 구축하고 있는 사람들은 수십 년 동안 안정적인 기반을 구축하는 문제에 초점을 맞추고 있다. 그러나 그 안정적인 기반에 초점을 맞추면서 현재 사용자가 겪고 있는 문제에 사각지대가 생기게 된다. 종종 사용자가 구축하고 있는 것을 실제로 사용하도록 연결하는 시간에 문제가 없도록 빠른 시일 내 구축하는 시간이 부족하다.
‘플랫폼 빌더의 저주’를 극복하려면 플랫폼 빌더의 거품 바깥 쪽에서 적극적으로 해결가능한 정보를 찾는 방법이 유일한 해결책이다. 정보를 찾는 일은 헵티오의 필드 엔지니어링 팀(이후에는 VMware 쿠버네티스 아키텍처 팀-KAT)이 수행했다. 이 팀은 업계의 다양한 고객이 쿠버네티스에서 성공할 수 있도록 도움을 주는 것 이상으로, 플랫폼의 ‘이론’이 어떻게 적용되는지 현실에 반영할 수 있는 중요한 창구 역할을 했다.
플랫폼 빌더 문제는 쿠버네티스와 CNCF(Cloud Native Computing Foundation)를 중심으로 구축되고 번창하는 생태계로 인해 더욱 악화된다. 여기에는 CNCF의 일부 프로젝트와 더 넓은 영역에 속한 프로젝트 모두가 포함된다. 이 생태계를 ‘아름다운 혼돈’이라고 표현하는데, 이는 서로 다른 정도의 중복과 성숙함을 가진 열대 우림과 같은 모습을 한 프로젝트이기 때문이다. 그러나 열대 우림을 탐험하는 것처럼 쿠버네티스 생태계를 탐험하려면 헌신의 시간이 필요하고 위험이 따른다. 쿠버네티스 세계에 첫 발을 딛은 사용자는 더 큰 생태계의 전문가가 되기 위한 시간이나 능력이 부족하다.
이 책은 쿠버네티스 생태계의 구성요소를 소개한다. 또한 개별 도구와 프로젝트가 언제 적합한지를 보여주며, 독자가 고민하는 문제를 적절한 도구로 평가하는 방법을 소개한다. 특정 도구를 사용하라고 독자에게 권하는 것을 넘어, 문제의 종류를 해결하는 일련의 도구를 이해하는 더 큰 프레임워크라는 특징을 설명한다. 문제의 존재 여부를 파악하고, 다양한 접근 방식의 강점과 약점을 알고, 실제로 시작하는 데 실용적인 조언을 제공한다. 쿠버네티스를 프로덕션 환경으로 전환하려는 사람에게 매우 가치 있는 정보가 가득하다.
—조 베다(Joe Beda),
VMware 탄주(Tanzu)의 수석 엔지니어, 쿠버네티스 공동 창시자
이 책에서 다루는 내용
◆ 견고한 쿠버네티스 기반 플랫폼 구축에 필요한 능력 이해하기
◆ 실제 경험을 활용해 쿠버네티스 기반 플랫폼을 구축할 때 자주 발생하는 함정 피하기
◆ 쿠버네티스의 아키텍처 디자인을 확장 가능한 플랫폼으로 개발하기
◆ 내부 및 외부 사용자의 고민을 분석해 목적에 맞는 플랫폼 개발하기
◆ 도구 및 추상화에 대한 선택과 결정으로 쿠버네티스 플랫폼의 복잡성 제어하기
◆ 쿠버네티스로 운영환경 방식을 확인하고 일반적인 도구 적용 옵션 및 절충점 알아보기
목차
목차
- 1장. 쿠버네티스 운영 준비
- 쿠버네티스 정의
- 중요 컴포넌트
- 컨테이너 오케스트레이션 이상의 확장 기능
- 쿠버네티스 인터페이스
- 쿠버네티스 요약
- 애플리케이션 플랫폼 도입 방식
- 플랫폼 구축 접근 범위
- 조직의 요구사항 조정
- 애플리케이션 플랫폼 요약
- 쿠버네티스 기반 애플리케이션 플랫폼 구축
- 기반부터 시작하기
- 추상화 범위
- 플랫폼 서비스 결정
- 구축 블록
- 요약
- 쿠버네티스 정의
- 2장. 쿠버네티스 배포 모델
- 관리형 서비스와 셀프 서비스 비교
- 관리형 서비스
- 자체 서비스
- 배포 모델 결정
- 자동화
- 쿠버네티스 설치 소프트웨어
- 사용자 정의 자동화
- 아키텍처 및 토폴로지
- etcd 배포 모델
- 클러스터 티어
- 노드풀
- 클러스터 페더레이션
- 인프라스트럭처
- 베어메탈과 가상화 비교
- 클러스터 사이즈 조정
- 컴퓨팅 인프라
- 네트워크 인프라
- 자동화 전략
- 서버 설치
- 구성 관리 도구
- VM 이미지
- VM 설치 시 필요한 항목
- 컨테이너형 컴포넌트
- 애드온
- 업그레이드
- 플랫폼 버전 관리
- 실패 대응 계획
- 통합 테스트
- 업그레이드 전략
- 트리거 메커니즘
- 요약
- 관리형 서비스와 셀프 서비스 비교
- 3장. 컨테이너 런타임
- 컨테이너의 출현
- 오픈 컨테이너 이니셔티브
- OCI 런타임 명세
- 컨테이너 런타임 인터페이스
- 파드 시작
- 런타임 선택
- 도커
- 컨테이너
- CRI-O
- 카타 컨테이너
- Virtual Kubelet
- 요약
- 4장. 컨테이너 스토리지
- 스토리지 고려사항
- 액세스 모드
- 볼륨 확장
- 볼륨 프로비저닝
- 백업 및 복구
- 블록 디바이스 및 파일, 오브젝트 스토리지
- 임시 데이터
- 스토리지 프로바이더 선택
- 쿠버네티스 스토리지 기본 요소
- 퍼시스턴트 볼륨 및 클레임
- 스토리지 클래스
- 컨테이너 스토리지 인터페이스
- CSI 컨트롤러
- CSINode
- Storage as a Service 구현
- 설치
- 스토리지 옵션 기준
- 스토리지 사용
- 리사이징
- 스냅숏
- 요약
- 스토리지 고려사항
- 5장. 파드 네트워크
- 네트워크 고려사항
- IP주소 관리
- 라우팅 프로토콜
- 캡슐화 및 터널링
- 워크로드 라우팅 가능성
- IPv4 및 IPv6
- 암호화된 워크로드 트래픽
- 네트워크 폴리시
- 요약: 네트워크 고려사항
- 컨테이너 네트워크 인터페이스
- CNI 설치
- CNI 플러그인
- 캘리코
- 실리움
- AWS VPC CNI
- 멀터스
- 추가 플러그인
- 요약
- 네트워크 고려사항
- 6장. 서비스 라우팅
- 쿠버네티스 서비스
- 서비스 추상화
- 엔드포인트
- 서비스 구현 세부정보
- 서비스 디스커버리
- DNS 서비스 성능
- 인그레스
- 인그레스 적용 사례
- 인그레스 API
- 인그레스 컨트롤러 및 작동 방식
- 인그레스 트래픽 패턴
- 인그레스 컨트롤러 선택
- 인그레스 컨트롤러 배포 고려사항
- DNS 및 인그레스 역할
- TLS 인증서 처리
- 서비스 메시
- 서비스 메시 사용 사례
- 서비스 메시 인터페이스
- 데이터 플레인 프록시
- 쿠버네티스 서비스 메시
- 데이터 플레인 아키텍처
- 서비스 메시 채택
- 요약
- 쿠버네티스 서비스
- 7장. 시크릿 관리
- 심층 방어
- 디스크 암호화
- 전송 보안
- 애플리케이션 암호화
- 쿠버네티스 시크릿 API
- 시크릿 소비 모델
- etcd 시크릿 데이터
- 정적 키 암호화
- 봉투 암호화
- 외부 프로바이더
- 볼트
- 사이버아크
- 시크릿 주입 통합
- CSI 통합
- 선언적 관리 방식
- 시크릿 봉인
- sealed-secret-controller
- 키 갱신
- 멀티클러스터 모델
- 시크릿 모범 사례
- 시크릿 상호작용 감사
- 시크릿 누출 금지
- 볼륨 선호 방식
- 애플리케이션에 시크릿 저장소 프로바이더를 알 수 없도록 설정
- 요약
- 심층 방어
- 8장. 어드미션 컨트롤
- 쿠버네티스 어드미션 체인
- 어드미션 컨트롤러 관련 범위
- 웹훅
- 웹훅 어드미션 컨트롤러 설정
- 웹훅 디자인 고려사항
- 변형 웹훅 작성
- 일반 HTTPS 핸들러
- 컨트롤러 런타임
- 중앙 집중식 정책 시스템
- 요약
- 9장. 관찰 가능성
- 로깅 동작 방식
- 컨테이너 로그 처리
- 쿠버네티스 감사 로그
- 쿠버네티스 이벤트
- 로그 경보
- 보안 영향
- 메트릭
- 프로메테우스
- 장기 보관
- 푸시 메트릭
- 사용자 정의 메트릭
- 조직 및 페더레이션
- 경보
- 쇼백과 차지백
- 메트릭 컴포넌트
- 분산 트레이싱
- 오픈트레이싱 및 오픈텔레메트리
- 트레이싱 컴포넌트
- 애플리케이션 계측
- 서비스 메시
- 요약
- 로깅 동작 방식
- 10장. 식별
- 사용자 식별
- 인증 방법
- 사용자 최소 권한 구현
- 애플리케이션/워크로드 식별
- 공유 시크릿
- 네트워크 식별
- 서비스 어카운트 토큰
- 예상 서비스 어카운트 토큰
- 플랫폼 중재 노드 식별
- 요약
- 사용자 식별
- 11장. 플랫폼 서비스 구축
- 확장점
- 플러그인 확장
- 웹훅 확장
- 오퍼레이터 확장
- 오퍼레이터 패턴
- 쿠버네티스 컨트롤러
- 사용자 정의 리소스
- 오퍼레이터 사용 사례
- 플랫폼 유틸리티
- 범용 워크로드 오퍼레이터
- 앱별 오퍼레이터
- 오퍼레이터 개발
- 오퍼레이터 개발 도구 사용
- 데이터 모델 설계
- 로직 구현
- 스케줄러 확장
- 판단식 및 우선순위
- 스케줄링 정책
- 스케줄링 프로필
- 다중 스케줄러
- 사용자 정의 스케줄러
- 요약
- 확장점
- 12장. 멀티테넌시
- 격리 정도
- 싱글테넌트 클러스터
- 멀티테넌트 클러스터
- 네임스페이스 경계
- 쿠버네티스 멀티테넌시
- RBAC
- 리소스 할당량
- 어드미션 웹훅
- 리소스 요청 및 제한
- 네트워크 정책
- 파드 시큐리티 폴리시
- 멀티테넌트 플랫폼 서비스
- 요약
- 격리 정도
- 13장. 오토스케일링
- 스케일링 유형
- 애플리케이션 아키텍처
- 워크로드 오토스케일링
- 수평 파드 오토스케일러
- 수직 파드 오토스케일링
- 사용자 정의 측정 항목을 사용한 오토스케일링
- 클러스터 비례 오토스케일러
- 사용자 정의 오토스케일링
- 클러스터 오토스케일링
- 클러스터 오버 프로비저닝
- 요약
- 14장. 애플리케이션 고려사항
- 쿠버네티스에 애플리케이션 배포
- 배포 매니페스트 템플릿
- 쿠버네티스용 애플리케이션 패키징
- 설정 및 시크릿 수집
- 쿠버네티스 컨피그맵 및 시크릿
- 외부 시스템에서 설정 가져오기
- 스케줄링 조정 이벤트 처리
- Pre-stop 컨테이너 생명 주기 훅
- 정상적인 컨테이너 종료
- 가용성 요구사항 충족
- 상태 프로브
- 라이브니스 프로브
- 레디니스 프로브
- 시작 프로브
- 프로브 구현
- 파드 리소스 요청 및 제한
- 리소스 요청
- 리소스 제한
- 애플리케이션 로그
- 로그 내용
- 구조화되지 않은 로그와 구조화된 로그
- 로그의 컨텍스트 정보
- 메트릭 노출
- 애플리케이션 계측
- USE 방법
- RED 방법
- 네 가지 골든 시그널
- 애플리케이션 특정 메트릭
- 분산 트레이싱을 위한 계측 서비스
- 트레이싱 도구 초기화
- 스팬 생성
- 컨텍스트 전파
- 요약
- 쿠버네티스에 애플리케이션 배포
- 15장. CI/CD 파이프라인
- 컨테이너 이미지 빌드
- 골든 베이스 이미지 안티패턴
- 베이스 이미지 선택
- 런타임 사용자
- 패키지 버전 고정
- 빌드와 런타임 이미지 비교
- 클라우드 네이티브 빌드팩
- 이미지 레지스트리
- 취약점 스캐닝
- 검역 워크플로
- 이미지 서명
- 지속적 전달
- 파이프라인에 빌드 통합
- 푸시 기반 배포
- 롤아웃 패턴
- 깃옵스
- 요약
- 컨테이너 이미지 빌드
- 16장. 플랫폼 추상화
- 플랫폼 노출
- 자체 서비스 온보딩
- 추상화 범위
- 커맨드라인 툴
- 템플릿을 통한 추상화
- 쿠버네티스 초기 추상화
- 쿠버네티스를 보이지 않게 만들기
- 요약