Sari la conținutul principal

De la manifeste la chart

Ce parametrizăm​

În Laboratorul 3, numele resurselor, imaginea, numărul de replici, porturile și dimensiunea PVC-ului erau scrise direct în YAML. În chart, responsabilitățile sunt separate:

Din Lab 3În chart-ul Helm
metadate și versiuniChart.yaml
valori care diferă între instalărivalues.yaml
reguli pentru valori acceptatevalues.schema.json
manifeste Kubernetestemplates/*.yaml
nume și etichete reutilizabiletemplates/_helpers.tpl
instrucțiuni după instalaretemplates/NOTES.txt

Listați structura chart-ului:

find charts/ticketing -maxdepth 3 -type f | sort

Chart.yaml​

Fișierul descrie pachetul:

apiVersion: v2
name: ticketing
type: application
version: 0.1.0
appVersion: "1.0.0"
kubeVersion: ">=1.28.0-0"

version este versiunea chart-ului, iar appVersion documentează versiunea aplicației. Ele nu trebuie confundate: chart-ul se poate schimba fără să se schimbe imaginea aplicației și invers.

values.yaml​

Valorile implicite sunt grupate după componentă:

config:
appVersion: "1.0.0"

api:
replicaCount: 2
image:
repository: ghcr.io/cloud-computing-upb/lab4
tag: "1.0.0"
service:
type: ClusterIP
port: 80

postgresql:
auth:
database: tickets
username: tickets
persistence:
enabled: true
size: 1Gi

Inspectați toate valorile:

helm show values charts/ticketing

Helpers și nume generate​

Fișierul _helpers.tpl definește fragmente reutilizabile. De exemplu, ticketing.apiName produce numele Service-ului și Deployment-ului API, iar ticketing.postgresqlName produce numele componentei de date.

Pentru release-ul ticketing, vom obține:

ticketing-api
ticketing-postgresql
ticketing-config
ticketing-db

Template-urile folosesc și etichetele recomandate:

app.kubernetes.io/name: ticketing
app.kubernetes.io/instance: ticketing
app.kubernetes.io/component: api
app.kubernetes.io/managed-by: Helm

Selectorii se bazează pe etichete stabile, nu pe numele generate ale Pod-urilor.

Schema valorilor​

values.schema.json verifică tipuri și limite, de exemplu că numărul de replici este un întreg între 1 și 10. Încercați intenționat o valoare invalidă:

helm template ticketing charts/ticketing --set api.replicaCount=zero

Randarea trebuie să eșueze înainte ca vreo resursă să ajungă în cluster.