แแฅแแแ แจแแแแซแแแแ แฌแแแแแแฎแแ แแแแแ helmfile-แแ แแ แแแกแ แแแแแงแแแแแแก แแแแแแแแแแแ
แฉแแแ แแแแแชแแแแแ Helffile-แจแ แแแแแจแแแแแแแก แแฆแฌแแ แแก แแ แ แแจแแแ แ แแแแแก
แแแฅแแแ, แแแแฅแแก แกแแญแแก แแแแแ แแแแแแก แแแแแขแ (แแแแแแแแแ, แแแกแขแแ แแกแ แแ แแแแแแ แแ backend แแแแแแแชแแ) แแ แ แแแแแแแแ แแแ แแแ (แ แแแแแแแแ แแฃแแแ แแแขแแก แแแแกแขแแ แ, แ แแแแแแแแ แกแแฎแแแแ แกแแแ แชแ, แแ แแ แแแแแแ แ แแแแแแแแ). แฉแแแ แแแฆแแแ แฉแแคแฎแฃแขแก, แแแแแฎแฃแแแแ แแแแฃแแแแขแแชแแแก แแ แแแฌแงแแแ แฉแแแแ แแแ แแแแกแ แแ แแแแแจแแแแแก แแฆแฌแแ แแก:
.
โโโ envs
โ โโโ devel
โ โ โโโ values
โ โ โโโ backend.yaml
โ โ โโโ postgres.yaml
โ โโโ production
โ โโโ values
โ โโโ backend.yaml
โ โโโ postgres.yaml
โโโ helmfile.yaml
helmfile.yaml
environments:
devel:
production:
releases:
- name: postgres
labels:
app: postgres
wait: true
chart: stable/postgresql
version: 8.4.0
values:
- envs/{{ .Environment.Name }}/values/postgres.yaml
- name: backend
labels:
app: backend
wait: true
chart: private-helm-repo/backend
version: 1.0.5
needs:
- postgres
values:
- envs/{{ .Environment.Name }}/values/backend.yaml
แฉแแแ แแแแแฆแแ 2 แแแ แแแ: แแแแแแแแ แแแ, แฌแแ แแแแแแก - แแแแแแฃแแ แจแแแชแแแก แกแแแฃแแแ แแแแจแแแแแแแแแก แกแแญแแก แแแแแจแแแแแก แกแฅแแแแแแกแแแแก. แฉแแแ แแแแแแแแแกแแแ แแแ แแกแ:
helmfile -n <namespace> -e <env> apply
แกแแญแแก แแแแแ แแแแแแก แกแฎแแแแแกแฎแแ แแแ แกแแแแ แกแฎแแแแแกแฎแแ แแแ แแแแจแ
แ แ แแแฎแแแแ, แแฃ แฉแแแ แแแญแแ แแแแ แแแแแแแงแแแแ แแแฅแแแแแก แกแฎแแแแแกแฎแแ แแแ แกแแแแ แกแฎแแแแแกแฎแแ แแแ แแแแจแ? แ แแแแ แแแแแฎแแแแแ แแแแแจแแแแแก แแแ แกแแแก แแแ แแแแขแ แแแแชแแ? แแแ แแแแกแแแชแแแแ แฆแแ แแแฃแแแแแแ แฎแแแแแกแแฌแแแแแแ {{ .Values }}
helmfile.yaml
environments:
devel:
+ values:
+ - charts:
+ versions:
+ backend: 1.1.0
production:
+ values:
+ - charts:
+ versions:
+ backend: 1.0.5
...
- name: backend
labels:
app: backend
wait: true
chart: private-helm-repo/backend
- version: 1.0.5
+ version: {{ .Values.charts.versions.backend }}
...
แแแแแแแชแแแแแก แกแฎแแแแแกแฎแแ แแแแ แแแ แกแฎแแแแแกแฎแแ แแแ แแแแจแ
แแแ แแแ, แแแแ แแ แ แ แแแฎแแแแ, แแฃ แแ แแแญแแ แแแแ production
แแแแคแแ แแแแแ แแแกแขแแ แแกแ, แ แแแแแ แแแชแแ, แ แแ แแ แแแญแแ แแแแ แแแแแชแแแแ แแแแแก k8-แแแจแ แแแแแขแแแ แแ แแแกแแงแแแแ แแแแฅแแก แแจแแแแแแ แ แชแแแแ แแแกแขแแ แแก แแแแกแขแแ แ? แแ แแ แแแแแแแก แแแแแกแแญแ แแแแ แฉแแแ แแแแฅแแก แแขแแแแขแแแ
helmfile -n <namespace> -e devel apply
helmfile -n <namespace> -e production -l app=backend apply
แแก แแจแแแแแแ แแ, แแแแ แแ แแแ แแแแ แแ แแแ แฉแแแแแ แแฆแแฌแแ แ แ แแแแแ แแแแแแแชแแแแ แแแแแแแแแกแ แแแ แแแแจแ แแ แ แแแจแแแแแก แแ แแฃแแแแขแแแแก แแแแแงแแแแแแ, แแ แแแแ แแแแแ แแแ แแแแก แแฆแฌแแ แแจแ. แฒ แ แฃแแแ แแฅแแ? แแฅแแแ แจแแแแซแแแแ แแแแแแแแกแแ แแแแแจแแแแแก แแฆแฌแแ แแแแแแแ แชแแแแแฃแ แกแแฅแแฆแแแแแจแ, แจแแฅแแแแ แกแแญแแ แ แแแแแจแแแแแแแก แกแแ แแแ แแแแก แแฆแฌแแ แแจแ แแ โแแแฆแแโ แแฎแแแแ แกแแญแแ แ แแแแแจแแแแแแ, แแแแแ แฉแแแแก แฃแแฃแแแแแแงแแคแแ.
.
โโโ envs
โ โโโ devel
โ โ โโโ values
โ โ โโโ backend.yaml
โ โ โโโ postgres.yaml
โ โโโ production
โ โโโ values
โ โโโ backend.yaml
โ โโโ postgres.yaml
+ โโโ releases
+ โ โโโ backend.yaml
+ โ โโโ postgres.yaml
โโโ helmfile.yaml
helmfile.yaml
environments:
devel:
values:
- charts:
versions:
backend: 1.1.0
- apps:
- postgres
- backend
production:
values:
- charts:
versions:
backend: 1.0.5
- apps:
- backend
- releases:
- - name: postgres
- labels:
- app: postgres
- wait: true
- chart: stable/postgresql
- version: 8.4.0
- values:
- - envs/{{ .Environment.Name }}/values/postgres.yaml
- - name: backend
- labels:
- app: backend
- wait: true
- chart: private-helm-repo/backend
- version: {{ .Values.charts.versions.backend }}
- needs:
- - postgres
- values:
- - envs/{{ .Environment.Name }}/values/backend.yaml
+ ---
+ bases:
+ {{- range .Values.apps }}
+ - releases/{{ . }}.yaml
+ {{- end }}
releases/postgres.yaml
releases:
- name: postgres
labels:
app: postgres
wait: true
chart: stable/postgresql
version: 8.4.0
values:
- envs/{{ .Environment.Name }}/values/postgres.yaml
releases/backend.yaml
releases:
- name: backend
labels:
app: backend
wait: true
chart: private-helm-repo/backend
version: {{ .Values.charts.versions.backend }}
needs:
- postgres
values:
- envs/{{ .Environment.Name }}/values/backend.yaml
แจแแแแจแแแ
แแแแแงแแแแแแกแแก bases:
แแฃแชแแแแแแแแ แแแแแแก แแแแงแแคแแก แแแแแงแแแแแ ---
, แแกแ แ แแ แแฅแแแ แจแแแแซแแแแ แจแแแแแแ แ แแแแแแแ (แแ แกแฎแแ แแแฌแแแแแ, แ แแแแ แแชแแ helmDefaults) แแแแจแแแแแแแแแแ แแแ แแแแแแ
แแ แจแแแแฎแแแแแจแ, แแแกแขแแ แแกแแก แแแแแจแแแแ แฌแแ แแแแแแกแแแแก แแฆแฌแแ แแแแแแจแแช แแ แแ แจแแแแก. แซแแแแแ แแแแคแแ แขแฃแแแ!
แแแแแแแฃแ แ แคแแกแแฃแแแแแแแก แแแแแแแฎแแ
แ แ แแฅแแ แฃแแแ, แแแ แแแ, แ แแ แแฅแแแ แจแแแแซแแแแ แแแแงแแแแ แแแแจแแแแแแแแแ แกแแญแแก แแแแแ แแแแแแกแแแแก แแแแแแฃแแ แแแ แแแแกแแแแก, แแแแ แแ แ แ แแแฎแแแแ, แแฃ แฉแแแ แแแแฅแแก แแฆแฌแแ แแแ แ แแแแแแแแ แแแ แแแ แแ แแแแแแ, แแแแแแแแแ, แงแแแแแกแแแแก แแแแแ แแแแแงแแแแ affinity
, แแแแ แแ แฉแแแ แแ แแแแแแ แแแกแ แแแแคแแแฃแ แแชแแ แแแแฃแแแกแฎแแแแแ แฉแแ แขแแแจแ, แ แแแแแแแช แแแแฎแแแ แ แขแแแแจแ.
แแ แจแแแแฎแแแแแจแ, แแแแแแฃแแ แแแแแจแแแแแกแแแแก แฉแแแ แจแแแแแซแแแ แแแแฃแแแแแ 2 แคแแแแ แแแแจแแแแแแแแแแ: แแแ แแแแ แแแแฃแแแกแฎแแแแ แแแแจแแแแแแแแแแ, แ แแแแแแช แแแแกแแแฆแแ แแแก แแแแแ แแแแแ แแแแก แแแแจแแแแแแแแแก แแ แแแแ แ แแแแจแแแแแแแแแแ แแแ แแแแกแแแแก, แ แแแแแแช แแแแแก แแฎแ แแ แแแแแแญแแ แแแแก แแแแฃแแแกแฎแแแแ แแแ แแแ.
.
โโโ envs
+ โ โโโ default
+ โ โ โโโ values
+ โ โ โโโ backend.yaml
+ โ โ โโโ postgres.yaml
โ โโโ devel
โ โ โโโ values
โ โ โโโ backend.yaml
โ โ โโโ postgres.yaml
โ โโโ production
โ โโโ values
โ โโโ backend.yaml
โ โโโ postgres.yaml
โโโ releases
โ โโโ backend.yaml
โ โโโ postgres.yaml
โโโ helmfile.yaml
releases/backend.yaml
releases:
- name: backend
labels:
app: backend
wait: true
chart: private-helm-repo/backend
version: {{ .Values.charts.versions.backend }}
needs:
- postgres
values:
+ - envs/default/values/backend.yaml
- envs/{{ .Environment.Name }}/values/backend.yaml
envs/default/values/backend.yaml
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 1
podAffinityTerm:
labelSelector:
matchExpressions:
- key: app.kubernetes.io/name
operator: In
values:
- backend
topologyKey: "kubernetes.io/hostname"
แแแ แแแแก แแแแแแ แงแแแแ แแแแแจแแแแแก แกแแญแแก แฉแแ แขแแแแก แแแแแแแฃแ แ แแแแจแแแแแแแแแแก แแแแกแแแฆแแ แ
แแแฅแแแ, แฉแแแ แแฅแแแแ แ แแแแแแแแ แจแแแแกแแแแก แ แแแแแแแแ แแแแแจแแแแแจแ - แฉแแแ แจแแแแแซแแแ แฎแแแแ แแแแแกแแแฆแแ แแ แแแแแแฃแแ แฉแแ แขแแกแแแแก hosts:
, แแแแ แแ แฉแแแแก แจแแแแฎแแแแแจแ แแแแแแ แแแแแแ, แ แแขแแ แแ แฉแแแแแ แแแ แแแแแแ แ แแแแแแแฃแ แชแแแแแจแ แแ แฃแแ แแแแ แฉแแแแแชแแแแ แแแกแ แแแแจแแแแแแแ แแแแแ แแแแแจแ? แแแแกแแแแแก, แแ แคแแแแแแก แแแแจแแแแแแแแแแ, แ แแแแแแ แแแ แแแแขแ แแแแชแแแช แแแแแแ, แฃแแแ แฐแฅแแแแแ แแแคแแ แแแแแ .gotmpl
, แ แแแ helmfile-แแ แแชแแแแก, แ แแ แกแแญแแ แแ แจแแแแแแแก แซแ แแแแก แแแจแแแแแแ แแแจแแแแ.
.
โโโ envs
โ โโโ default
โ โ โโโ values
- โ โ โโโ backend.yaml
- โ โ โโโ postgres.yaml
+ โ โ โโโ backend.yaml.gotmpl
+ โ โ โโโ postgres.yaml.gotmpl
โ โโโ devel
โ โ โโโ values
โ โ โโโ backend.yaml
โ โ โโโ postgres.yaml
โ โโโ production
โ โโโ values
โ โโโ backend.yaml
โ โโโ postgres.yaml
โโโ releases
โ โโโ backend.yaml
โ โโโ postgres.yaml
โโโ helmfile.yaml
helmfile.yaml
environments:
devel:
values:
- charts:
versions:
backend: 1.1.0
- apps:
- postgres
- backend
+ - global:
+ ingressDomain: k8s.devel.domain
production:
values:
- charts:
versions:
backend: 1.0.5
- apps:
- backend
+ - global:
+ ingressDomain: production.domain
---
bases:
{{- range .Values.apps }}
- releases/{{ . }}.yaml
{{- end }}
envs/default/values/backend.yaml.gotmpl
ingress:
enabled: true
paths:
- /api
hosts:
- {{ .Values.global.ingressDomain }}
envs/default/values/postgres.yaml.gotmpl
ingress:
enabled: true
paths:
- /
hosts:
- postgres.{{ .Values.global.ingressDomain }}
แจแแแแจแแแ
แชแฎแแแแ, แแแกแขแแ แแกแแก แฉแแ แขแจแ แจแแกแแแ แฃแแแแฃแ แแกแแ แกแแแญแแแ, แแแแขแแ แแก แกแขแแขแแ แแแชแแแฃแแแ แฃแแ แแแแ, แ แแแแ แช แกแคแแ แฃแแ แแแแแแแแ แแแแฃแฃแแจแ แแ แแแแกแแแแก, แ แแ แกแขแแขแแแจแ แแฎแแแ แแแแแจแแแแ แแ แจแแแแแแแแก แแฎแแแแ แจแแฆแฌแแแแก แแฆแฌแแ แแกแแแแก.
แกแแแแฃแแแแแแแก แฉแแแแชแแแแแ แแแ แแแแก แฆแแ แแแฃแแแแแแแแแ
แแแแแ แแแงแแแแแแ แแแแแแแแแก แแแแแแแแแ, แแฅแแแ แจแแแแซแแแแ แฉแแแแแชแแแแ แแแจแแคแ แฃแแ แแแ แแแแก แแแแแงแแแแแแ
.
โโโ envs
โ โโโ default
โ โ โโโ values
โ โ โโโ backend.yaml
โ โ โโโ postgres.yaml
โ โโโ devel
โ โ โโโ values
โ โ โ โโโ backend.yaml
โ โ โ โโโ postgres.yaml
+ โ โ โโโ secrets.yaml
โ โโโ production
โ โโโ values
โ โ โโโ backend.yaml
โ โ โโโ postgres.yaml
+ โ โโโ secrets.yaml
โโโ releases
โ โโโ backend.yaml
โ โโโ postgres.yaml
โโโ helmfile.yaml
helmfile.yaml
environments:
devel:
values:
- charts:
versions:
backend: 1.1.0
- apps:
- postgres
- backend
- global:
ingressDomain: k8s.devel.domain
+ secrets:
+ - envs/devel/secrets.yaml
production:
values:
- charts:
versions:
backend: 1.0.5
- apps:
- backend
- global:
ingressDomain: production.domain
+ secrets:
+ - envs/production/secrets.yaml
---
bases:
{{- range .Values.apps }}
- releases/{{ . }}.yaml
{{- end }}
envs/devel/secrets.yaml
secrets:
elastic:
password: ENC[AES256_GCM,data:hjCB,iv:Z1P6/6xBJgJoKLJ0UUVfqZ80o4L84jvZfM+uH9gBelc=,tag:dGqQlCZnLdRAGoJSj63rBQ==,type:int]
...
envs/production/secrets.yaml
secrets:
elastic:
password: ENC[AES256_GCM,data:ZB/VpTFk8f0=,iv:EA//oT1Cb5wNFigTDOz3nA80qD9UwTjK5cpUwLnEXjs=,tag:hMdIUaqLRA8zuFBd82bz6A==,type:str]
...
envs/default/values/backend.yaml.gotmpl
elasticsearch:
host: elasticsearch
port: 9200
password: {{ .Values | getOrNil "secrets.elastic.password" | default "password" }}
envs/devel/values/backend.yaml
elasticsearch:
host: elastic-0.devel.domain
envs/production/values/backend.yaml
elasticsearch:
host: elastic-0.production.domain
แจแแแแจแแแ
แกแฎแแแแ แจแแ แแก, getOrNil
- แกแแแชแแแแฃแ แ แคแฃแแฅแชแแ go แจแแแแแแแแแกแแแแก helmfile-แจแ, แ แแแแแแช, แแฃแแแแช .Values.secrets
แแ แแแ แกแแแแแก, แแ แฉแแแแแแแก แจแแชแแแแแก, แแแแ แแ แกแแจแฃแแแแแแก แแแกแชแแแก แจแแแแแก แคแฃแแฅแชแแแก แแแแแงแแแแแแ default
แแแแฃแแแกแฎแแแแ แแแแจแแแแแแแแก แจแแแชแแแแแ
แแแกแแแแ
แแฆแฌแแ แแแ แงแแแแแคแแ แ แแจแแแ แแ แฉแแแก, แแแแ แแ แแแคแแ แแแชแแ แฉแแคแฎแฃแขแแก แแแแแงแแแแแแ แ แแแแแแแแ แแแ แแแแจแ แแแแแแแแแแก แแแกแแฎแแ แฎแแแแแ แแฆแฌแแ แแแแแแก แจแแกแแฎแแ แซแแแแแ แแฌแแ แแ แแ แแ แแแงแแแ แก IaC (แแแคแ แแกแขแ แฃแฅแขแฃแ แ-แ แแแแ แช แแแแ) แแ แแแแแ แแฅแแแแแก แแแแแแแแแแก แแแแแแแ แแแแแก แแแแคแแ แแฆแฌแแ แ.
แแแกแแกแ แฃแแก, แแแแแ แแแแแแแขแ, แ แแ แแแแฃแแแกแฎแแแแ แแแ แแแแก แชแแแแแแแ, แแแแแก แแฎแ แแ, แจแแแซแแแแ แแแ แแแแขแ แแแแแฃแแ แแงแแก แแแ แแแแฃแแ แแแ แแแแแแแก OS-แแก แแแ แแแแก แชแแแแแแแแแ, แกแแแแแแแช แแแแฌแงแแแ แแแแแแแแแ, แแ แแแแ แแแแแฆแแ แแแแแแแฃแ แ แแแ แแแ.
helmfile.yaml
environments:
default:
values:
- global:
clusterDomain: {{ env "CLUSTER_DOMAIN" | default "cluster.local" }}
ingressDomain: {{ env "INGRESS_DOMAIN" }}
แฌแงแแ แ: www.habr.com