Gyakorlat – Helm-diagram létrehozása üzembe helyezéshez

Befejeződött

Ebben a leckében egy Helm-diagramot hoz létre az Azure Kubernetes Service-ben (AKS) a GitHub Actions használatával. A Helm-diagram létrehozásához hajtsa végre a következő feladatokat:

  • Ellenőrizze a Helm telepítését.
  • Diagram létrehozása.
  • Konfigurálja a diagramot.
  • Hozzon létre egy üzembe helyezést.
  • Hozzon létre egy üres YAML-fájlt.
  • Tartalom hozzáadása a YAML-fájlhoz.
  • Hozzon létre egy szolgáltatást.
  • Bejövő forgalom létrehozása.
  • Hozzon létre egy DNS-zónanevet.

Ellenőrizze a Helm telepítését, és frissítse az adattárat

A Helm CLI már telepítve van az Azure Cloud Shellben. Ha még nem nyitotta meg a Cloud Shellt, jelentkezzen be a Cloud Shellbe, és győződjön meg arról, hogy a Bash Cloud Shell-terminálként van beállítva.

  1. Futtassa helm version , és győződjön meg arról, hogy a megjelenített Helm-verzió nagyobb, mint 3.

  2. Váltson az elágazott adattárra ehhez a modulhoz a futtatásával cd mslearn-aks-deployment-pipeline-github-actions.

  3. Futtassa git pull origin main a korábbi egységek módosításainak lekéréséhez.

Helm-diagram létrehozása

Hozzon létre egy boilerplate Helm-sablont az adattár kubernetes könyvtárában.

  1. A Cloud Shellben váltson a kubernetes könyvtárra:

    cd kubernetes
    
  2. Egy contoso-website nevű új könyvtár létrehozásához használható helm create a kubernetes könyvtárban:

    helm create contoso-website
    
  3. Váltson az új könyvtárra a következővel cd: .

    cd contoso-website
    
  4. Törölje a diagramok és sablonok mappáit ebben a könyvtárban.

    rm -r charts templates
    
  5. Hozzon létre egy új üres sablonmappát .

    mkdir templates
    
  6. Ha számítási feladatokat szeretne létrehozni az üres diagramon, hozzon létre egy új YAML-fájlt úgy, hogy a kubernetesben lévő meglévő fájlokat az új sablonok mappájába helyezi:

    mv ../*.yaml ./templates
    

Most már van egy új Helm-diagramja. Ezután konfigurálja a diagramot.

A diagram konfigurálása

  1. Futtassa cd ../.. a váltást az adattár gyökerére.

  2. Futtassa code . a kódszerkesztő megnyitását az aktuális könyvtárban.

  3. A bal oldali menüben bontsa ki a kubernetes/contoso-website mappát, és nyissa meg a Chart.yaml fájlt. A Diagram.yaml az a fájl, amely a diagram nevét tartalmazza, és ahol a Helm információkat keres a diagramról.

  4. Távolítsa el a fájl összes tartalmát az első három sor és a diagramverzió kivételével, és szerkessze a leírást, hogy a fájl a következő példához hasonlóan nézzen ki:

    apiVersion: v2
    name: contoso-website
    description: Chart for the Contoso company website
    version: 0.1.0
    
  5. Mentse a fájlt a szerkesztő eszköztárának jobb felső sarkában, majd válassza a Mentés lehetőséget, vagy nyomja le a Ctrl+S billentyűkombinációt.

Üzembe helyezés létrehozása

Sablonokat adhat hozzá ehhez az üzembe helyezéshez.

  1. A bal oldali menüben nyissa meg a deployment.yaml fájlt a kubernetes/templates mappában.

  2. A fő metadata szakaszban adjon hozzá egy új, az értékhez {{ default "staging" .Release.Namespace }}kapcsolódó namespace kulcsot. A metadata szakasznak a következő példához hasonlóan kell kinéznie:

    metadata:
      name: contoso-website
      namespace: {{ default "staging" .Release.Namespace }}
    

    Alapértelmezés szerint a munkafolyamat telepíti ezt az erőforrást a staging névtérbe, de ha a helm install parancs rendelkezik egy Namespace lehetőséggel, a munkafolyamat ezt a névteret használja.

  3. template/containersspec/A szakasz alatt cserélje le !IMAGE! az AKS-fürt vagy tag az latest abból származó verziókra.

    Célszerű felosztani a registryimagekép nevét és tag részeit, hogy könnyebben működjenek velük. Adjon hozzá három új sablonváltozót, amelyek a következő értékeket Values.image.registryhasználják: , Values.image.nameés Values.image.tag.

    - image: {{ .Values.image.registry }}.azurecr.io/{{ .Values.image.name }}:{{ default "latest" .Values.image.tag }}
    

    A deployment.yaml fájlnak a következő példához hasonlóan kell kinéznie:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: contoso-website
      namespace: {{ default "staging" .Release.Namespace }}
    spec:
      selector:
        matchLabels:
          app: contoso-website
      template:
        metadata:
          labels:
            app: contoso-website
        spec:
          containers:
            - image: {{ .Values.image.registry }}.azurecr.io/{{ .Values.image.name }}:{{ default "latest" .Values.image.tag }}
              name: contoso-website
              resources:
                requests:
                  cpu: 100m
                  memory: 128Mi
                limits:
                  cpu: 250m
                  memory: 256Mi
              ports:
                - containerPort: 80
                  name: http
    
  4. Mentse a fájlt.

Tartalom hozzáadása a values.yaml fájlhoz

Korábban használt {{ .Release.Namespace }}, így Release a változó hatóköre is. Minden változóhatókörhöz más alapértelmezett értékek és változók tartoznak. A values.yaml fájl egy másik változó hatóköre. A Helm a values.yaml fájlt használja az összes sablonérték lekéréséhez, amely a következővel {{ .Values }}kezdődik: .

Ennek a fájlnak ugyanazzal a struktúrával kell rendelkeznie, mint a változók meghívásához használt fájlnak. A szerkezet megtekintéséhez tekintse meg gyorsan a szerkesztett deployment.yaml fájlt. Figyelje meg, hogy a deployment.yaml fájlban és a deployment.yaml fájlban használta.Values.image.registry.Values.image.name..Values.image.tag

  1. A contoso-website könyvtár gyökerében nyissa meg a values.yaml fájlt.

  2. Törölje a fájl teljes tartalmát, hogy üres YAML-fájlt kapjon.

  3. Adja hozzá az alábbi tartalmat az üres fájlhoz, és cserélje le a <ACR-NAME> helyőrzőt az Azure Container Registry nevére.

    image:
      registry: <ACR-NAME>
      name: contoso-website
      tag: latest
    

    Ezek az értékek az alapértelmezett értékek, ha nem ad át paraméterként egy másik értéket a --set Helm parancs lehetőségével.

  4. Mentse a fájlt.

Szolgáltatás létrehozása

  1. Nyissa meg a service.yaml fájlt a sablonok mappájában.

  2. metadata A fájl szakaszában adjon hozzá egy új, úgynevezett namespace kulcsot, amely ugyanazt az értéket használja, mint amelyet a deployment.yaml fájlban használt.

       namespace: {{ default "staging" .Release.Namespace }}
    

    A service.yaml fájlnak a következő példához hasonlóan kell kinéznie:

    apiVersion: v1
    kind: Service
    metadata:
      name: contoso-website
      namespace: {{ default "staging" .Release.Namespace }}
    spec:
      ports:
        - port: 80
          protocol: TCP
          targetPort: http
          name: http
      selector:
        app: contoso-website
      type: ClusterIP
    
  3. Mentse a fájlt.

Bemeneti fájl létrehozása

  1. Nyissa meg az ingress.yaml fájlt.

  2. metadata A fájl szakaszában adja hozzá ismét a namespace deployment.yaml fájlban használt értéket.

  3. Lépjen az host kulcshoz. Külön gazdagépeket hoz létre az előkészítéshez és az éles környezetekhez, így a felhasználók nem férhetnek hozzá a staging névtérhez éles URL-címek használatával. Fűzze össze a névteret a gazdagép nevében. A névfeloldást a HTTP-alapú alkalmazás-útválasztási bővítmény kezeli az AKS-fürtben.

           - host: contoso-{{ default "staging" .Release.Namespace }}.!DNS!
    
  4. Cserélje le !DNS! egy új sablonváltozóra a DNS-zóna nevéhez.

           - host: contoso-{{ default "staging" .Release.Namespace }}.{{ .Values.dns.name }}
    

    A végleges ingress.yaml fájlnak a következő példához hasonlóan kell kinéznie:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: contoso-website
      namespace: {{ default "staging" .Release.Namespace }}
      annotations:
        kubernetes.io/ingress.class: addon-http-application-routing
    spec:
      rules:
        - host: contoso-{{ default "staging" .Release.Namespace }}.{{ .Values.dns.name }}
          http:
            paths:
              - backend:
                  service:
                    name: contoso-website
                    port:
                      name: http
                path: /
                pathType: Prefix
    
  5. Mentse a fájlt.

DNS-zónanévérték hozzáadása

  1. Nyissa meg a values.yaml fájlt, és adjon hozzá egy dns.name kulcsot a image kulcs után. Cserélje le <ACR-NAME> a tárolóregisztrációs adatbázis nevére és <DNS-NAME> az AKS DNS-zóna nevére a beállításszkript kimenetéből. A fájlnak a következő példához kell hasonlítania:

    image:
      registry: <ACR-NAME>
      name: contoso-website
      tag: latest
    
    dns:
      name: <DNS-NAME>
    

    Ha nem rendelkezik a DNS-zóna nevével az eredeti beállítási szkript kimenetéből, futtassa a következő Azure CLI-lekérdezést egy másik Cloud Shell-ablakban a lekéréséhez, és cserélje le a helyőrzőt az <resource-group-name> erőforráscsoport nevére.

    az aks show -g <resource-group-name> -n contoso-website -o tsv --query addonProfiles.httpApplicationRouting.config.HTTPApplicationRoutingZoneName
    
  2. Mentse a fájlt.

Módosítások leküldése

Zárja be a Cloud Shell-szerkesztőt a szerkesztő eszköztárának jobb felső sarkában, majd válassza a Szerkesztő bezárása lehetőséget.

Az elágazás összes módosításának leküldéséhez futtassa a következő parancsokat a Cloud Shellben a következő sorrendben:

git add .
git commit -m "Add helm"
git push -u origin main

Amikor a rendszer kéri, adja meg jelszóként a korábban létrehozott PAT-t.

Folytassa a következő leckével a Helm-diagram és -alkalmazás üzembe helyezéséhez az AKS-ben a GitHub Actions használatával.