Top

데브옵스를 지탱하는 클라우드 네이티브 입문 [쿠버네티스와 프로메테우스를 이용한 마이크로서비스 환경 구축과 배포, 모니터링 가이드]

  • 원서명Introduction to DevOps with Kubernetes: Build scalable cloud-native applications using DevOps patterns created with Kubernetes (ISBN 9781789808285)
  • 지은이오누르 일마즈(Onur Yılmaz), 술레이만 아크바스(Süleyman Akbaş)
  • 옮긴이오주환
  • ISBN : 9791161755786
  • 30,000원
  • 2021년 10월 29일 펴냄
  • 페이퍼백 | 384쪽 | 188*235mm
  • 시리즈 : acorn+PACKT, 소프트웨어 아키텍처

책 소개

요약

마이크로서비스 구성을 전제로 컨테이너와 쿠버네티스, 클라우드 네이티브 응용 프로그램 구축 생태계의 한 축을 담당하고 있는 기술들의 활용 방법을 다룬다. 도커 사용법부터 쿠버네티스 클러스터 생성, 응용 프로그램 배포, 확장, 스토리지 관리, 모니터링에 이르기까지 쿠버네티스와 프로메테우스 환경을 각각의 시나리오를 보고 따라 할 수 있도록 안내한다.

이 책에서 다루는 내용

◆ 온프레미스 시스템과 클라우드에서 쿠버네티스 클러스터 생성 및 관리
◆ 쿠버네티스로 다양한 데브옵스 실습 수행
◆ 구성과 시크릿, 스토리지 관리 기능을 알아보고 쿠버네티스에서 실습 수행
◆ 다양한 업데이트 기술을 쿠버네티스에 적용
◆ 쿠버네티스의 내장 스케일링 기능으로 애플리케이션 확장 및 축소
◆ 쿠버네티스에서 다양한 트러블슈팅 기술 사용 및 모니터링 시스템 설치

이 책의 대상 독자

데브옵스에 대한 확실한 이해와 함께 쿠버네티스로 데브옵스 사례를 적용하는 방법을 알고자 하는 독자에게 적합하다. 데브옵스나 쿠버네티스 경험이 없는 사람, 혹은 경험 많은 데브옵스 엔지니어가 쿠버네티스를 데브옵스 실무에 활용할 수 있도록 시야를 넓히는 데 유용하다.

이 책의 구성

1장, ‘데브옵스 소개’에서는 데브옵스를 소개한다. 데브옵스가 무엇인지와 데브옵스를 둘러싼 개념을 간략하게 알아본다.
2장, ‘마이크로서비스와 컨테이너 소개’에서는 마이크로서비스와 컨테이너화를 소개한다.
3장, ‘쿠버네티스 소개’에서는 쿠버네티스를 소개한다. 쿠버네티스의 역사와 아키텍처 그리고 앞으로 여러 장에 걸쳐 등장할 쿠버네티스의 주요 개념을 다룬다.
4장, ‘쿠버네티스 클러스터 만들기’에서는 첫 쿠버네티스 클러스터를 만들고, 쿠버네티스의 플랫폼 옵션을 살펴본다.
5장, ‘쿠버네티스에 애플리케이션 배포하기’에서는 쿠버네티스의 객체 관리를 살펴보고, 객체 관리 기능으로 쿠버네티스에 워드프레스 블로그를 배포한다.
6장, ‘쿠버네티스로 구성 및 스토리지 관리하기’에서는 쿠버네티스의 구성과 스토리지 관리 방법을 학습한다.
7장, ‘쿠버네티스에서 애플리케이션 업데이트 및 확장하기’에서는 쿠버네티스에서 애플리케이션을 업데이트하고 확장하는 방법을 살펴본다.
8장, ‘쿠버네티스에서 애플리케이션 트러블슈팅하기’에서는 쿠버네티스에서 동작하는 애플리케이션에 문제가 생겼을 때 트러블슈팅하는 방법을 설명한다.
9장, ‘쿠버네티스에서 애플리케이션 모니터링하기’에서는 쿠버네티스에서 가장 일반적으로 사용되는 도구를 활용해 인프라 및 애플리케이션을 모니터링하는 다양한 기술을 소개한다.
부록은 독자가 책에 수록된 활동을 수행하도록 돕기 위한 내용으로 구성됐다. 또한 책에서 의도한 목표를 달성하는 데 필요한 상세한 내용을 담고 있다.

저자/역자 소개

지은이의 말

쿠버네티스와 데브옵스는 IT 인프라의 높은 성능을 보장해 비즈니스를 최고 수준으로 유지하게 하는 2개의 축이다.
이 책을 활용하면 쿠버네티스의 힘으로 데브옵스 환경을 향상할 때 필요한 스킬을 개발하는 데 도움이 될 것이다. 이 책은 쿠버네티스 기본 요소와 데브옵스 개념에 대한 개요에서 시작한다. 쿠버네티스가 다양한 실제 운영 이슈를 극복하는 데 어떻게 도움을 줄 수 있는지 이해할 수 있을 것이다. 클러스터 생성과 업그레이드에 익숙해지고, 쿠버네티스에서 애플리케이션을 배포, 업데이트, 확장하는 방법을 배운다. 이 장들을 진행하면서, 프로메테우스에서 파드 오류에 대한 경고 알림을 설정해 애플리케이션을 모니터링하는 방법을 배울 수 있다. 또한 슬랙 채널에 경고를 보내고, kubectl 커맨드를 사용해 애플리케이션의 문제를 추적하도록 알림매니저를 구성하는 방법도 안내한다.
끝까지 학습하고 나면 쿠버네티스에서 간단한 애플리케이션에서 복잡한 애플리케이션에 걸쳐 수명주기 관리에 자신감이 붙을 것이다.

지은이 소개

오누르 일마즈(Onur Yılmaz)

다국적 엔터프라이즈 소프트웨어 기업의 선임 소프트웨어 엔지니어다. CKA(Certified Kubernetes Administrator) 인증 보유자로, 사내에서는 쿠버네티스 및 클라우드 관리 시스템을 담당하고 있다. 또한 도커, 쿠버네티스, 클라우드 네이티브 애플리케이션을 비롯한 최신 기술에 깊은 관심이 있다. 공학 석사학위와 2개 분야의 공학 학사학위를 소지하고 있으며, 현재 박사학위 과정 중에 있다.

술레이만 아크바스(Süleyman Akbaş)

다국적 엔터프라이즈 소프트웨어 기업의 선임 소프트웨어 엔지니어다. 또한 CKA(Certified Kubernetes Administrator) 인증 보유자로, 쿠버네티스를 사용하는 클라우드 네이티브 프로젝트와 오픈소스 프로젝트에 참가하고 있다. 클라우드 네이티브 애플리케이션을 개발하고 관리하는 데 깊은 관심이 있다. 컴퓨터 과학 분야의 명예 학사학위를 소지하고 있으며, 현재는 헬싱키 대학교에서 컴퓨터 과학 석사학위 과정 중에 있다.

옮긴이의 말

IT 분야 종사자라면 데브옵스와 클라우드 네이티브라는 단어를 들어본 적이 있을 것입니다. 이 두 가지 개념은 IT 조직이 추구해야 할 패러다임으로 주목받고 있기도 합니다. 이들은 과연 무엇이며 이를 추구해 무엇을 얻을 수 있을까요?
데브옵스 철학은 개발과 운영의 장벽을 허물고 더 빠르고 유연하게 요구사항을 실현하는 골을 달성하는 데 의의를 두고 있습니다. 이를 통해서 조직의 의사결정 속도를 서비스가 따라가는 것을 넘어서 실패를 두려워하지 않는 조직으로의 변화를 추구하기도 합니다. 당연하게도 전통적인 IT 조직에서 이를 달성하기까지 많은 시행착오를 경험하게 됩니다. 이 중에서도 대표적인 것으로 조직 문화와 구축 방법론을 들 수 있습니다.
기존의 인프라와 애플리케이션, 혹은 개발과 운영과 같이 분리된 환경일수록 이들 간의 의사소통이 부족하면 할수록 요구사항, 즉 시장의 니즈를 반영하기 위한 최선의 결과물을 내놓기는 쉽지 않습니다. 각자가 처한 입장과 추구하는 가치의 차이가 존재하기 때문입니다.
이 책에서 다루는 구축과 배포, 운영 방법론의 경우 개발자가 인프라 영역까지 응용 프로그램 배포의 연장선으로써 다룰 수 있는 클라우드 환경의 활용을 검토하는 것이 일반적입니다.
클라우드 네이티브라는 개념은 여기서 빛을 발하게 됩니다. 클라우드 컴퓨팅 모델의 이점을 활용해 하나하나의 리소스를 하드웨어가 아닌 소프트웨어 컴포넌트로 인지하고, 기존의 개발자의 역할을 확장해 데브옵스 철학을 실현하기 위한 기반을 제공합니다.
CNCF(클라우드 네이티브 컴퓨팅 재단)는 조금 다른 방식으로 클라우드 네이티브를 정의하고 있습니다. 컨테이너화를 전제로 한 오픈소스 제품군으로 이루어진 생태계를 이용하는 것인데요. 이들은 클라우드 도입의 다음 단계에 해당하는 멀티 클라우드, 하이브리드 클라우드에도 대응할 수 있는 유연성을 강조합니다.
이 책은 기업 내에서 데브옵스를 달성하기 위한 방안으로 컨테이너 오케스트레이터인 쿠버네티스를 중심으로 한 오픈소스 기반을 제시합니다. 다음으로는 컨테이너 이용 방법을 시작으로 마이크로서비스 애플리케이션 구축을 위한 클러스터 생성, 응용 프로그램 배포, 업데이트 및 확장, 트러블슈팅 방법, 프로메테우스를 이용한 모니터링에 이르기까지 구성과 활용의 예시를 코드와 함께 구체적으로 다루고 있습니다. 즉, 데브옵스의 목적과 함께 이를 달성하는 한 축이 되는 구축 방법론을 이해하고, 실제 클라우드 네이티브 아키텍처를 설계하고 개발할 때 무엇을 고민해야 하는지 배울 수 있습니다.
데브옵스로 가는 기존의 조직체계와 기술에 익숙한 이들에게 끊임없는 고민과 변화를 요구합니다. 다행인 점은, 이 여정에 도움을 줄 수많은 아군이 존재한다는 것이 아닐까 합니다. 여러 클라우드 서비스 제공 업체의 등장, 컨테이너와 오픈소스 생태계의 확장과 함께 선택장애를 경험하게 될 것이므로 꼭 아군이 많아서 좋다고만 할 수 있을지는 의문이지만 말입니다. 그래도 수많은 선택지를 아군으로 두고 시스템의 전체 스택에 관여할 수 있게 된 것으로 결과물을 내놓는 보람과 주인의식은 이전보다 더 커지지 않았나 생각해 봅니다. 이 책이 여러분의 아군을 늘리는 데 도움이 되길 기대합니다.

옮긴이 소개

오주환

현재 일본 모 전자회사의 CCoE(Cloud Center of Excellence) 리더다. 클라우드 기반 검토와 지식, 아키텍처 사례의 전파, 멤버들의 성장지원으로 사내에서 진행되는 프로젝트의 클라우드 도입에 대한 허들을 낮추기 위한 활동을 수행 중이다. 플랫폼 아키텍처팀 매니저 겸임. 아직 경험하지 못한 것에 도전하기를 즐긴다. 최근에는 러시아 HSE의 데이터 사이언스 석사과정, 딸아이의 동네 친구들과 친분 쌓기를 병행하고 있으며 다양한 경험과 배움으로 삶의 자유도를 높이는 일에 관심이 있다.

목차

목차
  • 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: 쿠버네티스에서 경고 알림 설정하기
    • 요약

도서 오류 신고

도서 오류 신고

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

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

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