쿠버네티스 교육/쿠버네티스 책 출간 준비

쿠버네티스 책 출간 준비 - 목차 관련 의견 구함

Jerry_이정훈 2021. 9. 1. 15:24
728x90

아직 잘 안 믿기는데 지난 8월 27일 금요일 위키북스 출판사로 부터 쿠버네티스 관련 책 출간 제의를 받았다. 내가 쿠버네티스 교육을 하면서 정리한 자료 중에서 아래 쿠버네티스 교육 관련 블로그 개요 및 목차를 보고 연락 하셨다.

https://jerryljh.tistory.com/12

 

00. Kube 교육 - 개요 및 목차

Why Kube 교육 제가 생각하기에 기업 환경의 Kubernetes 도입의 핵심은 내재화 입니다. 기존 상용 Solution 혹은 SI Project 처럼 ‘명령어는 업체가 고객은 지시만(라고 쓰고 갈구기)’ 하면 100% 망합니다.

jerryljh.tistory.com

지금 책 목차를 편집자 분과 의논을 하고 있다. 물론 아직 아무런 공식 계약을 한 게 아니어서 출간되지 않을 가능성도 많다. (샘플 원고 검토라는 큰 산이 남아 있다.) 하지만 나름 실패도 기록하는게 의미 있을 것 같아, 이렇게 공개적인 블로그에서 시건방을 떨어 본다. 

 

혹시 블로그 방문자 중에 아래 목차를 보고 쿠버네티스 책에 포함해야 할 목차에 추가해야 할 것 또는 어떤 부분이 흥미있을지 등에 대한 생각이 있으면 자유롭게 의견을 부탁 드립니다. 지인 중에는 kube-virt, 프로메테우스 custom metrics, k9s 추가 등의 의견이 있었다. 그리고 너무 다루는 게 방대한데 책 한 권에 가능하냐는 의견도 많았다. (분량은 나도 책 출간이 당연히 처음이라 아무런 개념이 없다. 1권, 2권이 될수도 있을 것 같고)

 

메일, 답글 무엇이든 가능합니다. 메일 주소 : leejunghoon@spkr.co.kr

(혹은 아래의 목차로 기업 방문 교육이 필요하시면 연락 주셔도 됩니다.)

 

목적은 온프레미스에 쿠버네티스 및 관련 오픈소스 스택(gitlab, harbor, metallb, openebs, rook-ceph 등)까지 기본 운영 레벨에 필요한 환경 구성을 다루는 것이다.

 

목차만 읽어보고도 독자가 어떤 도움을 받을 수 있을지 아는 것인데 의도가 잘 반영되는지 모르겠다.

 

DAY 1 쿠버네티스 클러스터 구축하기

A. 쿠버네티스 실습 환경 구축과 기본 명령어 익히기

1. 쿠버네티스 클러스터 구축하기
1.1 개요
1.2 로컬 호스트 기본 환경 준비하기
1.3 비주얼 스튜디오 코드(VSCode),  WSL(Windows Subsystem for Linux), 윈도우 터미널 설치하기
사용 팁 공유
1.4 Kubespray를 이용하여 3개의 노드로 구성된 클러스터 구축하기
1.5 K3S를 이용하여 단일 노드로 구성된 클러스터 구축하기
1.6 로컬호스트에서 원격 쿠버네티스 관리하기
1.6.1 로컬호스트에 쿠버네티스 관리 도구 Kubectl 설치하기 
1.6.2 원격 클러스터 정보 로컬 호스트 등록하기 ($HOME/.kube/config 파일 수정하기)

2. 쿠버네티스 클러스터 관리 업무 효율화를 위한 Kubectl CLI 환경 최적화하기
2.1 개요
2.2 Kubectl 자동 완성 기능 및 사용자 지정 명령어 앨리어스(alias) 사용하기
2.3 Kubectl CLI 플러그인 매니저로 사용하는 쿠버네티스 크루(krew) 설치하기
2.4 Kubectl CLI 플러그인 kube-ctx(context), kube-ns(namespace), kube-ps(prompt status) 사용하기

3. Kubectl CLI 기본 명령어 사용하기
3.1 Kubectl CLI를 이용하여 NGINX 파드 및 디플로이먼트 실행하기 
3.2 실행 중인 파드 리스트 확인하기
3.2.1 네임스페이스 별 파드 리스트 확인하기
3.2.2 컨트롤 플레인(control plane)에서 사용 중인 파드의 주요 기능 확인하기
3.3 실행 중인 파드의 개수 변경하기 (50개 -> 0개 -> 1개)
3.4 NGINX 파드 및 디플로이먼트 삭제하기
3.4.1 쿠버네티스 선언형 상태(Desired State) 관리 개념 이해 
3.5 개별 파드에 쉘(sh) 명령어 실행하기

 

4. YAML 파일을 이용하여 쿠버네티스 오브젝트 관리하기
4.1 개요
4.2 Kubectl CLI 플러그인 kube-neat 설치하기
4.2.1 Kubectl CLI를 이용하여 Busybox 파드 배포하기
4.2.2. kube-neat를 사용하여 실행 중인 파드를 YAML 파일로 익스포트 하기
4.3 YAML 파일을 이용하여 파드 배포하기
4.3.1 Busybox 파드의 커맨드 옵션 YAML 파일을 수정하여 Busybox 파드 배포하기
4.3.2 NGINX 컨테이너 이미지 버전을 1.19.8으로 수정하여 NGINX 파드 배포하기
4.4 쿠버네티스 오브젝트 YAML 파일 깃(Git) 리포지토리 구축하기

5. 쿠버네티스 트러블슈팅 기본 프로세스 이해하기
5.1 개요
5.2 에러 상황 발생 시 기본 조치 프로세스의 이해
: Apply - Get - Describe -Log - Events 순으로 조치
5.3 파드 상세 정보 확인하기
5.4 파드 상세 로그 확인하기
5.5 클러스터 이벤트 확인하기
5.5.1 warning 메시지 필터링 및 시간 순서 정렬하기 

B. 쿠버네티스 네트워크 & 스토리지 인프라 환경 구성하기

6. 쿠버네티스 서비스 사용하기
6.1 개요
6.2 외부 클라이언트에서 클러스터 내부 파드로 연결하기
6.2.1 NGINX 디플로이먼트 레이블 설정하기
6.2.2 노드포트 타입 서비스 생성하기
6.3 클러스터 내부 파드 간 상호 통신하기
6.3.1 워드프레스 블로그 애플리케이션 설치하기
6.3.2 ClusterIP 타입 서비스 생성하기
6.3.4 웹 - 데이터베이스 파드 간 연결하기
6.4 서비스 디스커버리 이해하기
6.4.1 쿠버네티스 DNS 이해하기
6.4.2 CoreDNS 및 LocalDNS 설정 이해하기
6.4.3 DNS 내부 search 옵션 설정 이해하기

7. MetalLB를 이용하여 로드밸런서 타입 서비스 구축하기
7.1 개요
7.2 헬름 차트 기반으로 MetalLB 설치하기
7.3 로드밸런서 타입 서비스 생성하기
7.4 MetalLB 파드 아키텍쳐 확인하기
7.4.1 복수의 파드 로그를 동시에 확인 할 수 있는 Kubectl CLI 툴 kube-tail 설치하기
7.4.2 MetalLB 파드 로그 확인하기
7.5 MetalLB 페일오버 시나리오 검증
: 노드 리부팅 시 애플리케이션 장애 시간 측정 하기

8. Traefik을 이용하여 쿠버네티스 인그레스 구축하기
8.1 인그레스 개요
8.2 Traefik 설치하기
8.3 사용자 요청 별 백엔드 분기 설정하기
8.3.1 복수의 도메인 호스트 및 URL 경로 목록에 따라 백엔드 분기
8.3.2 IP 포트 목록에 따른 백엔드 분기
8.4 사용자 TLS 인증서 설치하기

9. 쿠버네티스 스토리지 사용하기
9.1 개요
9.2 컨테이너 휘발성(Peripheral) 디스크 특성 이해하기
9.3 쿠버네티스 영구 볼륨(Persistent Volume) 사용하기
9.3.1 OpenEBS-Hostpath 설치하기
9.3.2 스토리지 클래스(Storage Class) 지정하여 PVC(Persistent Volume Claim) 생성하기
9.3.3 Busybox 파드 내 디렉토리 마운트 포인트를 PVC로 지정하기
9.4 스토리지 IOPS 성능 측정하기
9.5 OpenEBS-Hostpath 제약 사항 확인하기


10. 쿠버네티스 스토리지 스냅샷 기능 사용하기
10.1 rook-ceph 스토리지 설치하기
10.2 스냅샷 기능 검증 용도로 워드프레스 블로그 애플리케이션 설치하기
10.2.1 스토리지 클래스 옵션을 rook-ceph-block으로 지정하기
10.2.2 테스트 용 블로그 페이지 생성하기
10.3 스토리지 스냅샷 생성하기
10.3.1 스냅샷을 이용하여 애플리케이션 데이터 복구하기
10.3.2 PVC 삭제 후 워드프레스 블로그 서비스 이상 유무 확인하기
10.3.3. 저장된 스냅샷을 이용하여 기존 PVC 복구 후 서비스 이상 유무 확인하기
10.4 rook-ceph 스토리지 가용성 테스트 및 IOPS 성능 측정하기


11. 쿠버네티스 환경 공유 스토리지(NAS) 사용하기
11.1 NAS 지원 rook-cephfs 타입 스토리지 클래스 생성하기
11.2 쿠버네티스 파드 나스 기능 검증하기
11.2.1 NGINX 디플로이먼트 실행하기
11.2.2 NGINX 디폴트 웹 홈디렉토리(/var/www/root) rook-cephfs PVC 마운트
11.2.3 디플로이먼트 레플리카 5개 설정

C. 쿠버네티스 애플리케이션 배포 관련 인프라 구축하기

12. 쿠버네티스 환경 애플리케이션 설치하기
12.1 개요
12.2 헬름 차트 기반으로 애플리케이션 설치 및 쿠버네티스 애플리케이션 환경 설정
12.2.1 MySQL 설치
12.2.2 쿠버네티스 컨피그맵 및 시크릿 이해하기
12.2.3 쿠버네티스 레디니스/라이브니스/스타트업 프로브 이해하기
12.2.4 레디스 설치
12.2.5 노드 어피니티/안티 어피니티 이해하기
12.2.6 패스워드 변수 변경 이 후 애플리케이션 재설치 하기

13. 프라이빗 컨테이너 이미지 저장소 구축하기 
13.1 개요
13.2 헬름 차트 기반으로 하버(Harbor) 설치하기
13.3 도커 명령어를 이용하여 도커 이미지를 하버로 푸시하기
13.4 YAML 파일 내 컨테이너 이미지 저장소 하버로 변경하기
13.5 컨테이너 이미지 저장 시 자동으로 이미지 보안 스캔 설정하기

14. 프라이빗 깃(Git) 소스 코드 저장소 구축하기
14.1 개요
14.2 헬름 차트 기반으로 깃랩(GitLab) 설치
14.3 로컬 YAML 소스 코드를 깃랩을 이용하여 관리하기


15. ArgoCD을 이용하여 GitOps 시스템 구축하기
15.1 GitOps 개요
15.2 ArgoCD 설치하기
15.3 GipOps 기반 디플로이먼트 및 헬름 차트 애플리케이션 배포

D. 애플리케이션 부하 및 고가용성 테스트를 통한 애플리케이션 안정성 검증하기


16. 애플리케이션 부하 및 고가용성 테스트
16.1 개요
16.2 웹 트래픽 부하 테스트 툴 k6를 이용하여 애플리케이션 부하 테스트 실행하기
16.3 애플리케이션 고가용성 테스트
16.3.1 특정 노드 내 실행 중인 모든 파드 종료하기(drain)
16.3.2 파드 삭제 및 노드 리부팅 시 애플리케이션 이상 여부 검증하기

DAY 2 쿠버네티스 클러스터의 안정적인 운영

A. 쿠버네티스 모니터링 및 로깅 시스템 구축하기


17. 간단하게 사용 할 수 있는 쿠버네티스 모니터링 툴
17.1 Metric 서버 설치를 통한 파드 및 노드 리소스 사용량 확인
17.2 쿠버네티스 모니터링 툴 k9s와 렌즈(Lens) 이용


18. 쿠버네티스 모니터링 시스템 프로메테우스(Prometheus) 사용하기
18.1 Prometheus-Stack 개요
18.2 헬름 차트 기반으로 prometheus-stack 설치 하기
18.3 프로메테우스 웹 UI 사용하기
18.3.1 파드 및 노드 CPU, Memory 등 리소스 사용량 확인하기


19. 그라파나(Grafana) - 쿠버네티스 모니터링 대시보드
19.1 그라파나 대시보드 사용하기
19.1.1 전체 Node 리소스 사용량 확인하기
19.2 전체 파드 또는 네임스페이스 등 개별 오브젝트 단위 리소스 사용량 확인하기
19.3 그라파나 공식 홈페이지 템플릿 대시보드 추가하기
19.4 그파라나 대시보드 커스터마이징

20. Alert Manager - 쿠버네티스 Alert 시스템
20.1 Alert Manager 사용하기
20.2 Alert 용도 이메일 계정 연동 및 슬랙 채널 추가하기
20.3 Alert 시스템 사용하기
20.3.1 Alert 메시지 확인하기
20.3.2 Alert 메시지 임시 중지 설정 

21. 로키(Loki) - 쿠버네티스 로깅 시스템
21.1 개요
21.2 헬름 차트 기반으로 Loki 설치하기
21.3 그라파나 로키 데이터소스 추가하기
21.4 쿠버네티스 로그 확인하기
21.4.1 개별 파드 별 로키 대시보드 로그 확인하기
21.4.2 종료된 파드 로그 확인하기
21.5 로그 메시지 쿼리(Query)
21.5.1 Warning 레벨 로그, 특정 네임스페이스 로그 등 로그 상세 검색


B. 쿠버네티스 보안 시스템 구축하기

22. 쿠버네티스 보안 툴 활용하기
22.1 쿠버네티스 보안 벤치마크 툴 kube-bench를 이용하여 CIS(인터넷 보안센터) 쿠버네티스 벤치마크 실행하기
22.2 쿠버네티스 포트 보안 취약점 스캔하기(kube-hunter 이용)
22.3 쿠버네티스 보안 툴 폴라리스(Polaris) 사용하기
22.3.1 현재 운영 중인 파드의 보안성, 가용성, 리소스 측면 대시보드 확인하기
22.3.2 레디스 파드의 보안 취약점 제거하기

23. 역할기반 접근제어(RBAC, Role Based Access Control) 설정하기
23.1 특정 네임스페이스에 한정하여 권한을 가지는 사용자 생성하기
: 파드, 볼륨, 서비스 등의 선택된 오브젝트에 대하여 Create/Get/List 등 특정 권한 부여

C. 쿠버네티스 클러스터 버전 업그레이드 및 노드 추가/삭제 하기


24. 클러스터 버전 업그레이드 및 노드 추가/삭제하기
24.1 쿠버네티스 버전 업그레이드 작업 실행하기
24.2 특정 노드를 클러스터 추가 및 삭제하기

반응형