직접 해야만 알 수 있는 것들이 있다. 쿠버네티스도 마찬가지다. 쿠버네티스의 기반이 되는 컨테이너 기술은 기존의 가상 머신과 기본 전제부터 다르다. 실습으로 한땀한땀 채워나가면 처음에는 어렵고 낯설지만 금방 쿠버네티스에 익숙해질 수 있다. 실무에서는 쿠버네티스뿐만 아니라 네트워크, 스토리지, 모니터링, 리포지토리 등 다양한 쿠버네티스 도구가 함께 사용된다. 이 책은 총 24개의 장으로 구성돼 있고, 각 장마다 다양한 실습을 진행한다. 완전한 서비스를 제공하기 위해 필요한 모든 요소를 제공하며, 특히 퍼블릭 클라우드 환경뿐만 아니라 온프레미스 환경에서도 사용할 수 있는 다양한 예제를 다룬다. 벤더가 제공하는 퍼블릭 클라우드에 비해 온프레미스 환경은 관련 자료를 찾기 어려운데, 저자가 경험한 내용을 빠짐없이 담았다.
Contents
[1부] 쿠버네티스의 개념과 설치, 기본 관리 방법
▣ 01장: 쿠버네티스 개요와 클러스터 설치
01. 쿠버네티스란?
02. Kubespray를 이용해 3개의 노드로 구성된 클러스터 구축
03. K3s를 이용해 단일 노드로 구성된 클러스터 구축
04. 로컬호스트에서 원격 쿠버네티스 관리하기
__1.4.1 로컬호스트에 쿠버네티스 명령어 실행 도구인 kubectl 설치
__1.4.2 원격 클러스터 정보를 kubeconfig 파일에 등록
▣ 02장: 효율적인 쿠버네티스 클러스터 관리를 위한 kubectl CLI 환경 최적화
01. kubectl 자동 완성과 명령어 앨리어스 활용
02. 쿠버네티스 krew를 이용한 플러그인 관리
03. kube-ctx(컨텍스트), kube-ns(네임스페이스), kube-ps1(프롬프트) 활용
▣ 03장: kubectl 명령어로 익히는 쿠버네티스의 주요 오브젝트
01. NGINX 파드 실행과 배시 실행
02. 디플로이먼트의 파드 개수 변경과 삭제
03. 네임스페이스 생성
▣ 04장: YAML 파일을 이용한 쿠버네티스 오브젝트 관리
01. YAML 파일 익스포트 플러그인 kube-neat 설치
02. YAML 파일을 이용한 파드 배포
03. 쿠버네티스 YAML 템플릿 파일 검색 및 네이밍 규칙을 적용해 파일 저장하기
▣ 05장: 쿠버네티스 트러블슈팅의 기본 프로세스
01. 기본 에러 조치 프로세스의 이해: Apply - Get - Describe -Logs - Get Event 순으로 조치
02. 장애 처리 사례: 호스트 노드의 파일 시스템 용량 초과
▣ 06장: 헬름 기반으로 애플리케이션 설치하기
01. 헬름의 주요 구성 요소: 헬름 차트, 헬름 리포지토리, 헬름 템플릿
02. 헬름 차트를 이용한 NGINX 웹서버 설치
__6.2.1 헬름을 이용한 애플리케이션 라이프사이클 관리
__6.2.2 헬름 템플릿 변수 파일 사용하기
__6.2.3 리소스 Requests/Limits 이해
[2부] 쿠버네티스 네트워크 및 스토리지 인프라 환경 구성
▣ 07장: 쿠버네티스 서비스 사용하기
01. 클러스터 내부 파드 간 통신
__7.1.1 클러스터IP 타입의 서비스 생성
__7.1.2 서비스 디스커버리의 이해
02. 쿠버네티스 DNS 기능 이해
__7.2.1 CoreDNS 및 LocalDNS 설정 이해
__7.2.2 쿠버네티스 DNS의 Search 옵션 설정 이해
03. 클러스터 외부에서 내부의 파드 연결
__7.3.1 노드포트 타입의 서비스 생성
__7.3.2 부하분산 설정의 이해
▣ 08장: MetalLB를 이용한 로드밸런서 타입 서비스 구축
01. 헬름을 이용한 MetalLB 설치
02. MetalLB 파드 아키텍처 확인
__8.2.1 kubetail 설치
__8.2.2 MetalLB 파드 로그 확인
03. MetalLB 부하 테스트 및 고가용성 시나리오 검증
__8.3.1 k6를 이용한 부하 테스트
__8.3.2 노드 장애 시의 서비스 다운시간 측정
▣ 09장: Traefik을 이용한 쿠버네티스 인그레스 구축
01. Traefik 인그레스 컨트롤러 설치
02. 인그레스 테스트용 애플리케이션 설치
03. Traefik 인그레스 설정 테스트
__9.3.1 Traefik CRD를 이용한 인그레스 설정의 이해
__9.3.2 가상 호스트와 URL 경로에 따른 서비스 분기
__9.3.3 사용자 SSL/TLS 인증서 적용
▣ 10장: 쿠버네티스 스토리지
01. 쿠버네티스 영구볼륨, PVC, 스토리지 클래스의 이해
02. OpenEBS 로컬 호스트패스 설치
03. 스토리지 클래스를 이용한 PVC 및 영구볼륨 사용
04. 사용자 스토리지 클래스를 지정해 헬름 차트 MySQL 설치하기
05. 로컬 호스트패스 스토리지 클래스의 장점 및 제약 사항
__10.5.1 뛰어난 IOPS 성능 - Kubestr을 이용한 성능 측정
__10.5.2 스토리지 고가용성 구성 제약 - 노드 제거 테스트
▣ 11장: 스토리지 볼륨 스냅샷 사용하기
01. rook-ceph를 이용한 쿠버네티스 셰프 스토리지 설치
02. 워드프레스 블로그 애플리케이션의 설치 및 스냅샷 생성
__11.2.1 워드프레스 애플리케이션 설치
__11.2.2 스토리지 볼륨 스냅샷 생성
03. 스냅샷을 이용한 애플리케이션 데이터 복구
04. rook-ceph 스토리지의 가용성 테스트 및 IOPS 성능 측정
▣ 12장: 쿠버네티스 환경에서 공유 파일 스토리지 사용하기
01. 루크-셰프 이용한 공유 파일 스토리지 설치
02. 여러 파드에서 동시에 단일 파일 스토리지에 마운트하기
03. 스토리지 고가용성 테스트
[03부] 쿠버네티스 애플리케이션 배포 인프라 구축
▣ 13장: 하버를 이용한 로컬 컨테이너 이미지 저장소 구축
01. 헬름 차트를 이용한 하버 설치
02. 로컬 컨테이너 이미지를 원격 하버 이미지 저장소로 업로드
03. 쿠버네티스 YAML 파일의 컨테이너 이미지 저장소 주소를 로컬 하버로 변경
04. 컨테이너 이미지 업로드 시 자동으로 이미지에 대한 보안 스캔 기능 활성화
▣ 14장: 깃랩을 이용한 로컬 Git 소스 저장소 구축
01. 헬름 차트 기반으로 깃랩 설치
02. 로컬 쿠버네티스 YAML 소스코드를 원격 깃랩 저장소에 동기화
▣ 15장: 아르고시디를 활용한 깃옵스 시스템 구축
01. 헬름 차트를 이용한 아르고시디 설치
02. 아르고시디를 이용한 래빗엠큐 헬름 애플리케이션 배포
03. GitOps 실습: 클러스터 설정 내역 변경과 깃 저장소 자동 반영
[04부] 쿠버네티스 모니터링 및 로깅 시스템 구축
▣ 16장: 간단하게 사용할 수 있는 쿠버네티스 모니터링 도구
01. 메트릭 서버를 이용한 파드 및 노드의 리소스 사용량 확인
02. 명령어 기반 쿠버네티스 모니터링 도구 k9s
▣ 17장: 프로메테우스 - 쿠버네티스 모니터링 시스템
01. 헬름 차트 기반의 프로메테우스-스택 설치
02. 프로메테우스 아키텍처
03. 프로메테우스 웹 UI 활용: 상세 설정 내역 확인 및 모니터링 그래프 확인하기
▣ 18장: 그라파나 - 쿠버네티스 모니터링 대시보드
01. 프로메테우스-스택에 사전 포함된 그라파나 대시보드 사용하기
__18.1.1 그라파나의 기본 사용법
__18.1.2 기본 대시보드 확인
02. 그라파나 공식 홈페이지의 템플릿 대시보드 추가하기
03. NGINX 애플리케이션 모니터링 대시보드 추가: 프로메테우스 서비스모니터와 PromQL의 기본 사용법
▣ 19장: 얼럿매니저 - 쿠버네티스 경보 서비스
01. 프로메테우스와 얼럿매니저의 시스템 경보 기능
02. 시스템 경고 메시지 전달을 위한 슬랙 채널 및 웹훅 URL 생성
03. 얼럿매니저 설정 파일에 슬랙 웹훅 URL 등록
04. 얼럿매니저 기능 검증
__19.4.1 임의의 노드를 다운시킨 후 슬랙 채널 메시지를 확인
__19.4.2 시스템 경고 정책(prometheusrules)의 상세 내용 확인
__19.4.3 얼럿매니저의 일시 중지 기능 사용하기
05. 사용자 정의 prometheusrules 정책 설정: 파일시스템 사용률 80% 초과 시 시스템 경고 발생시키기
▣ 20장: 로키 - 쿠버네티스 로깅 시스템
01. 로키 시스템의 구조와 설치
02. 로키를 이용한 쿠버네티스 로그 검색
03. LogQL 사용법 익히기: 특정 네임스페이스의 로그 및 정규 표현식을 이용한 로그 검색
[05부] 쿠버네티스 보안 시스템 구축
21장: 쿠버네티스 보안 도구 활용
01. kubescape - NSA/CISA 프레임워크 기반 보안 점검 도구
02. 폴라리스 활용
__21.2.1 레디스 헬름 차트 설치
__21.2.2 폴라리스 설치 및 레디스의 보안 취약점 확인
▣ 22장: 역할 기반 접근 제어(RBAC) 설정
01. Role/RoleBinding과 ClusterRole/ClusterRoleBinding 이해
02. ServiceAccount와 User, kubeconfig 파일 이해: 특정 네임스페이스 권한만 가지는 사용자 생성
03. 멀티테넌시 환경의 쿠버네티스 구성: 사용자별 네임스페이스 단위의 권한 제한
[06부] 실제 서비스 운영에 필요한 기술
▣ 23장: 애플리케이션 부하 테스트와 고가용성 테스트
01. 데모 용도의 방명록 서비스 설치
02. k6를 이용한 웹 부하 테스트
03. 애플리케이션 고가용성 테스트
__23.3.1 특정 노드 내에서 실행 중인 모든 파드 종료하기
__23.3.2 파드 삭제 및 노드 종료 시 서비스 이상 여부 검증
▣ 24장: 쿠버네티스 노드 변경과 추가
01. 컨트롤 플레인 노드 변경과 워커 노드 추가
Author
이정훈
삼성 네트웍스(현 SDS), DELL, SPK 등에서 시스템 운영과 기획 업무를 담당했다. 현재는 음성인식 및 대화분석 스타트업인 아틀라스랩스에서 DevOps 엔지니어로 일하고 있다. 은퇴할 때까지 콘솔 잡는 엔지니어를 목표로 천천히 생각하고 일한다. 책을 읽고 글 쓰는 것을 즐기며 야구 경기를 보고 직접 야구하는 것을 좋아한다.
"IT 엔지니어는 늘 빚지고 있다고 생각합니다. IT 지식을 기꺼이 공유하는 다른 이들의 소중한 경험이 없었다면 어쩌면 저는 오늘 한 줄의 명령어도 입력하기 어려웠을 겁니다. 조금이라도 빚을 갚는다는 생각으로 블로그(https://jerryljh.tistory.com/)를 운영하고 있습니다."
삼성 네트웍스(현 SDS), DELL, SPK 등에서 시스템 운영과 기획 업무를 담당했다. 현재는 음성인식 및 대화분석 스타트업인 아틀라스랩스에서 DevOps 엔지니어로 일하고 있다. 은퇴할 때까지 콘솔 잡는 엔지니어를 목표로 천천히 생각하고 일한다. 책을 읽고 글 쓰는 것을 즐기며 야구 경기를 보고 직접 야구하는 것을 좋아한다.
"IT 엔지니어는 늘 빚지고 있다고 생각합니다. IT 지식을 기꺼이 공유하는 다른 이들의 소중한 경험이 없었다면 어쩌면 저는 오늘 한 줄의 명령어도 입력하기 어려웠을 겁니다. 조금이라도 빚을 갚는다는 생각으로 블로그(https://jerryljh.tistory.com/)를 운영하고 있습니다."