āĻāĻĒāĻ¨āĻŋ āĻ¨āĻŋāĻā§āĻ āĻšā§āĻ˛āĻŽāĻĢāĻžāĻāĻ˛ āĻāĻŦāĻ āĻāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖāĻā§āĻ˛āĻŋ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻĒāĻĄāĻŧāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨
āĻāĻŽāĻ°āĻž āĻšā§āĻ˛āĻŽāĻĢāĻžāĻāĻ˛ā§ āĻ°āĻŋāĻ˛āĻŋāĻāĻā§āĻ˛āĻŋ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻāĻ°āĻžāĻ° āĻ -āĻ¸ā§āĻĒāĻˇā§āĻ āĻāĻĒāĻžāĻ¯āĻŧāĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻĒāĻ°āĻŋāĻāĻŋāĻ¤ āĻšāĻŦ
āĻ§āĻ°āĻž āĻ¯āĻžāĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻžāĻā§ āĻšā§āĻ˛āĻŽ āĻāĻžāĻ°ā§āĻā§āĻ° āĻāĻāĻāĻŋ āĻĒā§āĻ¯āĻžāĻ āĻ°āĻ¯āĻŧā§āĻā§ (āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻĒā§āĻ¸ā§āĻāĻā§āĻ°ā§āĻ¸ āĻāĻŦāĻ āĻāĻŋāĻā§ āĻŦā§āĻ¯āĻžāĻāĻāĻ¨ā§āĻĄ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻŦāĻ˛āĻž āĻ¯āĻžāĻ) āĻāĻŦāĻ āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻĒāĻ°āĻŋāĻŦā§āĻļ (āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻ āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°, āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻ¨āĻžāĻŽāĻ¸ā§āĻĨāĻžāĻ¨ āĻŦāĻž āĻāĻāĻ¯āĻŧā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ)āĨ¤ āĻāĻŽāĻ°āĻž āĻšā§āĻ˛āĻŽāĻĢāĻžāĻāĻ˛āĻāĻŋ āĻā§āĻ°āĻšāĻŖ āĻāĻ°āĻŋ, āĻĄāĻā§āĻŽā§āĻ¨ā§āĻā§āĻļāĻ¨ āĻĒāĻĄāĻŧāĻŋ āĻāĻŦāĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻĒāĻ°āĻŋāĻŦā§āĻļ āĻāĻŦāĻ āĻĒā§āĻ°āĻāĻžāĻļāĻā§āĻ˛āĻŋ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻāĻ°āĻ¤ā§ āĻļā§āĻ°ā§ āĻāĻ°āĻŋ:
.
âââ 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
āĻĒā§āĻ¸ā§āĻāĻā§āĻ°ā§āĻ¸ āĻ°ā§āĻ˛ āĻāĻāĻ āĻāĻ°ā§āĻ¨, āĻāĻžāĻ°āĻŖ āĻāĻŽāĻ°āĻž āĻāĻžāĻ¨āĻŋ āĻ¯ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻĄāĻžāĻāĻžāĻŦā§āĻ¸āĻāĻŋāĻā§ k8s āĻ āĻĒā§āĻļ āĻāĻ°āĻžāĻ° āĻĻāĻ°āĻāĻžāĻ° āĻ¨ā§āĻ āĻāĻŦāĻ āĻŦāĻŋāĻā§āĻ°āĻ¯āĻŧā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻāĻŋ āĻĻā§āĻ°ā§āĻĻāĻžāĻ¨ā§āĻ¤ āĻĒā§āĻĨāĻ āĻĒā§āĻ¸ā§āĻāĻā§āĻ°ā§āĻ¸ āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ° āĻ°āĻ¯āĻŧā§āĻā§? āĻāĻ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻžāĻĻā§āĻ° āĻ˛ā§āĻŦā§āĻ˛ āĻāĻā§
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:
yaml āĻŦāĻŋāĻāĻžāĻāĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻāĻŦāĻļā§āĻ¯āĻ ---
, āĻ¯āĻžāĻ¤ā§ āĻāĻĒāĻ¨āĻŋ āĻĒāĻ°āĻŋāĻŦā§āĻļ āĻĨā§āĻā§ āĻŽāĻžāĻ¨ āĻ¸āĻš āĻ°āĻŋāĻ˛āĻŋāĻ (āĻāĻŦāĻ āĻ
āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ
āĻāĻļ, āĻ¯ā§āĻŽāĻ¨ āĻšā§āĻ˛āĻŽāĻĄāĻŋāĻĢāĻ˛ā§āĻ) āĻā§āĻŽāĻĒā§āĻ˛ā§āĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨
āĻāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻĒā§āĻ¸ā§āĻāĻā§āĻ°ā§āĻ¸ āĻ°āĻŋāĻ˛āĻŋāĻ āĻāĻŽāĻ¨āĻāĻŋ āĻāĻ¤ā§āĻĒāĻžāĻĻāĻ¨ā§āĻ° āĻŦāĻŋāĻŦāĻ°āĻŖā§ āĻ āĻ¨ā§āĻ¤āĻ°ā§āĻā§āĻā§āĻ¤ āĻāĻ°āĻž āĻšāĻŦā§ āĻ¨āĻžāĨ¤ āĻā§āĻŦ āĻāĻ°āĻžāĻŽā§!
āĻ°āĻŋāĻ˛āĻŋāĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻžāĻ°āĻ°āĻŋāĻĄā§āĻŦāĻ˛ āĻā§āĻ˛ā§āĻŦāĻžāĻ˛ āĻŽāĻžāĻ¨
āĻ
āĻŦāĻļā§āĻ¯āĻ, āĻāĻāĻŋ āĻĻā§āĻ°ā§āĻĻāĻžāĻ¨ā§āĻ¤ āĻ¯ā§ āĻāĻĒāĻ¨āĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻĒāĻ°āĻŋāĻŦā§āĻļā§āĻ° āĻāĻ¨ā§āĻ¯ āĻšā§āĻ˛āĻŽ āĻāĻžāĻ°ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻŽāĻžāĻ¨ āĻ¸ā§āĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨, āĻ¤āĻŦā§ āĻā§ āĻšāĻŦā§ āĻ¯āĻĻāĻŋ āĻāĻŽāĻžāĻĻā§āĻ° āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻĒāĻ°āĻŋāĻŦā§āĻļ āĻŦāĻ°ā§āĻŖāĻŋāĻ¤ āĻĨāĻžāĻā§ āĻāĻŦāĻ āĻāĻŽāĻ°āĻž āĻāĻžāĻ, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻ¸āĻŦāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻ āĻ¸ā§āĻ āĻāĻ°āĻ¤ā§ 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
, āĻ¯āĻžāĻ¤ā§ āĻšā§āĻ˛āĻŽāĻĢāĻžāĻāĻ˛ āĻāĻžāĻ¨ā§ āĻ¯ā§ āĻāĻāĻŋ āĻā§āĻŽāĻĒā§āĻ˛ā§āĻ āĻāĻā§āĻāĻŋāĻ¨ā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻāĻžāĻ˛āĻžāĻ¨ā§ āĻĻāĻ°āĻāĻžāĻ°āĨ¤
.
âââ 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
- āĻšā§āĻ˛āĻŽāĻĢāĻžāĻāĻ˛ā§ āĻā§ āĻā§āĻŽāĻĒā§āĻ˛ā§āĻāĻā§āĻ˛āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻŦāĻŋāĻļā§āĻˇ āĻĢāĻžāĻāĻļāĻ¨, āĻ¯āĻž, āĻāĻŽāĻ¨āĻāĻŋ āĻ¯āĻĻāĻŋ .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