Sobes.tech
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