-
Helm ChartMSA/Kubernetes 2023. 2. 2. 23:25
쿠버네티스용 패키지 관리 제품 ( like yum repository )
단일 바이너리로 구성되어 있으며, Git 에서 다운로드 후 빌드해도 사용가능하다.
Helm 의 Repository 의 데이터는 docker image 를 기반으로 하여 chart 를 만든다. ( 기반 이미지는 Docker hub 와 같은곳에서도 찾아서 활용가능 )
용어
- 차트 : Helm 패키지로써 쿠버네티스 클러스터 내에서 애플리케이션, 도구, 서비스를 구동하는데 필요한 모든 리소스 정의가 포함되어 있다. 쿠버네티스에서의 Homebrew 포뮬러, Apt dpkg, YUM RPM 파일과 같은 것으로 생각할 수 있다.
- 저장소 : 차트를 모아두고 공유하는 장소이다. 이것은 마치 Perl의 CPAN 아카이브나 페도라 패키지 데이터베이스와 같은데, 쿠버네티스 패키지용이라고 보면 된다.
- 릴리스 : 쿠버네티스 클러스터에서 구동되는 차트의 인스턴스이다. 일반적으로 하나의 차트는 동일한 클러스터내에 여러 번 설치될 수 있다. 설치될 때마다, 새로운 release 가 생성된다.
Repository
아래 사이트에서 사용자들이 공유해놓은 repository 를 검색하여 추가한 후 활용할 수 있다.
v3.4.0 이상 , v2.17.0 이상
Helm 에서 Stable Repository 로 아래 저장소를 제공한다.
현재 stable 에서 제공되지 않는 차트도 많다. ( ex. istio )
incubator Repository 로 아래 저장소를 제공한다.
https://charts.helm.sh/incubator
v3.4.0 미만 , v2.17.0 미만
https://kubernetes-charts.storage.googleapis.com
https://kubernetes-charts-incubator.storage.googleapis.com
private repository
개인의 GitHub 흑은 웹서버에 index 구성, ChartMuseum 을 통한 활용이 가능하다.
연관제품
- ChartMuseum
- JFrog
- GCS Bucket ( Google Cloude Storage )
PlugIn
https://helm.sh/ko/docs/topics/plugins/
Chart 구조
디렉토리 파일 설명 chart명 Chart.yaml Chart에 대한 이름, 버전, 설명 등이 정의된 파일 LICENSE OPTIONAL: 라이센스 문구를 담고있는 파일. README.md OPTIONAL: Chart 설치, 사용법등을 기술한 파일 requirements.yaml OPTIONAL: Chart에서 사용하는 종속 Chart(사전에 설치되어야 하는 다른 Chart)의 Chart명,버전,repository주소를 정의한 파일 values.yaml Chart설치 시 사용할 환경 변수 지정. templates디렉토리 밑의 manifest(yaml파일)파일에서 참조함 charts/ chart 압축파일 Chart에서 사용하는 종속 Chart들이 압축파일(tgz)로 존재함. helm dep up 명령 수행하면 requirements.yaml 참조하여 repository에서 다운받아 생성함 templates/ NOTES.txt OPTIONAL: 설치 후 사용 가이드를 기술한 파일로서 Chart설치 완료 후 콘솔에 표시됨 _helpers.tpl OPTIONAL: template manifest파일들에서 공유하는 항목 정의 deployment.yaml POD 배포 정의 manifest service.yaml Service 배포 정의 manifest ingress.yaml Ingress 배포 정의 manifest tests test script 정의 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 추가
https://helm.sh/ko/docs/chart_template_guide/getting_started/
helm create <chart-name> 생성된 Index 파일들을 수정하여 패키징을 지원한다. <chart-name>/ ├── .helmignore # 헬름 차트를 패키징할 때 무시할 패턴 포함 ├── Chart.yaml # 차트에 대한 정보 ├── values.yaml # 템플릿의 기본값 ├── charts/ # 이 차트가 의존하는 차트 └── templates/ # 템플릿 파일 └── tests/ # 테스트 파일 기존에 구성되어 있는 chart의 정보를 다운받아 볼 수 있다. helm fetch stable/redis helm package --sign --key <key> --keyring <secreat> <chart-name>
'MSA > Kubernetes' 카테고리의 다른 글
Kubernetes 개요 (0) 2023.02.15 Kafka Consumer Group 및 Rebalancing (0) 2023.02.10 Kafka 설치 (0) 2023.02.10 Kafka Connector (0) 2023.02.09 Kafka 기본 개념 (0) 2023.02.08