Steady Seller

[그림과 상세한 설명으로 명확하게 이해하는]
쿠버네티스 인 액션 (재출간판)

  • 원서명Kubernetes in Action (ISBN 9781617293726)
  • 지은이마르코 룩샤(Marko Lukša)
  • 옮긴이강인호, 황주필, 이원기, 임찬식
  • ISBN : 9791161754048
  • 45,000원
  • 2020년 03월 31일 펴냄
  • 페이퍼백 | 844쪽 | 188*235mm
  • 시리즈 : 소프트웨어 아키텍처, 오픈소스 프로그래밍

책 소개

요약

쿠버네티스를 이용해 애플리케이션을 효과적으로 개발하고 운영할 수 있는 방법을 초보자도 쉽게 이해할 수 있도록 설명한다. 쿠버네티스 아키텍처와 각 객체의 개념을 명확히 정립할 수 있도록 예제와 그림을 곁들였다. 후반부에는 쿠버네티스의 내부 구조 및 동작 원리도 쉽게 설명하고 있어 쿠버네티스의 안팎을 모두 살필 수 있다.

추천의 글

“권위 있고 철저하다. 분산되고 확장 가능한 애플케이션의 전체 라이프사이클을 관리하는 방법을 실습 위주로 설명한다.”
- 안토니오 마그나히(Antonio Magnaghi), 시스템1

“특히 실제 사례를 다룬 부분이 좋다. 단지 개념만 적용하는 것이 아니라 실제 테스트를 해본다.”
- 파올로 안티노리(Paolo Antinori), 레드햇

“쿠버네티스와 관련 있는 기술들의 깊이 있는 토론이다. 반드시 소장해야 하는 책이다.”
- 알 크린커(Al Krinker), USPTO

“쿠버네티스 전문가가 되기 위한 필독서로, 모든 것이 담겨 있다."
- 차바 사리(Csaba Sari), 키메라 엔터테인먼트

이 책에서 다루는 내용

■ 쿠버네티스 내부 구조
■ 클러스터상에서 컨테이너 배포
■ 클러스터 보안
■ 중단 없이 애플리케이션 갱신

이 책의 대상 독자

도커나 컨테이너 오케스트레이션 시스템에 익숙하지 않은 초, 중급 소프트웨어 개발자를 대상으로 한다.
주로 애플리케이션 개발자를 대상으로 설명하지만, 운영 관점에서 애플리케이션 관리 개요도 제공한다. 이는 다수 서버 환경에서 컨테이너화된 애플리케이션을 실행하고 관리하는 데 관심이 있는 모든 사용자에게 적합하다. 컨테이너 기술을 배우고 여러 개의 관련된 컨테이너를 규모에 맞게 조정하고자 하는 입문자나 고급 소프트웨어 엔지니어들은 쿠버네티스 환경에서 애플리케이션을 개발하고 컨테이너화하며 실행하는 데 필요한 전문 지식을 얻게 될 것이다.
이전의 컨테이너 기술이나 쿠버네티스 관련 경험을 필요로 하진 않는다. 주제를 점진적으로 상세히 설명하고 있으며, 비전문가 개발자가 이해하기에 어려운 애플리케이션 소스 코드는 사용하지 않았다. 그러나 최소한 프로그래밍, 컴퓨터 네트워킹, 리눅스의 기본 명령 실행과 같은 기본적인 지식과 HTTP처럼 잘 알려진 프로토콜에 관해 이해하고 있어야 한다.

이 책의 구성

이 책은 18장을 세 부분으로 나눠 설명한다.
1부는 도커와 쿠버네티스를 간략하게 소개하고, 쿠버네티스 클러스터를 설치하는 방법과 간단한 애플리케이션을 실행하는 방법 등을 소개한다. 1부에는 두 개의 장이 있다.
1장에서는 쿠버네티스가 무엇이고 어떻게 생겨났으며 규모에 맞게 애플리케이션을 관리해야 하는 오늘날의 문제를 해결하는 데 어떻게 도움이 되는지 설명한다.
2장에서는 컨테이너 이미지를 빌드해 쿠버네티스 클러스터에서 실행하는 방법의 실습 튜토리얼을 제공한다. 또한 로컬에서 단일 노드 쿠버네티스 클러스터를 실행하는 방법과 클라우드에서 다중 노드 클러스터를 실행하는 방법을 설명한다.

2부에서는 쿠버네티스에서 애플리케이션을 실행하기 위해 반드시 이해해야 하는 핵심 개념을 소개한다. 2부의 각 장은 다음과 같다.
3장에서는 쿠버네티스의 기본 구성 블록인 파드(Pod)를 소개하고, 레이블(label)을 통해 파드와 기타 쿠버네티스의 오브젝트를 정리하는 방법을 설명한다.
4장에서는 컨테이너를 자동으로 다시 시작해 쿠버네티스가 애플리케이션을 정상적으로 유지하는 방법을 알려준다. 또한 관리되는 파드(managed pod)를 적절히 실행하고, 수평 확장하며, 클러스터 노드 장애에 내성을 갖게 하고 사전 정의된 시간 또는 주기적으로 실행하는 방법을 알아본다.
5장에서는 파드가 제공하는 서비스를 클러스터 내외부 클라이언트에게 노출시키는 방법을 보여준다. 또한 클러스터에서 실행 중인 파드가 클러스터 내부나 외부에 상주하는지에 관계없이 서비스를 검색하고 액세스하는 방법을 보여준다.
6장에서는 같은 파드에서 실행되는 여러 개의 컨테이너가 파일을 공유하는 방법과 퍼시스턴트 스토리지(persistent storage)를 관리하고 파드가 접근할 수 있게 하는 방법을 설명한다.
7장에서는 설정 데이터와 자격증명과 같은 중요 정보를 파드 내부에서 실행되는 애플리케이션에 전달하는 방법을 보여준다.
8장에서는 애플리케이션이 실행 중인 쿠버네티스 환경 관련 정보를 얻는 방법과 클러스터 상태를 변경하기 위해 쿠버네티스와 통신하는 방법을 설명한다.
9장에서는 디플로이먼트(Deployment) 개념을 소개하고 쿠버네티스 환경에서 애플리케이션을 실행하고 업데이트하는 적절한 방법을 안내한다.
10장에서는 안정적인 아이덴티티와 상태를 필요로 하는 스테이트풀(stateful) 애플리케이션을 실행하는 방법을 소개한다.

3부는 쿠버네티스 클러스터의 내부를 깊이 들여다보며 몇 가지 추가적인 개념을 소개하고 1, 2부에서 배운 것을 좀 더 높은 수준에서 살펴본다. 마지막 부의 구성은 다음과 같다.
11장은 쿠버네티스 클러스터를 구성하는 모든 구성 요소와 각 요소의 역할을 설명한다. 또한 파드가 네트워크를 이용해 통신하는 법과 서비스가 여러 파드를 로드 밸런싱하는 방법을 설명한다.
12장에서는 인증(authentication)과 인가(authorization)를 사용해 쿠버네티스 API 서버를 안전하게 보호하는 방법을 설명한다.
13장에서는 파드가 노드의 리소스에 접근하는 방법과 클러스터 관리자가 파드의 리소스 접근을 막는 방법을 설명한다.
14장에서는 애플리케이션이 사용할 수 있는 컴퓨팅 리소스를 제약하고, 애플리케이션의 서비스 품질(QoS, Quality of Service) 보증을 구성하고, 개별 애플리케이션의 리소스 사용량을 모니터링하는 방법을 다룬다. 또한 사용자가 너무 많은 리소스를 사용하는 것을 방지하는 방법을 알려준다.
15장에서는 애플리케이션에서 실행 중인 레플리카(replicas) 수를 자동으로 확장하도록 쿠버네티스를 설정하는 방법과 현재 클러스터 노드 수 이상으로 애플리케이션을 수용하기 위해 클러스터 크기를 늘리는 방법을 설명한다.
16장에서는 특정 노드에만 파드가 스케줄링되게 하거나 파드가 다른 노드로 예약되지 않게 하는 방법을 알려준다. 또한 파드가 함께 스케줄링되거나 함께 스케줄링되지 않게 하는 방법을 살펴본다.
17장에서는 애플리케이션을 쿠버네티스 클러스터에 알맞게 개발하는 방법을 알려준다. 또한 개발 중 마찰을 줄이기 위해 개발 및 테스트 workflow를 설정하는 방법 관련 지침을 몇 가지 제공한다.
18장에서는 사용자 정의 오브젝트(custom objects)로 쿠버네티스를 확장할 수 있는 방법과 다른 사람들이 어떤 방식으로 엔터프라이즈급 애플리케이션 플랫폼을 만들었는지를 보여준다.
위 내용을 통해 쿠버네티스의 각 구성 요소를 알게 되고 점차적으로 kubectl 명령줄 도구를 사용하는 법을 배우게 될 것이다.