Cvičení – vytvoření akce GitHubu pro nasazení do AKS
- 10 min
V tomto cvičení dokončíte následující úkoly:
- Vylepšete stávající akci na GitHubu tak, aby zahrnovala nasazovací úkol.
- Ověřte, že se změny nasazují do clusteru Azure Kubernetes Service (AKS).
- Zrušte nasazení.
Aktualizace manifestu Kubernetes pro produktovou službu
Pokud chcete nasadit nové verze produktové služby eShop, upravte soubor product.yml tak, aby odkazovat na službu Azure Container Registry (ACR), kterou jste použili v předchozí lekci.
V rozvětveném úložišti vyberte code taba pak vyberte soubor product.yml.
Pokud chcete soubor upravit, vyberte ikonu pro úpravy (tužku).
Upravte řádek:
containers: - image: [replace with your ACR name].azurecr.io/productservice:latestNahraďte
[replace with your ACR name]názvem vašeho ACR, například acseshop186748394.V pravém horním rohu vyberte Potvrdit změny... a pak v dialogovém okně vyberte Potvrdit změny.
Vytvořte akci nasazení
Kód YAML přidá krok GitHubu, který má jeden krok, který nasadí nové image. Tady jsou kroky pro spouštěč ubuntu-latest:
- Zkontroluje úložiště, ve které je tento soubor.
- přihlášení Azure přihlášení k Azure pomocí přihlašovacích údajů služebního účtu.
- Nastavení kubeloginu pro neinteraktivní přihlášení nakonfiguruje soubor kubeconfig pro ověřování Azure.
- získání kontextu K8s nastavení kontextu nastaví přihlašovací údaje služby Azure Kubernetes Service (AKS) v souboru .kube/config spouštěče.
- Nasadí aplikaci nasadí aplikaci do AKS pomocí image vytvořené v předchozím kroku a souboru manifestu Kubernetes, který jste upravili dříve.
Provedením následujících kroků vytvořte akci GitHubu, která nasadí kuponovou službu:
Ve vašem forknutém úložišti vyberte na code tabkartu .github/workflows.
Vyberte azure-kubernetes-service.yml.
Pokud chcete soubor upravit, vyberte ikonu pro úpravy (tužku).
V dolní části souboru vložte do editoru následující kód YAML:
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 pravém horním rohu vyberte Potvrdit změny... a pak v dialogovém okně vyberte Potvrdit změny.
Spustit nasazení
Aktualizace souboru azure-kubernetes-service.yml a potvrzení změn automaticky aktivuje jiné nasazení. Teď se podívejte, jak změna kódu aktivuje jiné nasazení.
Máte nový produkt, který chce marketingový tým přidat do katalogu.
Ve svém forku úložiště vyberte složku code tab na Products.
Vyberte složku Data.
Vyberte soubor ProductDataContext.c.
Pokud chcete soubor upravit, vyberte ikonu pro úpravy (tužku).
V dolní části souboru přidejte nový produkt do produktů pole:
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 pravém horním rohu vyberte Potvrdit změny... a pak v dialogovém okně vyberte Potvrdit změny.
Monitorování nasazení
Pokud chcete monitorovat průběh nasazení, vyberte kartu Actions.
Vyberte poslední spuštění pracovního postupu uvedené pro pracovní postup Build and deploy an app to AKS. Název spuštění je potvrzovací zpráva, kterou jste použili v předchozím kroku.
Výběrem úlohy deploy zobrazíte podrobnosti o spuštění tohoto pracovního postupu.
V terminálu spusťte následující příkaz, který monitoruje pody kuponové služby v clusteru AKS. Příznak
--selectorfiltruje seznam jenom na pody pro kuponovou službu a příznak--watchdávákubectlpokyn, aby sledoval změny.kubectl get pods --selector=app=productservice --watchBěhem nasazení se zobrazí varianta následujícího výstupu:
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 19mV předchozím výstupu si všimněte, že se vytvoří nový pod productservice. Jakmile je nový pod připraven, starý pod se ukončí. Díky tomuto procesu bude přechod na novou verzi co nejplynulejší.
Ověření aplikace
Provedením následujících kroků ověřte, že vaše aplikace stále funguje:
Spuštěním tohoto příkazu v terminálu zobrazte nasazený eShop:
echo "http://$(kubectl get services --namespace ingress-nginx ingress-nginx-controller --output jsonpath='{.status.loadBalancer.ingress[0].ip}')"Příkaz vrátí externí IP adresu webové aplikace. Podržte CTRL a klikněte na odkaz, abyste aplikaci otevřeli v novém panelu.
Přejděte na stránku produktů a zobrazte nový stan uvedený v dolní části stránky.
Vrátit nasazení
Jedním z běžných zmírnění problémů v produkčním prostředí je vrátit se ke známému dobrému nasazení. Kubernetes udržuje historii nasazení, kterou můžete použít k vrácení zpět na předchozí verzi aplikace.
Spuštěním tohoto příkazu v terminálu odeberte nový stan, který jste právě přidali na web:
kubectl rollout undo deployment/productservice
Měla by se zobrazit tato zpráva konzoly:
deployment.apps/productservice rolled back
Aktualizujte stránku produktů v prohlížeči a nový stan by už neměl být uvedený.
Poznámka
V reálném scénáři nasadíte artefakty sestavení do různých prostředí. Můžete mít například vývojové, testovací a přípravné prostředí. Procesy nasazení můžete spustit pomocí událostí, jako je sloučení pull requestů. Aby se zabránilo neočekávanému nasazení do produkčního prostředí, můžete přidat brány pro kvalitu nebo schválení, jako je schválení přijetí zainteresovaných osob.