Øvelse – Opprett en GitHub-handling som skal distribueres til AKS
- 10 minutter
I denne øvelsen skal du fullføre følgende oppgaver:
- Forbedre den eksisterende GitHub-handlingen for å inkludere en distribusjonsjobb.
- Kontroller at endringene distribueres til Azure Kubernetes Service (AKS)-klyngen.
- Rull tilbake distribusjonen.
Oppdater Kubernetes-manifestet for produkttjenesten
Hvis du vil distribuere nye versjoner av eShop-produkttjenesten, redigerer du den product.yml filen slik at den peker på Azure Container Registry (ACR) du brukte i den forrige enheten.
Velg code tabi det forgrenede repositoriet, og velg deretter product.yml filen.
Hvis du vil redigere filen, velger du redigeringsikonet (blyant).
Rediger linjen:
containers: - image: [replace with your ACR name].azurecr.io/productservice:latestErstatt med
[replace with your ACR name]navnet på din ACR, for eksempel acseshop186748394.Øverst til høyre velger du Utfør endringer..., og deretter velger du Utfør endringer i dialogboksen.
Opprett distribusjonshandlingen
YAML-koden legger til et GitHub-trinn som har ett trinn, som distribuerer nye bilder. Her er trinnene i en ubuntu-latest løper:
- Sjekker ut repositoriet filen er i.
- Azure-pålogging logger på Azure med legitimasjonen for tjenestekontohaveren.
- Konfigurere kubelogin for ikke-interaktiv pålogging konfigurerer kubeconfig-filen for Azure-godkjenning.
- Få K8s-kontekst angi konteksten, angir Azure Kubernetes Service -legitimasjonen (AKS) i løperens .kube/config-fil.
- Distribuerer programmet distribuerer programmet til AKS ved hjelp av avbildningen som er bygd i forrige trinn og Kubernetes-manifestfilen du redigerte tidligere.
Fullfør følgende fremgangsmåte for å opprette en GitHub-handling som distribuerer kupongtjenesten:
Velg fanen code tab i det forgrenede repositoriet på .github/workflows.
Velg azure-kubernetes-service.yml.
Hvis du vil redigere filen, velger du redigeringsikonet (blyant).
Lim inn følgende YAML-kode i redigeringsprogrammet 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: falseØverst til høyre velger du Utfør endringer..., og deretter velger du Utfør endringer i dialogboksen.
Utløse en distribusjon
Hvis du oppdaterer azure-kubernetes-service.yml-filen og utfører endringene, utløses automatisk en annen distribusjon. Nå kan du se hvordan en kodeendring utløser en annen distribusjon.
Du har et nytt produkt markedsføringsteamet vil legge til i katalogen.
Velg mappen code tab i det forgrenede repositoriet på Products.
Velg Data-mappen.
Velg ProductDataContext.c filen.
Hvis du vil redigere filen, velger du redigeringsikonet (blyant).
Nederst i filen legger du til et nytt produkt i produktmatrisen:
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" },Øverst til høyre velger du Utfør endringer..., og deretter velger du Utfør endringer i dialogboksen.
Overvåk distribusjonen
Hvis du vil overvåke fremdriften for distribusjonen, velger du fanen Actions.
Velg den nyeste arbeidsflytkjøringen som er oppført for Build and deploy an app to AKS arbeidsflyten. Navnet på kjøringen er utføringsmeldingen du brukte i forrige trinn.
Velg deploy jobb for å se detaljer for denne arbeidsflytkjøringen.
Kjør følgende kommando i terminalen for å overvåke kupongtjenesteputene i AKS-klyngen. Det
--selectorflagget filtrerer listen til bare pods for kupongtjenesten, og--watchflagget instruererkubectltil å se etter endringer.kubectl get pods --selector=app=productservice --watchUnder distribusjonen vises en variasjon av følgende 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 19mLegg merke til at det opprettes en ny productservice-pod i de foregående utdataene. Når den nye kapselen er klar, avsluttes den gamle. Denne prosessen gjør overgangen til den nye versjonen så jevn som mulig.
Bekreft appen
Fullfør følgende fremgangsmåte for å bekrefte at appen fortsatt fungerer:
Vis den distribuerte eShop ved å kjøre denne kommandoen 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-adressen for nettappen. Hold inne CTRL og velg koblingen for å åpne appen i en ny fane.
Gå til produktsiden for å vise det nye teltet som er oppført nederst på siden.
Rulle tilbake distribusjonen
En vanlig løsning for produksjonsproblemer er å gå tilbake til en kjent god distribusjon. Kubernetes opprettholder en distribusjonslogg som du kan bruke til å rulle tilbake til en tidligere versjon av appen.
Kjør denne kommandoen i terminalen for å fjerne det nye teltet du nettopp la til på nettstedet:
kubectl rollout undo deployment/productservice
Du skal se denne konsollmeldingen:
deployment.apps/productservice rolled back
Oppdater produktsiden i nettleseren, og det nye teltet skal ikke lenger være oppført.
Note
I et virkelig scenario distribuerer du buildens artefakter til flere miljøer. Du kan for eksempel ha utviklings-, test- og oppsamlingsmiljøer. Du kan utløse distribusjonsarbeidsflyter etter hendelser som fletting av PR-er. Du kan legge til kvalitets- eller godkjenningsporter, for eksempel en interessents PR-godkjenning, for å hindre uventede distribusjoner i produksjon.