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/instance: {{ .Release.Name }}
app.kubernetes.io/մենեջմենթ-բայ: {{ .Release.Service }}
{{- end }}
{{/*
Ընտրիչ պիտակներ
*/}}
{{- define "mychart.selectorLabels" -}}
app.kubernetes.io/name: {{ include "mychart.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}
Համակարգչային՝ helper-ների կանչում շաբլոնում:
labels:
{{ include "mychart.labels" . | nindent 4 }}
Հիմնական ֆունկցիաներ՝ Helm և Go templates:
| Ֆունկցիա | Նկարագրություն | Օրինակ |
|---|---|---|
include |
Մյուս շաբլոնի բովանդակությունը ներառում է։ | {{ include "my.helper" . }} |
nindent |
Բազմաշերտ տողերի ներսում տեղադրում։ | `{{ .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 # Շաբլոնի արտապատկերում արժեքներով