Middle
Helm shablonlarini qanday ishlatish mumkin?
sobes.tech AI
AIdan javob
Helm shablonlari belgilangan qiymatlar va funksiyalar asosida Kubernetes manifestlarini dinamik tarzda yaratishga imkon beradi.
Shablonning asosiy komponentlari:
- Shablonlar (Templates): Go template sintaksisi bilan yozilgan YAML manifest fayllari.
- Qiymatlar (Values): Shablonlarni to'ldirish uchun ma'lumotlarni o'z ichiga olgan YAML fayllar yoki buyruq satri parametrlari.
- Funktsiyalar (Functions): Qiymatlarni qayta ishlash va satrlar yaratish uchun ichki yoki maxsus Go template funksiyalari.
Asosiy deployment.yaml shabloni misoli:
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 fayli misoli:
replicaCount: 1
image:
repository: nginx
tag: latest
service:
port: 80
Qayta ishlatiladigan kod bloklari uchun yordamchilar (helpers) ishlatiladi, odatda _helpers.tpl faylida:
{{/*
Umumiy yorliqlar
*/}}
{{- 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/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}
{{/*
Tanlov yorliqlari
*/}}
{{- define "mychart.selectorLabels" -}}
app.kubernetes.io/name: {{ include "mychart.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}
Yordamchini chaqirish:
labels:
{{ include "mychart.labels" . | nindent 4 }}
Helm'da Go template funksiyalarining asosiy turlari:
| Funksiya | Tavsifi | Misol |
|---|---|---|
include |
Boshqa shablon mazmunini joylashtiradi. | {{ include "my.helper" . }} |
nindent |
Ko'p qatorli chiqishni indent qiladi. | `{{ .Values.multiline |
quote |
Matnni qo'shtirnoq ichiga oladi. | `{{ .Values.someString |
default |
Standart qiymatni o'rnatadi. | `{{ .Values.replicas |
required |
Qiymat bo'lmasa, xato chiqaradi. | {{ required "Ma'lumotlar bazasi paroli talab qilinadi!" .Values.database.password }} |
toJson |
Ma'lumotlarni JSON satriga aylantiradi. | `{{ .Values.config |
toYaml |
Ma'lumotlarni YAML satriga aylantiradi. | `{{ .Values.config |
Bo'shliqni boshqarish: - {{ va }} orasida bo'lsa, bo'sh joylarni olib tashlaydi.
{{- range .Values.items }}
- name: {{ .name }}
value: {{ .value | quote }}
{{- end -}}
Shartli operatorlar va sikllar:
{{- if .Values.ingress.enabled }}
apiVersion: networking.k8s.io/v1
kind: Ingress
...
{{- end }}
{{- range $key, $value := .Values.configMapData }}
{{ $key }}: {{ $value | quote }}
{{- end }}
Shablonlarni test qilish:
helm lint mychart # Asosiy sintaksis tekshiruvi
helm template mychart --values mychart/values.yaml # Shablonni qiymatlar bilan render qilish