Gyakorlat – GitHub-művelet létrehozása az AKS-ben való üzembe helyezéshez
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.
Az elágazott adattárban válassza ki a code tabfájlt, majd válassza ki a product.yml fájlt.
A fájl szerkesztéséhez válassza a szerkesztés ikont (ceruza).
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.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:
- Ellenőrzi a fájl adattárát.
- Az Azure Login a szolgáltatásnév hitelesítő adataival jelentkezik be az Azure-ba.
- A kubelogin beállítása nem interaktív bejelentkezéshez konfigurálja a kubeconfig fájlt az Azure-hitelesítéshez.
- 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 .
- 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:
Az elágazott adattárban válassza ki a code tab.github/workflows lapot.
Válassza ki azure-kubernetes-service.yml.
A fájl szerkesztéséhez válassza a szerkesztés ikont (ceruza).
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
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.
Az elágazott adattárban válassza ki a code tabProducts mappát.
Jelölje ki az Data mappát.
Válassza ki a ProductDataContext.c fájlt.
A fájl szerkesztéséhez válassza a szerkesztés ikont (ceruza).
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" },
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
Az üzembe helyezés előrehaladásának figyeléséhez válassza a Actions lapot.
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.
Válassza ki a feladatot a deploy munkafolyamat futtatásának részleteinek megtekintéséhez.
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ásokatkubectl
.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.