Implementeren met Helm

Voltooid

U hebt zowel uw faserings- als productieinstallatiekopieën naar uw Azure Container Registry-exemplaar gebouwd en gepusht. Het is tijd om alle stappen te automatiseren en de pijplijn voor u te laten werken.

Op dit moment moet u bestanden handmatig wijzigen telkens wanneer u de pijplijn uitvoert, zodat u niet automatisch kunt implementeren. U kunt dit probleem oplossen door een Helm-grafiek te gebruiken om uw implementaties te beheren. In deze les leert u meer over Helm-grafieken en -sjablonen.

Helm-grafieken

Helm is een opensource-pakketprogramma dat vergelijkbaar is met Linux-pakketbeheerders zoals APT en Yum. Helm kan u helpen bij het installeren en beheren van de levenscyclus van Kubernetes-toepassingen.

U gebruikt Helm voor het beheren van Kubernetes-grafieken. Dit zijn groepen van een of meer workloads die zijn verpakt met configuratiebestanden en een grafiekbeschrijvingsbestand. Bij het inpakken in een grafiek kunnen de bestanden eenvoudig als een eenheid naar een Kubernetes-cluster worden geïmplementeerd.

Een van de voordelen van het gebruik van Helm is dat u bestanden niet afzonderlijk hoeft te implementeren. U kunt één opdracht geven om de grafiek te implementeren. U kunt zelfs meerdere afhankelijke grafieken implementeren met een automatische afhankelijkheidsoplossing.

Hier volgt de structuur van een typische Helm-grafiekmap:

Screenshot that shows an example of a Helm chart tree.

  • Het bestand Chart.yaml bevat de naam, beschrijving en versie van de grafiek.
  • De map grafieken bevat afhankelijke grafieken.
  • De map met sjablonen bevat alle manifestbestanden.
  • Het bestand values.yaml bevat de standaardwaarden voor de Helm-sjablonen.

Helm-sjablonen

Een onderscheidende functie van het Helm-hulpprogramma is de mogelijkheid om sjablonen te maken en beheren om geautomatiseerde implementaties uit te voeren. Met sjablonen kunnen manifestbestanden worden geautomatiseerd en toegevoegd aan een CI/CD-pijplijn. Een sjabloonbestand is een manifestbestand dat tijdelijke aanduidingen voor variabele waarden bevat.

Bekijk het volgende voorbeeld van het bestand deployment.yaml in de kubernetes-map van uw websitefork:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: contoso-website
spec:
  selector:
    matchLabels:
      app: contoso-website
  template:
    metadata:
      labels:
        app: contoso-website
    spec:
      containers:
        - image: !IMAGE!
          name: contoso-website
          resources:
            requests:
              cpu: 100m
              memory: 128Mi
            limits:
              cpu: 250m
              memory: 256Mi
          ports:
            - containerPort: 80
              name: http

Uw werkstroom vervangt de tijdelijke aanduiding door uw !IMAGE! Container Registry-exemplaar en de naam van de installatiekopieën. In een handmatige werkstroom kunt u de volgende opdracht uitvoeren om de !IMAGE! tijdelijke aanduiding te vervangen en vervolgens het resultaat af te drukken. Als u de code handmatig wilt uitvoeren, kunt u de opdracht doorsluisen om de workloads te kubectl apply -f - maken:

$ sed 's+!IMAGE!+'"$ACR_NAME"'/contoso-website+g' kubernetes/deployment.yaml

Deze handmatige oplossing is echter niet elegant of efficiënt. Met systeemeigen Helm-sjablonen kunt u in plaats daarvan de {{.Values.containerImage}} variabele vervangen!IMAGE!.

...
  template:
...
    spec:
      containers:
        - image: {{.Values.containerImage}}
...

Vervolgens voert u uit helm install om naar uw afbeelding te verwijzen en de map grafieken door te geven:

$ helm install contoso-website ./chart-location --set containerImage="$ACR_NAME/contoso-website"

Helm biedt ook sjabloonfuncties voor complexere logica, bijvoorbeeld om standaard- en vereiste waarden in uw omgeving op te nemen. Ga verder met de volgende eenheid om een Helm-grafiek te maken om uw CI/CD-pijplijn efficiënter te maken.

Test uw kennis

1.

Wat is Helm?

2.

Wat maakt Helm vooral nuttig in een CI/CD-pijplijn?