Övning – Skapa en GitHub-åtgärd för att distribuera till AKS
- 10 minuter
I den här övningen slutför du följande uppgifter:
- Förbättra den befintliga GitHub-åtgärden så att den innehåller ett distributionsjobb.
- Kontrollera att ändringarna distribueras till AKS-klustret (Azure Kubernetes Service).
- Återställ distributionen.
Uppdatera Kubernetes-manifestet för produkttjänsten
Om du vill distribuera nya versioner av eShop-produkttjänsten redigerar du den product.yml filen så att den pekar på Azure Container Registry (ACR) som du använde i föregående lektion.
I den förgrenade lagringsplatsen väljer du code taboch väljer sedan filen product.yml.
Om du vill redigera filen väljer du redigeringsikonen (penna).
Redigera raden:
containers: - image: [replace with your ACR name].azurecr.io/productservice:latest[replace with your ACR name]Ersätt med namnet på din ACR, till exempel acseshop186748394.Längst upp till höger väljer du Checka in ändringar... och i dialogrutan väljer du Sedan Genomför ändringar.
Skapa distributionsåtgärden
YAML-koden lägger till ett GitHub-steg som har ett steg som distribuerar nya avbildningar. Här är stegen i en ubuntu-latest löpare:
- Checkar ut lagringsplatsen som filen finns i.
- Azure Login loggar in på Azure med autentiseringsuppgifterna för tjänstens huvudnamn.
- Konfigurera kubelogin för icke-interaktiv inloggning konfigurerar kubeconfig-filen för Azure-autentisering.
- Hämta K8s-kontot ställa in kontot sätter Azure Kubernetes Service (AKS) autentiseringsuppgifter i löparens .kube/config-fil.
- Distribuerar program distribuerar programmet till AKS med hjälp av avbildningen som skapades i föregående steg och Kubernetes-manifestfilen som du redigerade tidigare.
Utför följande steg för att skapa en GitHub-åtgärd som distribuerar kupongtjänsten:
På den förgrenade lagringsplatsen går du till code taboch väljer fliken .github/workflows.
Välj azure-kubernetes-service.yml.
Om du vill redigera filen väljer du redigeringsikonen (penna).
Längst ned i filen klistrar du in följande YAML-kod i redigeraren:
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: falseLängst upp till höger väljer du Checka in ändringar... och i dialogrutan väljer du Sedan Genomför ändringar.
Utlösa en distribution
Om du uppdaterar azure-kubernetes-service.yml-filen och genomför ändringarna utlöses automatiskt en annan distribution. Se nu hur en kodändring utlöser en annan distribution.
Du har en ny produkt som marknadsföringsteamet vill lägga till i katalogen.
I den förgrenade lagringsplatsen går du till code taboch väljer mappen Products.
Välj mappen Data.
Välj filen ProductDataContext.c.
Om du vill redigera filen väljer du redigeringsikonen (penna).
Längst ned i filen lägger du till en ny produkt i produkter matris:
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" },Längst upp till höger väljer du Checka in ändringar... och i dialogrutan väljer du Sedan Genomför ändringar.
Övervaka distributionen
Om du vill övervaka distributionens förlopp väljer du fliken Actions.
För Build and deploy an app to AKS arbetsflödet, välj den senaste arbetsflödeskörningen som visas. Körningens namn är det incheckningsmeddelande som du använde i föregående steg.
Välj det deploy jobbet för att se information om den här arbetsflödeskörningen.
I terminalen kör du följande kommando för att övervaka kupongtjänstpoddarna i AKS-klustret. Flaggan
--selectorfiltrerar listan till endast poddar för kupongtjänsten, och flaggan--watchinstruerarkubectlatt hålla utkik efter ändringar.kubectl get pods --selector=app=productservice --watchUnder implementeringen visas en variant av följande utdata:
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 19mObservera att en ny productservice podd skapas i föregående utdata. När den nya podden är klar avslutas den gamla. Den här processen gör övergången till den nya versionen så smidig som möjligt.
Verifiera appen
Slutför följande steg för att kontrollera att appen fortfarande fungerar:
Visa den distribuerade eShop genom att köra det här kommandot i terminalen:
echo "http://$(kubectl get services --namespace ingress-nginx ingress-nginx-controller --output jsonpath='{.status.loadBalancer.ingress[0].ip}')"Kommandot returnerar den externa IP-adressen för webbappen. Håll ned CTRL- och välj länken för att öppna appen på en ny flik.
Gå till produktsidan för att visa det nya tältet längst ned på sidan.
Rulla tillbaka distributionen
En vanlig åtgärd för produktionsproblem är att återgå till en stabil och pålitlig utplacering. Kubernetes har en distributionshistorik som du kan använda för att återställa till en tidigare version av din app.
I terminalen kör du det här kommandot för att ta bort det nya tältet som du precis har lagt till på webbplatsen:
kubectl rollout undo deployment/productservice
Du bör se det här konsolmeddelandet:
deployment.apps/productservice rolled back
Uppdatera produktsidan i webbläsaren och det nya tältet bör inte längre visas.
Notera
I ett verkligt scenario distribuerar du byggets artefakter till flera miljöer. Du kan till exempel ha utvecklings-, testnings- och mellanlagringsmiljöer. Du kan utlösa distributionsarbetsflöden genom händelser som sammanslagning av PRs. Du kan lägga till kvalitets- eller godkännandegrindar, till exempel en intressents PR-godkännande, för att förhindra oväntade distributioner till produktion.