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.tpl ფაილში:
{{/*
საერთო ლეიბლები
*/}}
{{- define "mychart.labels" -}}
helm.sh/chart: {{ include "mychart.chart" . }}
{{ include "mychart.selectorLabels" . }}
{{- თუ .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
{{/*
სელექტორ ლეიბლები
*/}}
{{- define "mychart.selectorLabels" -}}
app.kubernetes.io/name: {{ include "mychart.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}
შაბლონის გამოყენება ჰელპერის საშუალებით:
labels:
{{ include "mychart.labels" . | nindent 4 }}
ძირითადი Go template-ის ფუნქციები, რომლებიც ხშირად გამოიყენება Helm-ში:
| ფუნქცია | აღწერა | მაგალითი |
|---|---|---|
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 -}}
შაქრიანი ლოგიკა და ციკლები:
{{- თუ .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 # შაბლონის რენდერი მნიშვნელობებით