Sobes.tech
Middle

Чӣ гуна истифода бурдани шаблонҳои Helm?

sobes.tech AI

Ҷавоб аз AI

Шаблони Helm имкон медиҳанд, ки ба таври динамик манифестҳои Kubernetes асос ёфта ба арзишҳо ва функсияҳо тавлид шаванд.

Компонентҳои асосии шаблонсозӣ:

  • Шаблонҳо (Templates): Файлҳои YAML бо синтаксиси дарунсохти Go template.
  • Арзишҳо (Values): Файлҳои YAML ё параметрҳои командӣ, ки маълумотҳоро барои пур кардани шаблонҳо доранд.
  • Функсияҳо (Functions): Функсияҳои дарунсохт ё махсуси Go template барои коркард ва тавлиди сатрҳо.

Масали асосии deployment.yaml:

apiVersion: apps/v1  
kind: Deployment  
metadata:  
  name: {{ .Release.Name }}-{{ .Chart.Name }}  
spec:  
  replicas: {{ .Values.replicaCount }}  
  selector:  
    matchLabels:  
      app: {{ .Chart.Name }}  
  template:  
    metadata:  
      labels:  
        app: {{ .Chart.Name }}  
    spec:  
      containers:  
        - name: {{ .Chart.Name }}  
          image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"  
          ports:  
            - containerPort: {{ .Values.service.port }}

Масали файли values.yaml:

replicaCount: 1  
image:  
  repository: nginx  
  tag: latest  
service:  
  port: 80

Истифодаи ёрдамчиҳо (helpers) барои блокҳои такрорӣ, одатан дар файл _helpers.tpl:

{{/*  
Теги умумӣ  
*/}}  
{{- define "mychart.labels" -}}  
helm.sh/chart: {{ include "mychart.chart" . }}  
{{ include "mychart.selectorLabels" . }}  
{{- if .Chart.AppVersion }}  
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}  
{{- end }}  
app.kubernetes.io/интихоб: {{ .Release.Name }}  
app.kubernetes.io/идоракунии: {{ .Release.Service }}  
{{- end }}  

{{/*  
Теги интихобӣ  
*/}}  
{{- define "mychart.selectorLabels" -}}  
app.kubernetes.io/name: {{ include "mychart.name" . }}  
app.kubernetes.io/интихоб: {{ .Release.Name }}  
{{- end }}

Даъвати ёрдамчи дар шаблон:

labels:  
  {{ include "mychart.labels" . | nindent 4 }}

Функсияҳои асосии Helm бо Go templates:

Функсия Тавсиф Масал
include Мазмуни шаблони дигарро ворид мекунад. {{ include "my.helper" . }}
nindent Иловаи indent барои матни бисёрхатра. `{{ .Values.multiline
quote Гирду атрофи сатрро бо қавс мегирад. `{{ .Values.someString
default Қимати пешфарзро муқаррар мекунад. `{{ .Values.replicas
required Агар арзиш набошад, хато медиҳад. {{ required "A database password is required!" .Values.database.password }}
toJson Маълумотро ба JSON табдил медиҳад. `{{ .Values.config
toYaml Маълумотро ба YAML табдил медиҳад. `{{ .Values.config

Таҳлил кардани арзишҳои холӣ: - пас аз {{ ва пеш аз }} ҷойҳоро тоза мекунад.

{{- range .Values.items }}  
- name: {{ .name }}  
  value: {{ .value | quote }}  
{{- end -}}

Логикаи шохасозӣ ва циклҳо:

{{- if .Values.ingress.enabled }}  
apiVersion: networking.k8s.io/v1  
kind: Ingress  
...  
{{- end }}  

{{- range $key, $value := .Values.configMapData }}  
  {{ $key }}: {{ $value | quote }}  
{{- end }}

Тестгирии шаблонҳо:

helm lint mychart  # Санҷиши синтаксис  
helm template mychart --values mychart/values.yaml  # Натиҷагирии шаблон бо арзишҳо