반응형
리뷰 (Review)
더보기
Service Object
- Pod들을 통해 실행되고 있는 Application을 네트워크에 노출 (expose) 시키는 가상의 Component
- Service는 Pod가 외부와 통신할 수 있도록 cluster 내부에서 고정적인 IP를 갖도록 하는 역할
Service 유형
- Cluster IP
- Pod들이 cluster 내부의 다른 리소스들과 통신할 수 있도록 해주는 가상 cluster 전용 IP
- cluster 내부에서만 접근 가능
- NodePort
- 외부에서 node IP의 특정 Port로 들어오는 요청을 감지하여 해당 port와 연결된 Pod로 트래픽 전달
- LoadBalancer
- 부하 분산 목적
- LoadBalancer를 제공하는 cloud 환경을 고려하여 cluster의 Service로 프로비저닝할 때 사용
- ExternelName
- Service에 selector 대신 name을 직접 명시하고자 할 때 사용
Ingress
- Kubernetes cluster 외부에서 내부로 들어오는 트래픽에 대해 어떻게 처리할지 정의하는 규칙
- Gateway와 같은 역할 담당
- YAML 파일을 통해 Ingress (inbound) 규칙 정의
Helm
Helm
- Kubernetes의 응용 프로그램 정의, 설치 및 업그레이드를 코드 형태로 관리 / 제공
- Kubernetes 응용 프로그램을 패키지 형태로 손쉽게 관리할 수 있도록 도와주는 도구
- Deployment, Service, Ingress 등의 Object에 대한 정의를 Template 기반의 YAML 파일로 작성하여 배포
- Kubernetes 패키지 관리자 성격
- Python의 pip
- Node.js의 npm
- 참고 자료
Helm 기능
- 복잡한 Application 배포 관리
- Kubernetes 환경에서 Helm chart는 복잡한 Application 배포를 코드로 관리하고 자동으로 배포
- Application의 빠른 배포를 통해 다양한 테스트 환경 배포 및 운영 환경 배포 시간을 줄여 개발에 집중
- Hook (Application 생명 주기 관리)
- Helm chart로 설치, 업그레이드, 삭제, 롤백과 같은 Application 생명 주기에 개입할 수 있는 Hook 기능 제공
- 릴리즈 관리
- Helm으로 배포된 Application은 하나의 릴리즈이며 해당 릴리즈는 배포된 응용프로그램 버전 관리가 가능하다.
- 재사용성
- Helm chart는 다른 환경에서 재사용하여 배포 관리할 수 있다.
Helm 구성
- Helm Server (Tiller)
- Helm Client 요청을 처리하기 위해 대기하며, 요청이 있을 경우 Kubernetes에 Helm Chart(YAML 형식)를
설치하고 릴리즈 관리
- Helm Client 요청을 처리하기 위해 대기하며, 요청이 있을 경우 Kubernetes에 Helm Chart(YAML 형식)를
- Helm Client
- 외부 저장소에서 Helm Chart를 가져오거나, gRPC로 Helm Server와 통신하여 요청하는 역할
- Helm Chart Repository
- Chart 저장소
- Helm Chart Repository는 chart에 대한 메타데이터를 포함한 저장소
- Public/Private Repository로 구성 가능
- Helm Chart
- Kubernetes에서 리소스를 만들기 위한 템플릿 - YAML 형식
Helm 환경 구성
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh
- Helm Server (Tiller) 구성
- Tiller Account 생성
- kubectl -n kube-system create sa tiller
- sa (Service Account) 생성 확인
- kubectl get sa -n kube-system
- cluster-admin role 부여
- kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount=kube-system:tiller
- clusterrolebinding 확인
- kubectl get clusterrolebinding
- Tiller Account 생성
Helm 명령
- helm - Helm 명령 사용 방법 및 명령 목록
- helm <명령> --help : 해당 명령에 대한 도움말
- helm env - Helm 환경 정보
- helm repo - Helm repository 관련 명령
- helm repo add <이름> <repository URL>
- helm repo list : 추가된 repository 목록
- helm repo update : repository 정보 갱신
- Helm 공식 stable 차트
helm repo add brigade https://brigadecore.github.io/charts
helm repo add stable https://charts.helm.sh/stable
- helm search - 검색 명령
- helm search hub <chart 이름> : hub에서 chart 검색
- helm search repo <chart 이름> : repository에서 chart 검색
- helm install - chart를 이용한 application 배포
- helm install repo stable/nginx-ingress : stable repository에서 repo 이름으로 nginx-ingress 배포
- helm install stable/nginx-ingress --generate-name : stable repository에서 임의의 이름으로 nginx-ingress 배포
- helm ls - Helm으로 설치된 chart 목록 확인
- helm history <chart 이름> - chart 릴리즈 관리
- helm show chart <chart 이름> - chart 상세 정보 확인
- helm show chart stable/nginx-ingress : stable의 nginx-ingress 상세 정보 확인
- helm show values <chart 이름> - key:value 형식의 정보 확인
- helm show values stable/mysql
- helm status - 현재 릴리즈 된 chart 상세 정보
- helm status repo - repo로 릴리즈 된 chart 상세 정보
- helm uninstall - 현재 릴리즈된 chart 삭제
- helm uninstall repo - repo로 릴리즈 된 chart 삭제
Helm을 이용한 Application 배포(release) 방법
- 기존에 생성된 chart를 이용한 Application 배포 - repository에 저장된 Helm chart 이용
- 사용자 정의 chart를 이용한 Application 배포
TIF
마지막 프로젝트 시작
2022. 10. 24 에 작성된 글입니다.
반응형
'구름 쿠버네티스' 카테고리의 다른 글
구름 쿠버네티스 전문가 과정 6기 - 58일차 (4) | 2023.11.20 |
---|---|
구름 쿠버네티스 전문가 과정 6기 - 57일차 (6) | 2023.11.17 |
구름 쿠버네티스 전문가 과정 6기 - 55일차 (0) | 2023.11.15 |
구름 쿠버네티스 전문가 과정 6기 - 54일차 (0) | 2023.11.14 |
구름 쿠버네티스 전문가 과정 6기 - 53일차 (0) | 2023.11.13 |