-
-
한 권으로 배우는 도커 & 쿠버네티스 - 컨테이너 개념부터 쿠버네티스를 활용한 배포까지
장철원 지음 / 한빛미디어 / 2024년 4월
평점 :
네이버 블로그 리뷰: https://blog.naver.com/rock1192/223444363075
이 책은 혼자 도커와 쿠버네티스를 학습하는 독자를 대상으로 하며 도커와 쿠버네티스를 익히는데 필수적인 내용 위주로 구성되어있다
이 책이 도커와 쿠버네티스의 개념을 정확히 이해하고 수월하게 사용할 수 있게 도움을 줄 것이다
도커와 쿠버네티스를 학습해본 적이 없다면 기초 개념을 익해하는 것이 중요하다
도커와 쿠버네티스의 기본 개념과 역할을 확실히 이해한 후에 실습을 진행하기 바란다
1장 실습 환경 구축하기
우분투 이미지 다운로드, 버추얼박스 설치, 가상머신 생성 등 실습을 위해 필요한 환경을 구축
1부 도커
2장 도커의 개념
운영체제, 네임스페이스 등 도커 학습을 위해 필요한 기초 사전 지식을 익히고 도커의 기본 개념이 되는 컨테이너에 대해 학습한다
3장 도커 설치
4장 도커 기초
도커 이미지와 도커 컨테이너와 같은 개념을 익히고 도커 기초 명령어와 도커 운영에 필요한 네트워크, 스토리지 관련 내용을 학습한다
5장 도커를 활용한 django 실행
앞에서 학습한 도커 기초 내용을 응용해 django를 실행한다
6장 도커를 활용한 Flask 실행
앞에서 학습한 도커 기초 내용을 응용해 Flask를 실행한다
2부 쿠버네티스
7장 쿠버네티스의 기본 구조
쿠버네티스의 역할 및 구성 요소를 익히고 쿠버네티스 구조를 배운다
8장 쿠버네티스 실습 환경 구축
쿠버네티스 실습을 위해 가상머신에 쿠버네티스 클러스터를 구축한다
9장 쿠버네티스 기초
쿠버네티스 운영을 위한 디플로이먼트, 서비스, 스토리지 볼륨, 스테이트풀셋, 인그레스, 잡과 크론잡 등과 같은 쿠버네티스 기초 내용을 학습한다
10장 쿠버네티스를 활용한 웹 서비스 배포
앞에서 배운 쿠버네티스 기초 내용을 바탕으로 django 및 Flask 등을 활용하여 웹 서비스를 배포해본다
11장 깃허브 액션과 ArgoCD를 활용한 CI/CD
깃허브 액션과 ArgoCD를 활용하여 CI/CD를 진행한다
12장 쿠버네티스 모니터링
매트릭 서버, 프로메테우스, 그라파나, 로키 등을 활용하여 쿠버네트스 클러스터를 모니터링하는 방법을 학습한다
이 책에서는 버추얼박스를 설치하고 가상머신을 생성해서 각 가상머신에 도커와 쿠버네티스를 설치하면서 실습을 진행한다
챕터1에서 우분투 리눅스 이미지를 다운로드 하고 버추얼 박스 설치와 가상머신을 생성하고 실습을 위해 필요한 환경을 차근 차근 구축 해본다
환경이 구축된 다음에는 우분투 운영체제의 텍스트 편집기인 vim의 기본 사용법과 우분투 기초 명령어를 학습한다
챕터2는 도커를 학습하기 위해 필요한 사전 지식과 도커에 관련된 기본 개념으로 구성되어 있다
도커 학습을 위한 사전 지식에는 운영체제, 프로그램, 프로세스, 스레드, 네임스페이스 등이 있는데 이 개념들을 정확히 이해해야 도커라는 도구를 자유롭게 다룰 수 있다
도커의 정의를 살펴보고 도커의 필수 개념인 컨테이너 및 가상화에 대해 배우고 도커의 구성 요소를 학습한다
챕터 4에서는 도커와 관련된 기초 지식을 배우고 실습한다
먼저 도커의 구성 요소와 작동 방식을 배우고 컨테이너로 실행하는 데 필요한 내용을 학습한다
그다음 이 과정에서 알아야 할 도커의 다양한 명령어를 익히고 도커 네트워크, 스토리지와 관련된 내용을 실습해본다
도커 구성 요소
docker-cli: 도커 클라이언트, 명령어 행으로 dockerd API를 활용해 build, pull, run과 같은 명령어를 내림
dockerd: 도커 데몬, 백그라운드에서 실행되는 데몬 프로세스에 해당함
containerd: 컨테이너 실행과 관리에 필요한 기능을 수행하는 오픈 소스 컨테이너 런타임(컨테이너의 생명주기를 모두 관리)
containerd-shim: container와 runc 사이에서 작동하는 중간 프로세스(컨테이너 실행을 조정하는 역할)
runc: 컨테이너 실행과 관련된 작업을 수행하는 저수준 컨테이너 런타임
도커를 사용하기 위해서는 도커 명령어를 필수적으로 숙지하고 있어야 한다
책에서 소개하는 도커 이미지 명령어와 도커 컨테이너 명령어를 살펴보고 반복적으로 실습해본다
챕터 5에서는 챕터 4까지 공부한 도커의 기초 명령어와 기능을 활용하여 django를 활용한 웹 서비스를 실행한다
pyenv를 활용해 파이썬 가상 환경을 구축하고 YAML 파일의 개념에 대해 학습해보고 Docker Compose를 활용해 웹 서비스를 실행해본다
챕터 6에서는 Flask를 활용해 웹 서비스를 실행해본다
전체적인 실습 과정은 챕터 5와 비슷하지만 django를 활용할 때와 Flask를 활용할 때의 차이점에 주안점을 두고 실습해본다
동일하게 Flask를 활용할 때도 사용하는 소프트웨어 종류에 따라 사용하는 방법의 차이가 존재한다
챕터 7에서 챕터 12까지는 쿠버네티스에 대한 내용을 다룬다
챕터 7에서는 쿠버네티스의 기본 개념과 구조에 대해서 배운다
챕터8 에서는 쿠버네티스 실습 환경을 구축해본다
쿠버네티스를 설치할 때는 쿠버네티스를 곧바로 설치하는 것이 아니라 사전에 준비해야 하는 사항이 있다
사전 준비 사항을 갖추지 않고 쿠버네티스를 설치한다면 설치에 실패하는 경우가 발생할 수 있으니 미리 실습 환경을 잘 구축해야 한다
챕터 9에서는 쿠버네티스의 기초 개념과 명령어에 대해 학습한다
먼저 쿠버네티스의 전체적인 구성을 살펴보고 디플로이먼트, 서비스, 스토리지 볼륨, 스테이트풀셋, 인그레스, 잡, 크론잡과 같은 다양한 워크플로에 대해서 실습해본다
하나의 애플리케이션을 실행하려면 다수의 yaml 파일을 관리해야 하는데 이때 헬름을 활용하면 유용하다
헬름으로 쿠버네티스 클러스터에 애플리케이션 배포를 위해 필요한 파일들을 하나의 패키지 형태로 관리할 수 있기 때문이다
헬름은 리눅스 환경에서의 apt, yum과 비슷한 개념이다
헬름을 활용하면 yaml 파일을 만들지 않고도 쿠버네티스 환경에서 애플리케이션을 쉽고 편하게 설치할 수 있다
헬름 차트는 쿠버네티스 리소스를 생성하기 위해 필요한 파일을 모아놓은 디렉터리라고 할 수 있다
헬름 템플릿인 values.yaml 파일을 활용하면 설치에 필요한 여러 변수를 한 번에 설정할 수 있고 쿠버네티스 리소스를 최적화하기에도 쉽다
헬름 리포지토리는 다양한 헬름 차트를 저장 및 공유하는 저장소이다
헬름 리포지 토리는 도커 리포지토리와 비슷한 개념이다
책에서는 그림을 통해 헬름의 개념을 쉽게 이해할 수 있도록 도움을 주고 있다
인그레스로 두개의 서비스를 배포하기 위한 인그레스 yml 파일을 작성하는 과정이다
작성된 yml 파일을 통해 인그레스로 두 개의 서비스가 어떻게 배포되는지 구체적인 아키텍처 그림을 통해 잘 설명 해주고 있다
챕터 10에서는 쿠버네티스를 통해 django와 Flask를 실행해본다
쿠버네티스의 기본 개념이 기반이 되므로 앞서 배운 내용을 정확히 이해하는 것이 매우 중요하다
쿠버네티스를 통해 서비스를 배포하고 서비스가 잘 구동되었는 지 확인 해볼 수 있으며 최종적으로 실습 내용을 정리해본다
챕터 11에서는 CI/CD에 대해 학습한다
챕터 10에서는 단순히 내가 만든 서비스를 실행하는 데 집중했다면 챕터 11에서는 작성한 소스코드를 지속적으로 통합하고 전달하는 과정에 대해 배운다
GitHub Actions와 ArgoCD를 활용한다
GitHub Actions를 통해서 도커 테스트는 가능하지만 쿠버네티스를 활용한 애플리케이션 배포는 다소 어려운 측면이 있다
이를 해결하기 위해 나온 것이 ArgoCD이다
ArgoCD는 쿠버네티스 애플리케이션의 자동 배포를 가능하게 해주는 오픈소스 소프트웨어이다
ArgoCD를 활용하면 쿠버네티스 클러스터의 애플리케이션을 지속적으로 관리하고 배포할 수 있다
챕터 12에서는 모든 노드를 관리할 수 있는 쿠버네티스 모니터링에 대해 학습한다
쿠버네티스 클러스터가 커질수록 쿠버네티스 클러스터를 구성하는 모든 노드를 관리하는 것은 쉬운 일이 아니다
쿠버네티스 클러스터 전체를 모니터링할 수 있는 방법을 고안
매트릭 서버를 활용해 리소스 사용량을 확인하는 방법
프로메테우스를 통해 모니터링 데이터를 수집하는 방법
그라파나를 통해 모니터링 데이터를 시각화하는 방법
로키를 활용해 쿠버네티스 로그를 확인하는 방법
기존 리눅스 서버에 수동으로 구성해서 운영하고 관리하던 방식에서 이제 점점 도커와 쿠버네티스와 같은 컨테이너 환경의 대규모 운영/배포가 가능한 방식이 점점 표준으로 자리잡아 나가고 있다
서비스는 매우 빠르게 발전하고 그에 맞춰서 서비스를 운영하는 방식은 발전해나가야 하므로 어찌보면 당연한 일이다
수십 수백명의 사용자가 사용하는 서비스에서 수천만명을 넘어 수억명의 사용자가 사용하는 글로벌 서비스로 발전해나가는 서비스를 뒷받침하기 위해서는 엔지니어가 일일히 수동으로 서버를 셋팅하고 운영하는 방식으로는 한계점이 명확하다
도커 컨테이너 환경과 쿠버네티스가 표준 서비스 운영환경으로 자리잡아 가는 이유는 명확하다 인적 리스크를 줄이고 서비스 운영/배포의 효율성을 극대화 한다
클라우드를 활용해 스크립트 구성을 잘만한다면 단 한명의 엔지니어의 손으로 수천만명이 사용하는 서비스를 앉은 자리에서 뚝딱 생성해낼 수 있게 하는 것이 바로 컨테이너 환경의 장점이다
또한 CI/CD 구성으로 수천 수만개의 서버를 동시에 배포할 수도 있고 단지 명령어와 스크립트 하나만으로 서비스를 뚝딱 생성해낼 수도 있다
또한 컨테이너 환경의 서버구성은 스크립트를 살펴보는 것만으로도 모든 서버 구성을 한번에 파악할 수 있는 장점도 있다
쿠버네티스 배포 스크립트가 바로 서버와 서비스 명세서나 다름 없기 때문이다
도커와 쿠버네티스의 기초가 없는 사람이라도 이 책을 통해 도커와 쿠버네티스로 서비스를 올려보면서 컨테이너 환경에 대해 이해할 수 있다
이 책은 도커와 쿠버네티스의 입문자를 대상으로 하기 때문에 다양한 아키텍처 그림과 스크립트를 통해 매우 직관적으로 이해하기 쉽게 설명을 한다
또한 실습을 진행하는 동시에 명확설명을 통해 스탭별로 부분 부분 모두 이해하고 넘어 갈 수 있도록 도와주는 것이 이 책의 가장 큰 특징이다
때문에 이 책을 보면서 단계별로 실습을 하고 내용을 정확하게 이해한다면 도커와 쿠버네티스 환경에 대해 완벽하게 이해할 수 있을 것이다
※ 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.