어쩌다 IT
article thumbnail
반응형

리뷰 (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
    • 외부 저장소에서 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

 

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 에 작성된 글입니다.

 

반응형
profile

어쩌다 IT

@jwlish

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!