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 # Натиҷагирии шаблон бо арзишҳо