Sobes.tech
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