Øvelse – Opret en GitHub-handling, der skal udrulles til AKS
- 10 minutter
I denne øvelse skal du udføre følgende opgaver:
- Optimer den eksisterende GitHub-handling, så den omfatter et udrulningsjob.
- Bekræft, at ændringerne udrulles til Azure Kubernetes Service (AKS)-klyngen.
- Annuller udrulningen.
Opdater Kubernetes-manifestet for produkttjenesten
Hvis du vil udrulle nye versioner af eShop-produkttjenesten, skal du redigere den product.yml fil, så den peger på den Azure Container Registry (ACR), du brugte i den forrige enhed.
Vælg code tabi dit kopilager, og vælg derefter filen product.yml.
Hvis du vil redigere filen, skal du vælge redigeringsikonet (blyant).
Rediger linjen:
containers: - image: [replace with your ACR name].azurecr.io/productservice:latestErstat med
[replace with your ACR name]navnet på din ACR, såsom acseshop186748394.Vælg Udfør ændringer... øverst til højre, og vælg derefter Udfør ændringer i dialogboksen.
Opret installationshandlingen
YAML-koden tilføjer et GitHub-trin, der har ét trin, som udruller nye billeder. Her er trinnene i en ubuntu-latest løber:
- Tjekker det lager, filen er i.
- Azure Login logger på Azure med legitimationsoplysningerne for tjenesteprincipalen.
- Konfigurer kubelogin til ikke-interaktivt logon konfigurerer kubeconfig-filen til Azure-godkendelse.
- Hent K8s-kontekst sæt kontekst angiver legitimationsoplysningerne for Azure Kubernetes Service (AKS) i løberens .kube/config-fil.
- Udrulningsprogrammet udruller programmet til AKS ved hjælp af den afbildning, der er indbygget i det forrige trin, og den Kubernetes-manifestfil, du redigerede tidligere.
Udfør følgende trin for at oprette en GitHub-handling, der udruller kupontjenesten:
Vælg fanen code tab på .github/workflowsi dit kopilager.
Vælg azure-kubernetes-service.yml.
Hvis du vil redigere filen, skal du vælge redigeringsikonet (blyant).
Indsæt følgende YAML-kode i editoren nederst i filen:
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: falseVælg Udfør ændringer... øverst til højre, og vælg derefter Udfør ændringer i dialogboksen.
Udløs en installation
Opdatering af azure-kubernetes-service.yml-filen og bekræftelse af ændringerne udløser automatisk en anden installation. Se nu, hvordan en kodeændring udløser en anden installation.
Du har et nyt produkt, som marketingteamet vil føje til kataloget.
Vælg mappen code tab på Productsi dit kopilager.
Vælg mappen Data.
Vælg filen ProductDataContext.c.
Hvis du vil redigere filen, skal du vælge redigeringsikonet (blyant).
Nederst i filen skal du tilføje et nyt produkt til produktmatrixen :
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" },Vælg Udfør ændringer... øverst til højre, og vælg derefter Udfør ændringer i dialogboksen.
Overvåg installationen
Hvis du vil overvåge installationens status, skal du vælge fanen Actions.
Vælg den seneste kørsel af arbejdsprocessen, der er angivet for Build and deploy an app to AKS arbejdsproces. Kørselsnavnet er den bekræftelsesmeddelelse, du brugte i det forrige trin.
Vælg det deploy job for at få vist detaljer om denne arbejdsproceskørsel.
Kør følgende kommando i terminalen for at overvåge kupontjeneste pods i din AKS-klynge. Flaget
--selectorfiltrerer listen til kun pods for kupontjenesten, og flaget--watchgiverkubectlbesked om at holde øje med ændringer.kubectl get pods --selector=app=productservice --watchUnder installationen vises der en variation af følgende output:
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 19mBemærk i det foregående output, at der oprettes en ny productservice-pod . Når den nye pod er klar, afsluttes den gamle. Denne proces gør overgangen til den nye version så problemfri som muligt.
Kontrollér appen
Udfør følgende trin for at kontrollere, at din app stadig fungerer:
Få vist den installerede eShop ved at køre denne kommando i terminalen:
echo "http://$(kubectl get services --namespace ingress-nginx ingress-nginx-controller --output jsonpath='{.status.loadBalancer.ingress[0].ip}')"Kommandoen returnerer den eksterne IP-adresse for webappen. Hold CTRL nede, og vælg linket for at åbne appen i en ny fane.
Gå til produktsiden for at få vist det nye telt, der er angivet nederst på siden.
Annuller udrulningen
En almindelig afhjælpning af produktionsproblemer er at vende tilbage til en kendt god udrulning. Kubernetes vedligeholder en installationshistorik, som du kan bruge til at vende tilbage til en tidligere version af din app.
Kør denne kommando i terminalen for at fjerne det nye telt, du lige har føjet til webstedet:
kubectl rollout undo deployment/productservice
Du bør se denne konsolmeddelelse:
deployment.apps/productservice rolled back
Opdater produktsiden i din browser, og det nye telt bør ikke længere vises.
Note
I et scenarie i det virkelige liv udruller du buildartefakterne i flere miljøer. Du kan f.eks. have udviklings-, test- og midlertidige miljøer. Du kan udløse udrulningsarbejdsprocesser ved hændelser som f.eks. fletning af pullanmodninger. Du kan tilføje kvalitets- eller godkendelsesporte, f.eks. en interessents pullanmodningsgodkendelse, for at forhindre uventede udrulninger i produktionen.