Sobes.tech
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  # Շաբլոնի արտապատկերում արժեքներով