Gyakorlat – GitHub-művelet létrehozása az AKS-ben való üzembe helyezéshez
- 10 perc
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 jelölje ki a code tab-t, 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:latestCserélje le az
[replace with your ACR name]-t az ACR nevére, például a(z) acseshop186748394.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.
Az üzembehelyezési művelet létrehozása
A YAML-kód hozzáad egy GitHub-lépést, amely új képeket helyez üzembe egyetlen lépésben. Egy ubuntu-latest futó lépései:
- Ellenőrzi a fájl adattárát.
- Az Azure Login az Azure-ba jelentkezik be a szolgáltatási azonosító hitelesítő adataival.
- A kubelogin beállítása nem interaktív bejelentkezéshez konfigurálja a kubeconfig fájlt az Azure-hitelesítéshez.
- K8s kontextus lekérése a kontextus beállítása a futó .kube/config fájlban az Azure Kubernetes Service (AKS) hitelesítő adatait állítja be.
- 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 a code tab-ra kattintson, és válassza a .github/workflows lapot.
Válassza a azure-kubernetes-service.ymllehetőséget.
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: falseA 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.
A forkolt adattárban, a code tab-ban válassza ki a Products mappát.
Válassza ki a 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..., majd a párbeszédpanelen a Módosítások véglegesítése lehetőséget.
Az üzembe helyezés figyelése
Az üzembe helyezés előrehaladásának figyeléséhez válassza a Actions lapot.
Válassza ki a Build and deploy an app to AKS munkafolyamathoz tartozó legutóbbi munkafolyamat-futtatásokat. A futtatás neve az előző lépésben használt véglegesítési üzenet.
Válassza ki a deploy feladatot a munkafolyamat futtatásának részleteinek megtekintéséhez.
A terminálban futtassa a következő parancsot az Azure Kubernetes Service (AKS) fürt kuponszolgáltatás-podjainak figyeléséhez. A
--selectorjelző csak a kuponszolgáltatás podjaira szűri a listát, a--watchjelző pedig arra utasítjakubectl, hogy figyelje a módosításokat.kubectl get pods --selector=app=productservice --watchAz ü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 19mAz 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 a lehető leggördülékenyebbé teszi az új verzióra való áttérést.
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 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 egy ismert, jól működő üzembe helyezésre való visszaállítá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.
Jegyzet
Valós forgatókönyv esetén a build összetevőit több környezetben is üzembe helyezheti. Előfordulhat például, hogy fejlesztési, tesztelési és előkészítési környezetekkel rendelkezik. 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 egy érdekelt fél PR-jóváhagyását, hogy megelőzze a váratlan üzembe helyezéseket az éles környezetben.