ಹೆಲ್ಮ್‌ಫೈಲ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಬಹು k8s ಪರಿಸರಗಳಿಗೆ ನಿಯೋಜನೆಯನ್ನು ಆಯೋಜಿಸುವುದು

ಹೆಲ್ಮ್‌ಫೈಲ್ - ಫಾರ್ ಹೊದಿಕೆ ಚುಕ್ಕಾಣಿ, ಒಂದೇ ಸ್ಥಳದಲ್ಲಿ ಅನೇಕ ಚುಕ್ಕಾಣಿ ಬಿಡುಗಡೆಗಳನ್ನು ವಿವರಿಸಲು, ಹಲವಾರು ಪರಿಸರಗಳಿಗೆ ಅವುಗಳ ಚಾರ್ಟ್‌ಗಳನ್ನು ನಿಯತಾಂಕಗೊಳಿಸಲು ಮತ್ತು ಅವುಗಳ ನಿಯೋಜನೆಯ ಕ್ರಮವನ್ನು ಹೊಂದಿಸಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ.

ನೀವು ಹೆಲ್ಮ್‌ಫೈಲ್ ಬಗ್ಗೆ ಮತ್ತು ಅದರ ಬಳಕೆಯ ಉದಾಹರಣೆಗಳ ಬಗ್ಗೆ ಓದಬಹುದು README и ಉತ್ತಮ ಅಭ್ಯಾಸಗಳ ಮಾರ್ಗದರ್ಶಿ.

ಹೆಲ್ಮ್‌ಫೈಲ್‌ನಲ್ಲಿ ಬಿಡುಗಡೆಗಳನ್ನು ವಿವರಿಸಲು ಸ್ಪಷ್ಟವಲ್ಲದ ಮಾರ್ಗಗಳೊಂದಿಗೆ ನಾವು ಪರಿಚಯ ಮಾಡಿಕೊಳ್ಳುತ್ತೇವೆ

ನಾವು ಹೆಲ್ಮ್ ಚಾರ್ಟ್‌ಗಳ ಪ್ಯಾಕ್ ಅನ್ನು ಹೊಂದಿದ್ದೇವೆ ಎಂದು ಹೇಳೋಣ (ಉದಾಹರಣೆಗೆ, ಪೋಸ್ಟ್‌ಗ್ರೆಸ್ ಮತ್ತು ಕೆಲವು ಬ್ಯಾಕೆಂಡ್ ಅಪ್ಲಿಕೇಶನ್ ಎಂದು ಹೇಳೋಣ) ಮತ್ತು ಹಲವಾರು ಪರಿಸರಗಳು (ಹಲವಾರು ಕುಬರ್ನೆಟ್ ಕ್ಲಸ್ಟರ್‌ಗಳು, ಹಲವಾರು ನೇಮ್‌ಸ್ಪೇಸ್‌ಗಳು, ಅಥವಾ ಎರಡರಲ್ಲೂ ಹಲವಾರು). ನಾವು ಹೆಲ್ಮ್‌ಫೈಲ್ ಅನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತೇವೆ, ದಸ್ತಾವೇಜನ್ನು ಓದುತ್ತೇವೆ ಮತ್ತು ನಮ್ಮ ಪರಿಸರ ಮತ್ತು ಬಿಡುಗಡೆಗಳನ್ನು ವಿವರಿಸಲು ಪ್ರಾರಂಭಿಸುತ್ತೇವೆ:

    .
    ├── 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: ಯಾಮ್ಲ್ ವಿಭಜಕವನ್ನು ಬಳಸುವುದು ಅವಶ್ಯಕ ---, ಇದರಿಂದ ನೀವು ಪರಿಸರದಿಂದ ಮೌಲ್ಯಗಳೊಂದಿಗೆ ಟೆಂಪ್ಲೇಟ್ ಬಿಡುಗಡೆಗಳನ್ನು (ಮತ್ತು ಹೆಲ್ಮ್‌ಡೀಫಾಲ್ಟ್‌ಗಳಂತಹ ಇತರ ಭಾಗಗಳು) ಮಾಡಬಹುದು

ಈ ಸಂದರ್ಭದಲ್ಲಿ, ಪೋಸ್ಟ್‌ಗ್ರೆಸ್ ಬಿಡುಗಡೆಯನ್ನು ಉತ್ಪಾದನೆಯ ವಿವರಣೆಯಲ್ಲಿ ಸೇರಿಸಲಾಗುವುದಿಲ್ಲ. ತುಂಬಾ ಆರಾಮದಾಯಕ!

ಬಿಡುಗಡೆಗಳಿಗಾಗಿ ಅತಿಕ್ರಮಿಸಬಹುದಾದ ಜಾಗತಿಕ ಮೌಲ್ಯಗಳು

ಸಹಜವಾಗಿ, ನೀವು ಪ್ರತಿ ಪರಿಸರಕ್ಕೆ ಹೆಲ್ಮ್ ಚಾರ್ಟ್‌ಗಳಿಗಾಗಿ ಮೌಲ್ಯಗಳನ್ನು ಹೊಂದಿಸಬಹುದು ಎಂಬುದು ಅದ್ಭುತವಾಗಿದೆ, ಆದರೆ ನಾವು ಹಲವಾರು ಪರಿಸರಗಳನ್ನು ವಿವರಿಸಿದರೆ ಮತ್ತು ಉದಾಹರಣೆಗೆ, ಎಲ್ಲರಿಗೂ ಒಂದೇ ರೀತಿ ಹೊಂದಿಸಲು ನಾವು ಬಯಸುತ್ತೇವೆ 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

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ