āĻšā§‡āĻ˛āĻŽāĻĢāĻžāĻ‡āĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻāĻ•āĻžāĻ§āĻŋāĻ• k8s āĻĒāĻ°āĻŋāĻŦā§‡āĻļā§‡ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ° āĻŦā§āĻ¯āĻŦāĻ¸ā§āĻĨāĻž āĻ•āĻ°āĻž

āĻšā§‡āĻ˛āĻŽāĻĢāĻžāĻ‡āĻ˛ - āĻœāĻ¨ā§āĻ¯ āĻŽā§‹āĻĄāĻŧāĻžāĻ¨ā§‹ āĻšāĻžāĻ˛, āĻ¯āĻž āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻāĻ• āĻœāĻžāĻ¯āĻŧāĻ—āĻžāĻ¯āĻŧ āĻ…āĻ¨ā§‡āĻ•āĻ—ā§āĻ˛āĻŋ āĻšā§‡āĻ˛ā§āĻŽ āĻ°āĻŋāĻ˛āĻŋāĻœ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°āĻ¤ā§‡, āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āĻ¨ āĻĒāĻ°āĻŋāĻŦā§‡āĻļā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¤āĻžāĻĻā§‡āĻ° āĻšāĻžāĻ°ā§āĻŸā§‡āĻ° āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻŸāĻžāĻ°āĻžāĻ‡āĻœ āĻ•āĻ°āĻ¤ā§‡ āĻāĻŦāĻ‚ āĻ¤āĻžāĻĻā§‡āĻ° āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ° āĻ•ā§āĻ°āĻŽ āĻ¸ā§‡āĻŸ āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧāĨ¤

āĻ†āĻĒāĻ¨āĻŋ āĻ¨āĻŋāĻœā§‡āĻ‡ āĻšā§‡āĻ˛āĻŽāĻĢāĻžāĻ‡āĻ˛ āĻāĻŦāĻ‚ āĻāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§‡āĻ° āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ—ā§āĻ˛āĻŋ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻĒāĻĄāĻŧāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻ°āĻŋāĻĄāĻŽāĻŋ и āĻ¸ā§‡āĻ°āĻž āĻ…āĻ¨ā§āĻļā§€āĻ˛āĻ¨ āĻ—āĻžāĻ‡āĻĄ.

āĻ†āĻŽāĻ°āĻž āĻšā§‡āĻ˛āĻŽāĻĢāĻžāĻ‡āĻ˛ā§‡ āĻ°āĻŋāĻ˛āĻŋāĻœāĻ—ā§āĻ˛āĻŋ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°āĻžāĻ° āĻ…-āĻ¸ā§āĻĒāĻˇā§āĻŸ āĻ‰āĻĒāĻžāĻ¯āĻŧāĻ—ā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻĒāĻ°āĻŋāĻšāĻŋāĻ¤ āĻšāĻŦ

āĻ§āĻ°āĻž āĻ¯āĻžāĻ• āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•āĻžāĻ›ā§‡ āĻšā§‡āĻ˛āĻŽ āĻšāĻžāĻ°ā§āĻŸā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ¯āĻžāĻ• āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ (āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻĒā§‹āĻ¸ā§āĻŸāĻ—ā§āĻ°ā§‡āĻ¸ āĻāĻŦāĻ‚ āĻ•āĻŋāĻ›ā§ āĻŦā§āĻ¯āĻžāĻ•āĻāĻ¨ā§āĻĄ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻŦāĻ˛āĻž āĻ¯āĻžāĻ•) āĻāĻŦāĻ‚ āĻŦā§‡āĻļ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻĒāĻ°āĻŋāĻŦā§‡āĻļ (āĻŦā§‡āĻļ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻ•ā§āĻŦāĻžāĻ°āĻ¨ā§‡āĻŸ āĻ•ā§āĻ˛āĻžāĻ¸ā§āĻŸāĻžāĻ°, āĻŦā§‡āĻļ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻ¨āĻžāĻŽāĻ¸ā§āĻĨāĻžāĻ¨ āĻŦāĻž āĻ‰āĻ­āĻ¯āĻŧā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻŦā§‡āĻļ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ)āĨ¤ āĻ†āĻŽāĻ°āĻž āĻšā§‡āĻ˛āĻŽāĻĢāĻžāĻ‡āĻ˛āĻŸāĻŋ āĻ—ā§āĻ°āĻšāĻŖ āĻ•āĻ°āĻŋ, āĻĄāĻ•ā§āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāĻ¨ āĻĒāĻĄāĻŧāĻŋ āĻāĻŦāĻ‚ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻĒāĻ°āĻŋāĻŦā§‡āĻļ āĻāĻŦāĻ‚ āĻĒā§āĻ°āĻ•āĻžāĻļāĻ—ā§āĻ˛āĻŋ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°āĻ¤ā§‡ āĻļā§āĻ°ā§ āĻ•āĻ°āĻŋ:

    .
    ├── 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 }}

āĻ¨ā§‹āĻŸ

āĻ¸ā§āĻĒāĻˇā§āĻŸāĻ¤āĻ‡, āĻĒā§‹āĻ¸ā§āĻŸāĻ—ā§āĻ°ā§‡āĻ¸ āĻšāĻžāĻ°ā§āĻŸā§‡ āĻĒā§āĻ°āĻŦā§‡āĻļ āĻ•āĻ°āĻž āĻ…āĻ¤ā§āĻ¯āĻ¨ā§āĻ¤ āĻ¸āĻ¨ā§āĻĻā§‡āĻšāĻœāĻ¨āĻ• āĻ•āĻŋāĻ›ā§, āĻ¤āĻžāĻ‡ āĻāĻ‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻŸāĻŋ āĻ•ā§‡āĻŦāĻ˛āĻŽāĻžāĻ¤ā§āĻ° āĻāĻ•āĻŸāĻŋ āĻļā§‚āĻ¨ā§āĻ¯āĻ¸ā§āĻĨāĻžāĻ¨ā§‡ āĻāĻ•āĻŸāĻŋ āĻ—ā§‹āĻ˛āĻžāĻ•āĻžāĻ° āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻĻā§‡āĻ“āĻ¯āĻŧāĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ āĻāĻŦāĻ‚ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻĒā§āĻ°āĻŦā§‡āĻļ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§‡ āĻ•āĻŋāĻ›ā§ āĻ¨āĻ¤ā§āĻ¨ āĻĒā§āĻ°āĻ•āĻžāĻļā§‡āĻ° āĻĒā§āĻ°āĻŦāĻ°ā§āĻ¤āĻ¨ āĻ¨āĻž āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯āĨ¤

āĻĒāĻ°āĻŋāĻŦā§‡āĻļā§‡āĻ° āĻŽā§‚āĻ˛ā§āĻ¯āĻŦā§‹āĻ§ āĻĨā§‡āĻ•ā§‡ āĻ—ā§‹āĻĒāĻ¨ā§€āĻ¯āĻŧāĻ¤āĻž āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°āĻž

āĻ‰āĻĒāĻ°ā§‡āĻ° āĻ‰āĻĻāĻžāĻšāĻ°āĻŖā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻžāĻĻā§ƒāĻļā§āĻ¯ āĻĻā§āĻŦāĻžāĻ°āĻž, āĻ†āĻĒāĻ¨āĻŋ āĻāĻ¨āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ āĻ•āĻ°āĻžāĻ—ā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻšā§‡āĻ˛āĻŽ āĻ¸āĻŋāĻ•ā§āĻ°ā§‡āĻŸāĻ¸ āĻ…āĻ°ā§āĻĨ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ°āĻŋāĻ˛āĻŋāĻœā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ¨āĻŋāĻœāĻ¸ā§āĻŦ āĻ—ā§‹āĻĒāĻ¨ā§€āĻ¯āĻŧ āĻĢāĻžāĻ‡āĻ˛ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§‡, āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ†āĻŽāĻ°āĻž āĻšāĻžāĻ°ā§āĻŸā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ¨āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ āĻ•āĻ°āĻž āĻŽāĻžāĻ¨āĻ—ā§āĻ˛āĻŋ āĻ¸āĻ‚āĻœā§āĻžāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ, āĻ†āĻŽāĻ°āĻž āĻ•ā§‡āĻŦāĻ˛āĻŽāĻžāĻ¤ā§āĻ° āĻ°āĻŋāĻ˛āĻŋāĻœā§‡ default.yaml.gotmpl-āĻ āĻ¸āĻ‚āĻœā§āĻžāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛ āĻĨā§‡āĻ•ā§‡ āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻž āĻŽāĻžāĻ¨āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ¸āĻ‚āĻœā§āĻžāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋāĨ¤ āĻĒāĻ°āĻŋāĻŦā§‡āĻļ āĻ¸ā§āĻ¤āĻ°āĨ¤ āĻāĻŦāĻ‚ āĻ¯ā§‡ āĻŽāĻžāĻ¨āĻ—ā§āĻ˛āĻŋ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•āĻžāĻ°āĻ“ āĻ•āĻžāĻ› āĻĨā§‡āĻ•ā§‡ āĻ˛ā§āĻ•āĻžāĻ¨ā§‹āĻ° āĻĻāĻ°āĻ•āĻžāĻ° āĻ¨ā§‡āĻ‡ āĻ¤āĻž āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻĒāĻ°āĻŋāĻŦā§‡āĻļā§‡ āĻĒā§āĻ°āĻ•āĻžāĻļā§‡āĻ° āĻŽāĻžāĻ¨āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻ¸āĻšāĻœā§‡āĻ‡ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻ¸āĻ‚āĻœā§āĻžāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤

    .
    ├── 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

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨