Middle
Kā izmantot Helm šablonus?
sobes.tech AI
Atbilde no AI
Helm šabloni ļauj dinamiskā veidā ģenerēt Kubernetes manifestus, pamatojoties uz noteiktajām vērtībām un funkcijām.
Galvenie šablonizācijas komponenti:
- Šabloni (Templates): YAML faili ar iebūvētu Go šablona sintaksi.
- Vērtības (Values): YAML faili vai komandrindas parametri, kas satur datus šablonu aizpildīšanai.
- Funkcijas (Functions): iebūvētas vai pielāgotas Go šablona funkcijas, kas paredzētas vērtību apstrādei un rindu ģenerēšanai.
Piemērs pamata deployment.yaml šablonam:
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 }}
Vērtību fails values.yaml:
replicaCount: 1
image:
repository: nginx
tag: latest
service:
port: 80
Palīdzības funkciju izmantošana (helpers), parasti failā _helpers.tpl:
{{/*
Kopīgas etiķetes
*/}}
{{- define "mychart.labels" -}}
helm.sh/chart: {{ include "mychart.chart" . }}
{{ include "mychart.selectorLabels" . }}
{{- ja .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
{{/*
Atlases etiķetes
*/}}
{{- define "mychart.selectorLabels" -}}
app.kubernetes.io/name: {{ include "mychart.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}
Šablona izmantošana ar palīgu funkciju:
labels:
{{ include "mychart.labels" . | nindent 4 }}
Galvenās Go šablona funkcijas, kas bieži tiek izmantotas Helm:
| Funkcija | Apraksts | Piemērs |
|---|---|---|
include |
Iekļauj cita šablona saturu. | {{ include "my.helper" . }} |
nindent |
Iekļauj daudzrindu izvadi ar atstarpēm. | `{{ .Values.multiline |
quote |
Apņem virkni ar pēdiņām. | `{{ .Values.someString |
default |
Nosaka noklusējuma vērtību. | `{{ .Values.replicas |
required |
Noraida, ja vērtība nav norādīta. | {{ required "Nepieciešama datu bāzes parole!" .Values.database.password }} |
toJson |
Pārvērš datus uz JSON virkni. | `{{ .Values.config |
toYaml |
Pārvērš datus uz YAML virkni. | `{{ .Values.config |
Trokšņa pārvaldība: - pēc {{ un pirms }} noņem tukšumus.
{{- range .Values.items }}
- name: {{ .name }}
value: {{ .value | quote }}
{{- end -}}
Lēmumu un ciklu loģika:
{{- ja .Values.ingress.enabled }}
apiVersion: networking.k8s.io/v1
kind: Ingress
...
{{- end }}
{{- range $key, $value := .Values.configMapData }}
{{ $key }}: {{ $value | quote }}
{{- end }}
Šablonu testēšana:
helm lint mychart # pamata sintakses pārbaude
helm template mychart --values mychart/values.yaml # šablona renderēšana ar vērtībām