Helmfile : 클러스터 k8S에 여러 차트 배포
13636 단어 webdevdevopskubernetesproductivity
전제 조건
개념
Helmfile을 사용하면 여러 Helm 차트를 배포하기 위한 사양을 선언할 수 있습니다. 모든 정보는 helmfile.yaml 파일에 저장됩니다.
다음은 Helmfile 사용의 이점입니다.
설치
docker run --rm --net=host -v "${HOME}/.kube:/root/.kube" -v "${HOME}/.config/helm:/root/.config/helm" -v "${PWD}:/data" --workdir /data quay.io/roboll/helmfile:helm3-v0.135.0 helmfile
docker run --rm --net=host -v "${HOME}/.kube:/root/.kube" -v "${HOME}/.config/helm:/root/.config/helm" -v "${PWD}:/data" --workdir /data cablespaghetti/helmfile-docker helmfile
시작하기
helm 릴리스의 원하는 상태를 나타내는 helmfile.yaml이 다음과 같다고 가정합니다.
releases:
- name: prom-norbac-ubuntu
namespace: prometheus
chart: stable/prometheus
set:
- name: rbac.create
value: false
다음을 실행하여 Kubernetes 클러스터 상태를 원하는 상태로 동기화합니다.
# Sync all your chart releases
helmfile sync
# OR
# Apply all your chart releases
helmfile apply
# OR
# Sync all your chart releases (offline)
helmfile charts
고급 사용법
여러 값(여러 환경의 경우)
개발 환경
# helmfile-dev.yaml
repositories:
- name: bitnami
url: https://charts.bitnami.com/bitnami
releases:
- name: my-postgres
namespace: my-namespace-dev
chart: bitnami/postgres
values:
- ./values/postgres-dev-1.yaml
- ./values/postgres-dev-2.yaml
# Sync all your chart releases
helmfile -f helmfile-dev.yaml sync
프로덕션 환경
# helmfile-prod.yaml
repositories:
- name: bitnami
url: https://charts.bitnami.com/bitnami
releases:
- name: my-postgres
namespace: my-namespace-production
chart: bitnami/postgres
values:
- ./values/postgres-prod-1.yaml
- ./values/postgres-prod-2.yaml
# Sync all your chart releases
helmfile -f helmfile-prod.yaml sync
환경 변수
# helmfile-prod.yaml
repositories:
- name: bitnami
url: https://charts.bitnami.com/bitnami
releases:
- name: {{ requiredEnv "NAME" }}-postgres
namespace: {{ requiredEnv "NAME" }}
chart: bitnami/postgres
set:
- name: image
value: {{ requiredEnv "DOCKER_IMAGE" }}
- name: version
value: {{ requiredEnv "VERSION" }}
values:
- ./values/postgres-prod.yaml
# Sync all your chart releases
NAME=my-project VERSION=1 DOCKER_IMAGE=postgres:latest helmfile -f helmfile-prod.yaml sync
템플릿
# helmfile.yaml
releases:
- name: {{ requiredEnv "NAME" }}-vault
namespace: {{ requiredEnv "NAME" }}
chart: roboll/vault-secret-manager
values:
- values.yaml.gotmpl
# values.yaml.gotmpl
db:
username: {{ requiredEnv "DB_USERNAME" }}
password: {{ requiredEnv "DB_PASSWORD" }}
proxy:
domain: {{ requiredEnv "PLATFORM_ID" }}.my-domain.com
scheme: {{ env "SCHEME" | default "https" }}
환경 파일
# helmfile.yaml
environments:
production:
values:
- production.yaml
releases:
- name: myapp
values:
- values.yaml.gotmpl
# production.yaml
domain: prod.example.com
releaseName: prod
# values.yaml.gotmpl
domain: {{ .Values | get "domain" "dev.example.com" }}
비밀
# helmfile.yaml
environments:
production:
secrets:
- environments/production/secrets.yaml
releases:
- name: myapp
chart: mychart
values:
- values.yaml.gotmpl
# environments/production/secrets.yaml
foo.bar: "mysupersecretstring"
값은 values.yaml.gotmpl에서 다음과 같이 사용할 수 있습니다.
{{ .Values.foo.bar }}
예
repositories:
- name: bitnami
url: https://charts.bitnami.com/bitnami
releases:
- name: my-nginx
namespace: my-namespace-production
chart: bitnami/nginx
values:
- ./values/nginx-production.yaml
- name: my-postgres
namespace: my-namespace-production
chart: bitnami/postgres
values:
- ./values/postgres-production.yaml
연결
https://github.com/roboll/helmfile
https://github.com/roboll/helmfile/tree/master/examples
https://lyz-code.github.io/blue-book/devops/helmfile/#:~:text=Helmfile%20is%20a%20declarative%20spec,Environmental%20chart%20promotion.
https://github.com/wkrzywiec/k8s-helm-helmfile
https://hub.docker.com/r/cablespaghetti/helmfile-docker
https://alexsimonjones.medium.com/helmfile-post-v3-helm-519c82a29c6a
Reference
이 문제에 관하여(Helmfile : 클러스터 k8S에 여러 차트 배포), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/javidjms/helmfile-deploy-multiple-charts-in-your-cluster-k8s-422j텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)