[쿠버네티스 어나더 클래스-지상편] 3. 실무에서 느껴본 쿠버네티스가 정말 편한 이유
쿠버네티스 표준 생태계로 편해진 IT인프라 구축
쿠버네티스가 나온 지 10년도 안됐는데 수많은 제품들이 쿠버네티스 생태계 위에서 돌아감
스페셜은 쿠버네티스 관련 업체들과 교육 파트너이고, 카오스 엔지니어링, 최적화 부분은 메인이 아니라서 빼면 아래와 같이 정리할 수 있음
참고: CNCF, CNCF landscape
CNCF에서는 CNCF 프로젝트와 CNCF 멤버, 비멤버 제품으로 구분하고 있음
멤버와 비멤버의 차이는 CNCF에 회비를 내면서 제품 홍보나 등급별로 혜택을 받을 수 있나없나의 차이임
비멤버라도 표준 생태계에 영향력 있는 제품들이 많다
CNCF에 기여된 프로젝트는 성숙도에 따라 4가지 종류가 있다
- Graduated Projects
- Incubating Projects
- Sandbox Projects
- Archived Projects
위의 4가지 프로젝트에서 실험단계인 Sandbox와 비활성화된 Archived 프로젝트를 빼고
Graduated 이지만 GItHub에서 Stars 수가 낮은 것을 제외하고 Incubating 이지만 Stars 수가 높은 것만 포함해서 보면 아래와 같이 좁혀짐
CNCF 비멤버 제품 중 GitHub Stars 수가 높은 제품들은 아래와 같음
위에서 추린 내용들을 정리해보면 아래와 같이 정리할 수 있음
- 개발
- 기존부터 해왔던 App 개발에서 배포까지 써야되는 기술
- 오케스트레이션/매니징
- App을 마이크로서비스로 만들때 쓰면 좋은 기술
- 플랫폼, 런타임
- App을 클라우드로 올릴 때 주로 사용되는 기술
- 프로비저닝, 분석
- 실제 프로젝트에서 써야되는 기술
실제 프로젝트를 할 때 구조적인 문제 (모니터링/로깅)
- 개발과 모니터링 시스템이 서로 엮일 수 밖에 없는 구조
- 개발에서는 한번도 써보지 않은 (개발 시스템을 위한) 모니터링 시스템을 만드는 구조
- 오픈시 개발 프로젝트와 서로 다른 범위의 App들을 모니터링 하게 되는 구조
쿠버네티스의 모니터링과 로깅 툴들을 사용하면 아래와 같이 개선할 수 있음
- 개발과 모니터링 시스템이 서로 엮이지 않는 구조
- 개발 초기부터 바로 쓸 수 있는 모니터링 시스템을 만드는 구조
- 오픈 시 개발 프로젝트와 자동으로 같아지는 범위의 App들을 모니터링 하게 되는 구조
Kubernetes 모니터링 설치
- 모니터링 설치 카페 링크: https://cafe.naver.com/kubeops/30
- 참고 링크
Kubernetes Dashboard에 App 체험 배포
- 체험 App 배포 실습
-
- App 배포 환경 구성하기
-
쿠버네티스 기능으로 편해진 서비스 안정화
- 체험 App 배포 실습
-
- App에 지속적으로 트래픽 보내기 (Traffic Routing 테스트)
-
- App에 Memory Leak 나게 하기 (Self-Healing 테스트)
-
- App에 부하주기 (AutoScaling 테스트)
- 5-1. App 이미지 업데이트 (RollingUpdate 테스트)
- 5-2. 기동되지 않는 App 업데이트 (RollingUpdate 테스트)
-
- 강의에서 배포한 Object 삭제
-
- 쿠버네티스 환경에서는 VM에서 수동으로 했던 작업들을 자동으로 적용을 해준다
- 개발 기간동안 성능 테스트를 하면서 자동화된 동작들에는 문제가 없다는 걸 계속 보고 검증하게 됨
- 파드 안에 설정들이 다 들어있기 때문에 스케일링된 파드 하나만 설정에 실수가 생기는 일이 발생하기 힘듬
- 쿠버네티스 환경이 관리자 입장에서 빠른 의사결정과 실행을 할 수 있게 해준다
인프라 환경 관리의 코드화
인프라 설정을 수동으로 하는 거랑 파드에 인프라 설정이 코드로 들어가서 자동으로 되는 차이가 인프라 환경 관리를 정말 편하게 해줌
쿠버네티스, 인프라 환경 관리의 장점
- 인프라에 대한 History 관리가 편해짐
- 인프라 작업 추적 가능
- 인프라 환경별 파일 생성
- 시간 있을 때 미리 구성 가능
- 작업은 Copy & Paste
- 인프라 반복 작업 x, 퀄리티 향상에 집중
- 새 인프라 작업시 이전 경험을 녹인 코드 활용
쿠버네티스 IT생태계를 어떻게 공부하면 좋을지?
- 전체 흐름을 완성해보기
- 전체 한세트를 만들어놔야 어디 한 곳에 변화가 다른 곳에 떤 영향을 미치는지 알게됨
- 넓은 시각에서 공부할 수 있게 되는 장점이 있음
- 이 흐름에 맞는 최소한의 도구를 선택하면 됨
- 전문 분야 공부하기
- 배포
- Argo, Helm, Ansible, Terraform, Pulumi
- 클라우드
- AWS, Azure, GCP, NCP
- 서비스 메시
- Envoy, Kong, Istio
- 전문 분야별 디테일 사용
- 배포
- 상황별 공부하기
- 마음에 드는 도구가 있을 때
- 프로젝트를 하는 상황일 때
가이드라인으로 하나씩 공부를 하다보면 어느 순간 대부분의 도구들을 사용하게 되고 혹시라도 안 해본걸 하게 되도 딱히 걱정하지 않게 됨
전체 흐름을 알기 때문에 새로운 툴을 보더라도 거기서 내가 필요한 기능이 뭐고 그것만 빨리 익혀서 쓰는 것은 크게 어렵지 않게 됨
쿠버네티스 IT생태계엔 공부할 것은 많지만 순서와 상황이 있기 때문에 차근차근 해나가면 됨