반응형
리뷰 (Review)
더보기
Helm
- Kubernetes의 응용 프로그램 정의, 설치 및 업그레이드를 코드 형태로 관리 / 제공
- Kubernetes 패키지 관리자 성격 (Python의 pip, Node.js의 npm 등)
Helm 기능
- 복잡한 Application 배포 관리
- Hook (Application 생명 주기 관리)
- 릴리즈 관리
- 재사용성
Helm 구성
- Helm Server (Tiller)
- Helm Client
- Helm Chart Repository
- Helm Chart
Helm Chart
- Helm은 Kubernetes Cluster 상에 Application을 패키지 형태로 관리해주는 도구
- Helm 패키지를 구성하기 위한 정보를 담고 있는 YAML 형식의 파일들을 Chart라고 한다.
- Chart 사용
- Helm repository에 미리 등록된 chart 사용 (기존에 작성되어 있는 chart)
- 사용자가 작성한 chart 사용
- Chart는 YAML 형식으로 작성하고 별도의 디렉토리에 관련된 파일들로 구성
- Chart 생성 과정
- helm create 명령으로 chart 생성
- helm create <chart 이름> : chart 생성
- helm create mychart
- Chart 디렉토리 구조
- 참고 자료
- Chart.yaml - chart에 대한 이름, 버전, 설명 등을 정의한 파일
- values.yaml
- chart 설치 시 사용할 환경 변수를 정의한 파일
- template 사용은 {{.Values.image.tag}}와 같이 사용
- . : 최상위, chart 디렉토리 home
- Values : chart 구성 요소, values.yaml 의미
- .image : values.yaml 내용 중 image 요소
- .tag : image 요소 중 tag 요소
- charts/ - chart에서 사용하는 종속 chart들이 압축 파일(.tgz)로 존재
- template/
- 설치할 resource들의 기본 틀을 정의한 Manifest YAML 파일
- template 문법
- {{변수}} - 변수 사용
- .Values : values.yaml 파일에 정의된 변수
- .Chart : Chart.yaml 파일에 정의된 변수
- .Release
- 배포할 때 할당할 정보들을 사용
- ex) --namespace test로 install 시 .Release.Namespace 에 test 할당
- include : _helpers.tpl 파일에 정의된 변수
- -with ~ end
- 변수에 대한 scope를 정하는 문법
- 해당 구간은 . 이 설정한 변수에 속함을 의미
- -toYaml : 해당 변수를 YAML 형식으로 변경
- quote : string 타입으로 변경
- _helpers.tpl - template manifest 파일들에서 공유하는 변수 정의
- Chart.yaml 내용
apiVersion: 차트 API 버전 (필수)
name: 차트명 (필수)
version: SemVer 2 버전 (필수)
kubeVersion: 호환되는 쿠버네티스 버전의 SemVer 범위 (선택)
description: 이 프로젝트에 대한 간략한 설명 (선택)
type: 차트 타입 (선택)
keywords:
- 이 프로젝트에 대한 키워드 리스트 (선택)
home: 프로젝트 홈페이지의 URL (선택)
sources:
- 이 프로젝트의 소스코드 URL 리스트 (선택)
dependencies: # 차트 필요조건들의 리스트 (optional)
- name: 차트명 (nginx)
version: 차트의 버전 ("1.2.3")
repository: 저장소 URL ("https://example.com/charts") 또는 ("@repo-name")
condition: (선택) 차트들의 활성/비활성을 결정하는 boolean 값을 만드는 yaml 경로 (예시: subchart1.enabled)
tags: # (선택)
- 활성화 / 비활성을 함께하기 위해 차트들을 그룹화 할 수 있는 태그들
enabled: (선택) 차트가 로드될수 있는지 결정하는 boolean
import-values: # (선택)
- ImportValues 는 가져올 상위 키에 대한 소스 값의 맵핑을 보유한다. 각 항목은 문자열이거나 하위 / 상위 하위 목록 항목 쌍일 수 있다.
alias: (선택) 차트에 대한 별명으로 사용된다. 같은 차트를 여러번 추가해야할때 유용하다.
maintainers: # (선택)
- name: maintainer들의 이름 (각 maintainer마다 필수)
email: maintainer들의 email (각 maintainer마다 선택)
url: maintainer에 대한 URL (각 maintainer마다 선택)
icon: 아이콘으로 사용될 SVG나 PNG 이미지 URL (선택)
appVersion: 이 앱의 버전 (선택). SemVer인 필요는 없다.
deprecated: 차트의 deprecated 여부 (선택, boolean)
annotations:
example: 키로 매핑된 주석들의 리스트 (선택)
생성된 chart 디렉토리의 필요한 파일의 내용을 수정하여 chart 구성 실습
더보기
- Chart.yaml 파일 수정
- chart에 대한 설명
- 필수 요소 (apiVersion, name, version) 외에 필요한 선택 요소 추가
- values.yaml 파일 수정
- chart 환경 변수
- image, service, ingress 요소에 Kubernetes cluster resource 관련 정보 기재
- template 디렉토리에 있는 실제 Kubernetes cluster에 구성하는 resource 관련 YAML 파일 수정
- deployment.yaml, service.yaml, ingress.yaml, serviceaccount.yaml 등
- deployment.yaml 파일 수정
chart 검사
- helm lint 명령을 이용하여 작성한 chart 문법에 오류가 없는지 검사
- lint - 문법을 check 하는 도구
- helm lint <chart 이름>
- chart 이름에 해당하는 디렉토리의 파일내용에 대한 문법 검사
- helm lint 명령은 chart 디렉토리 이전에서 작업
- helm template 명령을 이용하여 template 디렉토리의 파일에서 사용하는 변수 참조가 실제 리소스 배포 시
어떻게 대체되는지 미리 보기- template 디렉토리에 있는 리소스 관련 파일의 변수 내용 대체 결과 미리 보기
- helm template <chart 이름>
- chart 시험 설치
- 실제 설치 과정에 대한 미리 보기
- helm install <char 이름> --dry-run --debug
- --dry-run : 실제 cluster에 설치하지 않고 chart를 시험하는 옵션
- --debug : 배포를 위한 manifest 파일 내용 출력
chart 패키징
- chart 파일을 압축 파일 (.tgz) 형태로 만드는 과정
- helm package <chart 경로> : chart 패키지 파일 생성
- chart 패키지 파일 이름 형식 - Chart.yaml 파일에 정의한 <name>-<version>.tgz 형식의 압축 파일 생성
- chart 패키지 파일을 repository에 저장
- chart 패키지 파일을 public/private/local repository에 저장
- 별도의 repository에 저장하지 않고 사용 가능
- helm install <NAME> <chart 패키지 이름>
TIF
차근차근, 조금씩, 하면 된다.
2022. 10. 25 에 작성된 글입니다.
반응형
'구름 쿠버네티스' 카테고리의 다른 글
구름 쿠버네티스 전문가 과정 6기 - 59일차 (1) | 2023.11.22 |
---|---|
구름 쿠버네티스 전문가 과정 6기 - 58일차 (4) | 2023.11.20 |
구름 쿠버네티스 전문가 과정 6기 - 56일차 (5) | 2023.11.16 |
구름 쿠버네티스 전문가 과정 6기 - 55일차 (0) | 2023.11.15 |
구름 쿠버네티스 전문가 과정 6기 - 54일차 (0) | 2023.11.14 |