Middle
Kaip naudoti Helm šablonus?
sobes.tech AI
Atsakymas iš AI
Helm šablonai leidžia dinamiškai generuoti Kubernetes žinynus remiantis nustatytais reikšmėmis ir funkcijomis.
Pagrindiniai šablonizacijos komponentai:
- Šablonai (Templates): YAML failai su įterptu Go šablono sintaksu.
- Reikšmės (Values): YAML failai arba komandinės eilutės parametrai, turintys duomenis šablonų užpildymui.
- Funkcijos (Functions): įmontuotos arba pritaikytos Go šablono funkcijos, skirtos reikšmių apdorojimui ir eilučių generavimui.
Pavyzdinis bazinis deployment.yaml šablonas:
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 }}
Reikšmių failas values.yaml:
replicaCount: 1
image:
repository: nginx
tag: latest
service:
port: 80
Naudojant pagalbininkus (helpers), dažniausiai faile _helpers.tpl:
{{/*
Bendros žymės
*/}}
{{- define "mychart.labels" -}}
helm.sh/chart: {{ include "mychart.chart" . }}
{{ include "mychart.selectorLabels" . }}
{{- jei .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
{{/*
Pasirinkimo žymės
*/}}
{{- define "mychart.selectorLabels" -}}
app.kubernetes.io/naming: {{ include "mychart.name" . }}
app.kubernetes.io/instancija: {{ .Release.Name }}
{{- end }}
Naudojant helper funkciją šablone:
labels:
{{ include "mychart.labels" . | nindent 4 }}
Pagrindinės Go šablono funkcijos, dažnai naudojamos Helm:
| Funkcija | Aprašymas | Pavyzdys |
|---|---|---|
include |
įterpia kito šablono turinį. | {{ include "my.helper" . }} |
nindent |
įterpia daugiasluoksnį išvedimą su įtraukimu. | `{{ .Values.multiline |
quote |
apgaubia eilutę kabutėmis. | `{{ .Values.someString |
default |
nustato numatytąją reikšmę. | `{{ .Values.replicas |
required |
atsisako, jei reikšmė nėra pateikta. | {{ required "Reikalingas duomenų bazės slaptažodis!" .Values.database.password }} |
toJson |
paverčia duomenis į JSON eilutę. | `{{ .Values.config |
toYaml |
paverčia duomenis į YAML eilutę. | `{{ .Values.config |
Valdymas tarpais: - po {{ ir prieš }} pašalina tarpų simbolius.
{{- range .Values.items }}
- name: {{ .name }}
value: {{ .value | quote }}
{{- end -}}
Sąlygų ir ciklų logika:
{{- jei .Values.ingress.enabled }}
apiVersion: networking.k8s.io/v1
kind: Ingress
...
{{- end }}
{{- range $key, $value := .Values.configMapData }}
{{ $key }}: {{ $value | quote }}
{{- end }}
Šablonų testavimas:
helm lint mychart # pagrindinė sintaksės patikra
helm template mychart --values mychart/values.yaml # šablono renderinimas su reikšmėmis