Gyakorlat – GitHub-művelet létrehozása az AKS-ben való üzembe helyezéshez

Befejeződött

Ebben a gyakorlatban a következő feladatokat fogja elvégezni:

  • A meglévő GitHub-művelet továbbfejlesztése üzembehelyezési feladat belefoglalásához.
  • Ellenőrizze, hogy a módosítások üzembe helyezése az Azure Kubernetes Service -fürtben (AKS) történt-e.
  • Az üzembe helyezés visszaállítása.

A termékszolgáltatás Kubernetes-jegyzékének frissítése

Az eShop termékszolgáltatás új verzióinak üzembe helyezéséhez szerkessze a product.yml fájlt, hogy az az előző leckében használt Azure Container Registryre (ACR) mutasson.

  1. Az elágazott adattárban válassza ki a code tabfájlt, majd válassza ki a product.yml fájlt.

  2. A fájl szerkesztéséhez válassza a szerkesztés ikont (ceruza).

  3. A sor szerkesztése:

    containers:
      - image: [replace with your ACR name].azurecr.io/productservice:latest
    

    Cserélje le az [replace with your ACR name] ACR nevét, például acseshop186748394.

  4. A jobb felső sarokban válassza a Módosítások véglegesítése lehetőséget, majd a párbeszédpanelen válassza a Módosítások véglegesítése lehetőséget.

Az üzembe helyezési művelet létrehozása

A YAML-kód hozzáad egy GitHub-lépést, amely:

Van egy lépés, amely új lemezképeket helyez üzembe. A futó lépései ubuntu-latest a következők:

  1. Ellenőrzi a fájl adattárát.
  2. Az Azure Login a szolgáltatásnév hitelesítő adataival jelentkezik be az Azure-ba.
  3. A kubelogin beállítása nem interaktív bejelentkezéshez konfigurálja a kubeconfig fájlt az Azure-hitelesítéshez.
  4. A K8s-környezetkészlet környezetkészletének lekérése az Azure Kubernetes Service (AKS) hitelesítő adatait állítja be a futó fájljában .kube/config .
  5. Az alkalmazás üzembe helyezése az AKS-ben az előző lépésben létrehozott rendszerkép és a korábban szerkesztett Kubernetes-jegyzékfájl használatával.

A kuponszolgáltatást üzembe helyező GitHub-művelet létrehozásához hajtsa végre az alábbi lépéseket:

  1. Az elágazott adattárban válassza ki a code tab.github/workflows lapot.

  2. Válassza ki azure-kubernetes-service.yml.

  3. A fájl szerkesztéséhez válassza a szerkesztés ikont (ceruza).

  4. A fájl alján illessze be a következő YAML-kódot a szerkesztőbe:

    
      deploy:
        permissions:
          actions: read
          contents: read
          id-token: write
        runs-on: ubuntu-latest
        needs: [buildImage]
        steps:
          # Checks out the repository this file is in
          - uses: actions/checkout@v3
    
          # Logs in with your Azure credentials
          - name: Azure login
            uses: azure/login@v1.4.6
            with:
              creds: '${{ secrets.AZURE_CREDENTIALS }}'
    
          # Use kubelogin to configure your kubeconfig for Azure auth
          - name: Set up kubelogin for non-interactive login
            uses: azure/use-kubelogin@v1
            with:
              kubelogin-version: 'v0.0.25'
    
          # Retrieves your Azure Kubernetes Service cluster's kubeconfig file
          - name: Get K8s context
            uses: azure/aks-set-context@v3
            with:
              resource-group: ${{ env.RESOURCE_GROUP }}
              cluster-name: ${{ env.CLUSTER_NAME }}
              admin: 'false'
              use-kubelogin: 'true'
    
          # Deploys application based on given manifest file
          - name: Deploys application
            uses: Azure/k8s-deploy@v4
            with:
              action: deploy
              manifests: ${{ env.DEPLOYMENT_MANIFEST_PATH }}
              images: |
                ${{ env.AZURE_CONTAINER_REGISTRY }}.azurecr.io/${{ env.CONTAINER_NAME }}:${{ github.sha }}
              pull-images: false
    
    
  5. A jobb felső sarokban válassza a Módosítások véglegesítése..., majd a párbeszédpanelen a Módosítások véglegesítése lehetőséget.

Üzembe helyezés aktiválása

A azure-kubernetes-service.yml fájl frissítése és a módosítások véglegesítése automatikusan elindít egy másik üzembe helyezést. Most megtudhatja, hogyan aktivál egy kódmódosítás egy másik üzembe helyezést.

Van egy új terméke, amit a marketingcsapat szeretne hozzáadni a katalógushoz.

  1. Az elágazott adattárban válassza ki a code tabProducts mappát.

  2. Jelölje ki az Data mappát.

  3. Válassza ki a ProductDataContext.c fájlt.

  4. A fájl szerkesztéséhez válassza a szerkesztés ikont (ceruza).

  5. A fájl alján adjon hozzá egy új terméket a terméktömbhöz :

    new Product {  Name = "Camping Tent 2", Description = "This updated tent is improved and cheaper, perfect for your next trip.", Price = 79.99m, ImageUrl = "product9.png" },
    
  6. A jobb felső sarokban válassza a Módosítások véglegesítése lehetőséget, majd a párbeszédpanelen válassza a Módosítások véglegesítése lehetőséget.

A telepítés monitorozása

  1. Az üzembe helyezés előrehaladásának figyeléséhez válassza a Actions lapot.

  2. Válassza ki az Build and deploy an app to AKS munkafolyamathoz tartozó legújabb munkafolyamat-futtatási listát. A futtatás neve az előző lépésben használt véglegesítési üzenet.

  3. Válassza ki a feladatot a deploy munkafolyamat futtatásának részleteinek megtekintéséhez.

    Screenshot that shows the deploy job selected with a list of all the steps.

  4. A terminálban futtassa a következő parancsot az AKS-fürt kuponszolgáltatás-podjainak figyeléséhez. A --selector jelölő a listát csak a kuponszolgáltatás podjaira szűri, a --watch jelölő pedig arra utasítja, hogy figyelje a módosításokat kubectl .

    kubectl get pods --selector=app=productservice --watch
    

    Az üzembe helyezés során a következő kimenet egy változata jelenik meg:

    NAME                             READY   STATUS    RESTARTS   AGE
    productservice-7979d4c47-xlcrr   1/1     Running   0          17m
    productservice-ff98b6d8d-7wmsh   0/1     Pending   0          0s
    productservice-ff98b6d8d-7wmsh   0/1     Pending   0          0s
    productservice-ff98b6d8d-7wmsh   0/1     ContainerCreating   0          0s
    productservice-ff98b6d8d-7wmsh   1/1     Running             0          4s
    productservice-7979d4c47-xlcrr   1/1     Terminating         0          19m
    

    Az előző kimenetben figyelje meg, hogy létrejön egy új productservice pod. Ha az új pod készen áll, a régi leáll. Ez a folyamat az új verzióra váltást problémamentessé teszi.

Az alkalmazás ellenőrzése

Végezze el az alábbi lépéseket annak ellenőrzéséhez, hogy az alkalmazás továbbra is működik-e:

  • Az üzembe helyezett eShop megtekintéséhez futtassa ezt a parancsot a terminálon:

    echo "http://$(kubectl get services --namespace ingress-nginx ingress-nginx-controller --output jsonpath='{.status.loadBalancer.ingress[0].ip}')"
    

    A fenti parancs a webalkalmazás külső IP-címét adja vissza. Tartsa lenyomva a CTRL billentyűt , és válassza a hivatkozást az alkalmazás új lapon való megnyitásához.

A termékek lapra lépve megtekintheti az oldal alján látható új sátort.

Az üzembe helyezés visszaállítása

Az éles környezet problémáinak egyik gyakori megoldása az ismert, jó üzembe helyezésre való visszatérés. A Kubernetes egy olyan üzembehelyezési előzményt tart fenn, amellyel visszaállíthatja az alkalmazás egy korábbi verzióját.

A terminálban futtassa ezt a parancsot a webhelyhez újonnan hozzáadott sátor eltávolításához:

kubectl rollout undo deployment/productservice

A következő konzolüzenetnek kell megjelennie:

deployment.apps/productservice rolled back

Frissítse a termékek lapját a böngészőben, és az új sátor már nem szerepelhet a listában.

Feljegyzés

Valós forgatókönyv esetén a build összetevőit több környezetben is üzembe helyezheti. Lehet például fejlesztési, tesztelési és előkészítési környezet. Az üzembehelyezési munkafolyamatokat események, például a PRS-ek egyesítése indíthatja el. Minőségi vagy jóváhagyási kapukat adhat hozzá, például az érdekelt felek pr-jóváhagyását, hogy megelőzze a váratlan üzembe helyezéseket az éles környezetben.

Tesztelje tudását

1.

Mi a legjobb hely a bizalmas információk, például a hitelesítő adatok tárolására a GitHub Actionsben?

2.

Mi a célja egy Azure Active Directory-szolgáltatásnév létrehozásának a GitHub Actionshez való használatához?

3.

A frissítés telepítése során miért hoz létre az AKS egy új tárolót, amíg a régi még fut?