Exercițiul - Creați o acțiune GitHub pentru a implementa în AKS
- 10 minute
În acest exercițiu, veți efectua următoarele activități:
- Îmbunătățiți acțiunea GitHub existentă pentru a include o activitate de implementare.
- Verificați dacă modificările se implementează în clusterul Azure Kubernetes Service (AKS).
- Reveniți la implementare.
Actualizarea manifestului Kubernetes pentru serviciul de produse
Pentru a implementa versiuni noi ale serviciului de produs eShop, editați fișierul product.yml pentru a indica Azure Container Registry (ACR) pe care l-ați utilizat în unitatea anterioară.
În depozitul cu cerneală, selectați code tab, apoi selectați fișierul product.yml.
Pentru a edita fișierul, selectați pictograma de editare (creion).
Editați linia:
containers: - image: [replace with your ACR name].azurecr.io/productservice:latestÎnlocuiți cu
[replace with your ACR name]numele ACR-ului, cum ar fi acseshop186748394.În dreapta sus, selectați Confirmare modificări..., apoi, în caseta de dialog, selectați Comitere modificări.
Crearea acțiunii de implementare
Codul YAML adaugă un pas GitHub care are un pas, care implementează imagini noi. Iată pașii dintr-un alergător ubuntu-latest:
- Extrageți depozitul în care se află acest fișier.
- Azure Login se conectează la Azure cu acreditările principale de serviciu.
- Configurați kubelogin pentru conectarea non-interactivă configurează fișierul Kubeconfig pentru autentificare Azure.
- Obțineți contextul K8s seta contextul setează acreditările Azure Kubernetes Service (AKS) în fișierul de .kube/config al rulatorului.
- Implementează aplicația implementează aplicația în AKS, utilizând imaginea construită în pasul anterior și fișierul manifest Kubernetes pe care l-ați editat mai devreme.
Parcurgeți pașii următori pentru a crea o acțiune GitHub care implementează serviciul de cupon:
În depozitul cu cerneală, în code tab, selectați fila .github/workflows.
Selectați azure-kubernetes-service.yml.
Pentru a edita fișierul, selectați pictograma de editare (creion).
În partea de jos a fișierului, lipiți următorul cod YAML în editor:
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În dreapta sus, selectați Confirmare modificări..., apoi, în caseta de dialog, selectați Comitere modificări.
Lansarea unei implementări
Actualizarea fișierului azure-kubernetes-service.yml și comiterea modificărilor declanșează automat o altă implementare. Acum vedeți cum o modificare de cod declanșează o altă implementare.
Aveți un produs nou pe care echipa de marketing dorește să îl adauge în catalog.
În depozitul forked, în code tab, selectați folderul Products.
Selectați folderul Data.
Selectați fișierul ProductDataContext.c.
Pentru a edita fișierul, selectați pictograma de editare (creion).
În partea de jos a fișierului, adăugați un produs nou la matricea products :
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" },În dreapta sus, selectați Confirmare modificări..., apoi, în caseta de dialog, selectați Comitere modificări.
Monitorizați implementarea
Pentru a monitoriza progresul implementării, selectați fila Actions.
Selectați cel mai recent flux de lucru listat pentru fluxul de lucru Build and deploy an app to AKS. Numele rulării este mesajul de comitere utilizat în pasul anterior.
Selectați activitatea deploy pentru a vedea detaliile pentru această rulare a fluxului de lucru.
În terminal, rulați următoarea comandă pentru a monitoriza păstăile de serviciu cupon din clusterul AKS. Semnalizatorul
--selectorfiltrează lista doar pentru serviciul cuponului, iar semnalizatorul--watchinstruieștekubectlsă urmărească modificările.kubectl get pods --selector=app=productservice --watchÎn timpul implementării, apare o variație a următoarei ieșiri:
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În ieșirea anterioară, observați că este creat un nou pod productservice . Când noua păstăi este gata, cea veche este terminată. Acest proces face tranziția la noua versiune cât mai lină posibil.
Verificați aplicația
Parcurgeți pașii următori pentru a verifica dacă aplicația funcționează în continuare:
Vizualizați eShop implementat rulând această comandă în terminal:
echo "http://$(kubectl get services --namespace ingress-nginx ingress-nginx-controller --output jsonpath='{.status.loadBalancer.ingress[0].ip}')"Comanda returnează adresa IP externă pentru aplicația web. Țineți apăsată tasta CTRL și selectați linkul pentru a deschide aplicația într-o filă nouă.
Mergeți la pagina de produse pentru a vedea noul cort listat în partea de jos a paginii.
Revenirea la implementare
O atenuare obișnuită pentru problemele de producție este revenirea la o implementare cunoscută. Kubernetes păstrează un istoric de implementare pe care îl puteți utiliza pentru a reveni la o versiune anterioară a aplicației.
În terminal, rulați această comandă pentru a elimina noul cort pe care tocmai l-ați adăugat la site-ul web:
kubectl rollout undo deployment/productservice
Ar trebui să vedeți acest mesaj de consolă:
deployment.apps/productservice rolled back
Reîmprospătați pagina de produse din browser, iar noul cort nu ar trebui să mai fie listat.
Note
Într-un scenariu în viață reală, implementați artefactele compilării în mai multe medii. De exemplu, este posibil să aveți medii de dezvoltare, testare și testare. Puteți declanșa fluxurile de lucru de implementare după evenimente cum ar fi îmbinarea PR-urilor. Puteți adăuga porți de calitate sau de aprobare, cum ar fi aprobarea de PR a unui participant direct interesat, pentru a împiedica implementările neașteptate pentru producție.
Verificați-vă cunoștințele
Feedback
Această pagină a fost utilă?
Nu
Aveți nevoie de ajutor cu acest subiect?
Doriți să încercați să utilizați Întrebați Microsoft Learn pentru a clarifica sau primi îndrumări privind acest subiect?