Skip to content

NimTechnology

Trình bày các công nghệ CLOUD một cách dễ hiểu.

  • Kubernetes & Container
    • Docker
    • Kubernetes
      • Ingress
      • Pod
    • Helm Chart
    • OAuth2 Proxy
    • Isito-EnvoyFilter
    • Apache Kafka
      • Kafka
      • Kafka Connect
      • Lenses
    • Vault
    • Longhorn – Storage
    • VictoriaMetrics
    • MetalLB
    • Kong Gateway
  • CI/CD
    • ArgoCD
    • ArgoWorkflows
    • Argo Events
    • Spinnaker
    • Jenkins
    • Harbor
    • TeamCity
    • Git
      • Bitbucket
  • Coding
    • DevSecOps
    • Terraform
      • GCP – Google Cloud
      • AWS – Amazon Web Service
      • Azure Cloud
    • Golang
    • Laravel
    • Python
    • Jquery & JavaScript
    • Selenium
  • Log, Monitor & Tracing
    • DataDog
    • Prometheus
    • Grafana
    • ELK
      • Kibana
      • Logstash
  • BareMetal
    • NextCloud
  • Toggle search form

[helm chart] How to use “range” in helm chart – Kubernetes

Posted on January 17, 2022May 20, 2023 By nim No Comments on [helm chart] How to use “range” in helm chart – Kubernetes

Như helm đã mô tả:
range, which provides a “for each”-style loop

https://helm.sh/docs/chart_template_guide/control_structures/#looping-with-the-range-action

Nếu bạn có 1 value như sau:

ingress:
  enabled: true
  hosts:
    - host: ad-ranker-staging.nimtechnology.com
      paths:
        - path: /
          port: '8080'
    - host: ad-ranker-staging-grpc.nimtechnology.com
      paths:
        - port: '9091'
          protocol: grpc
        - port: '9090'
          protocol: grpc

chúng ta sẽ loop các phần tử của mang hosts, bạn có thể các gạch đầu dòng (-)

{{- range $index, $value := .Values -}}
{{- end -}}
{{- $typeValueEnvVars := list "string" "float64" "bool"}}
...
...
env:
  {{- range $key, $value := .Values.envVars }}
  	{{- $tp := typeOf $value }}
  	{{- if has $tp $typeValueEnvVars }}
  - name: {{ $key }}
    value: {{ $value | quote }}
  	{{- else }}
  - name: {{ $key }}
  {{- toYaml $value | nindent 12 }}
  	{{- end }}
  {{- end }}

nó gần như các loại ngôn ngữ khác:
bắt đầu bằng range và kết thúc end
bạn loop array là Values lúc này để từng giá trị sẽ là $value và $index(thứ tự)

spec:
  rules:
{{- range $index, $host := $.Values.ingress.hosts -}}
    - host: $host.host
{{- end -}}
kết sẽ như thế này.

các bạn để ý là có tiếp tục chấm để đi vào các phần tử bên trong:
$host.host
$host.paths -> chỗ này chúng ta có thể range tiếp.

Đôi khi index cũng thử, bạn có thể bỏ đi:

{{- range $index, $value := .Values -}}
{{- end -}}

Thêm kiểu rút gọn hơn:

{{- range .Values.ingress.hosts }}
{{- if .host }}
  - host: {{ .host | quote }}
    http:
      paths:
      {{- range .paths }}
        - path: {{ .path }}
          pathType: ImplementationSpecific
          backend:
            service:
              name: {{ $fullName }}
              port: 
                number: {{ .port }}
      {{- end }}
{{- end }}
{{- end }}
ta gọi thẳng key .host và nhận value của key đó
bạn sẽ thấy điều tương tự ở .paths và .path
{{- range $indexGrpc, $hostGrpc := $.Values.ingress.hosts -}}
{{- end -}}
bạn có thắc mắc sao lại có $ ở đây không.

Mình nghe nói đôi khi vòng loop bị ngáo.
nếu bạn để $.Values thì nó lấy vị thứ 0 hay sát lề bên phải

with inside range

Để bạn có thể sự dụng range và vừa lấy được các giá trị ở ngoài vòng range thì phải khai báo {{ with $ }}

Helm Chart

Post navigation

Previous Post: [Kibana-ELK] Installing and Seting a Kibana For ELK
Next Post: [Helm-chart] Declare “template” in helm-chart – Kubernetes

More Related Articles

[Helm/Github] Create a public Helm chart repository with GitHub Pages Helm Chart
[Helm Chart] Public Helm Chart Repository on Artifact Hub Helm Chart
[Helm chart] Where will you save or push helm packages? Helm Chart
[helm-chart] Using “toYaml” to design helm-chart – Kubernetes Helm Chart
[Kustomize] How to combine Kustomize and Helm-chart! Helm Chart
[Helm-chart] Declare “template” in helm-chart – Kubernetes Helm Chart

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Tham Gia Group DevOps nhé!
Để Nim có nhiều động lực ra nhiều bài viết.
Để nhận được những thông báo mới nhất.

Recent Posts

  • [Laravel] Laravel Helpful June 26, 2025
  • [VScode] Hướng dẫn điều chỉnh font cho terminal June 20, 2025
  • [WordPress] Hướng dấn gửi mail trên WordPress thông qua gmail. June 15, 2025
  • [Bitbucket] Git Clone/Pull/Push with Bitbucket through API Token. June 12, 2025
  • [Teamcity] How to transfer the value from pipeline A to pipeline B June 9, 2025

Archives

  • June 2025
  • May 2025
  • April 2025
  • March 2025
  • February 2025
  • January 2025
  • December 2024
  • November 2024
  • October 2024
  • September 2024
  • August 2024
  • July 2024
  • June 2024
  • May 2024
  • April 2024
  • March 2024
  • February 2024
  • January 2024
  • December 2023
  • November 2023
  • October 2023
  • September 2023
  • August 2023
  • July 2023
  • June 2023
  • May 2023
  • April 2023
  • March 2023
  • February 2023
  • January 2023
  • December 2022
  • November 2022
  • October 2022
  • September 2022
  • August 2022
  • July 2022
  • June 2022
  • May 2022
  • April 2022
  • March 2022
  • February 2022
  • January 2022
  • December 2021
  • November 2021
  • October 2021
  • September 2021
  • August 2021
  • July 2021
  • June 2021

Categories

  • BareMetal
    • NextCloud
  • CI/CD
    • Argo Events
    • ArgoCD
    • ArgoWorkflows
    • Git
      • Bitbucket
    • Harbor
    • Jenkins
    • Spinnaker
    • TeamCity
  • Coding
    • DevSecOps
    • Golang
    • Jquery & JavaScript
    • Laravel
    • NextJS 14 & ReactJS & Type Script
    • Python
    • Selenium
    • Terraform
      • AWS – Amazon Web Service
      • Azure Cloud
      • GCP – Google Cloud
  • Kubernetes & Container
    • Apache Kafka
      • Kafka
      • Kafka Connect
      • Lenses
    • Docker
    • Helm Chart
    • Isito-EnvoyFilter
    • Kong Gateway
    • Kubernetes
      • Ingress
      • Pod
    • Longhorn – Storage
    • MetalLB
    • OAuth2 Proxy
    • Vault
    • VictoriaMetrics
  • Log, Monitor & Tracing
    • DataDog
    • ELK
      • Kibana
      • Logstash
    • Fluent
    • Grafana
    • Prometheus
  • Uncategorized
  • Admin

Copyright © 2025 NimTechnology.