Exercício - Crie uma ação do GitHub para implantar no AKS
Neste exercício, você concluirá as seguintes tarefas:
- Aprimore a ação existente do GitHub para incluir um trabalho de implantação.
- Verifique se as alterações são implantadas no cluster do Serviço Kubernetes do Azure (AKS).
- Reverter a implantação.
Atualizar o manifesto do Kubernetes para o serviço do produto
Para implantar novas versões do serviço do produto eShop, edite o arquivo de product.yml para apontar para o Registro de Contêiner do Azure (ACR) usado na unidade anterior.
No repositório bifurcado, selecione o code tabarquivo e, em seguida, selecione o product.yml arquivo.
Para editar o arquivo, selecione o ícone de edição (lápis).
Edite a linha:
containers: - image: [replace with your ACR name].azurecr.io/productservice:latest
Substitua o
[replace with your ACR name]
pelo nome do seu ACR, por exemplo, acseshop186748394.No canto superior direito, selecione Confirmar alterações e , em seguida, na caixa de diálogo, selecione Confirmar alterações.
Criar a ação de implementação
O código YAML adiciona uma etapa do GitHub que:
Tem uma etapa que implanta novas imagens. Aqui estão os passos em um ubuntu-latest
corredor:
- Faz check-out do repositório em que este arquivo está.
- O Logon do Azure entra no Azure com as credenciais da entidade de serviço.
- Configurar kubelogin para logon não interativo configura o arquivo kubeconfig para autenticação do Azure.
- Obter o contexto do conjunto de contexto do K8s define as credenciais do Serviço Kubernetes do Azure (AKS) no arquivo do .kube/config corredor.
- Implanta o aplicativo implanta o aplicativo no AKS, usando a imagem criada na etapa anterior e o arquivo de manifesto do Kubernetes que você editou anteriormente.
Conclua as seguintes etapas para criar uma ação do GitHub que implante o serviço de cupom:
No repositório bifurcado, no code tab, selecione a .github/workflows guia.
Selecione azure-kubernetes-service.yml.
Para editar o arquivo, selecione o ícone de edição (lápis).
Na parte inferior do arquivo, cole o seguinte código YAML no 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
No canto superior direito, selecione Confirmar alterações..., em seguida, na caixa de diálogo, selecione Confirmar alterações.
Acionar uma implementação
Atualizar o azure-kubernetes-service.yml arquivo e confirmar as alterações aciona automaticamente outra implantação. Agora veja como fazer uma alteração de código aciona outra implantação.
Você tem um novo produto que sua equipe de marketing gostaria de adicionar ao catálogo.
No repositório bifurcado, no code tab, selecione a Products pasta.
Selecione a pasta Data.
Selecione o ProductDataContext.c arquivo.
Para editar o arquivo, selecione o ícone de edição (lápis).
Na parte inferior do arquivo, adicione um novo produto à matriz de produtos :
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" },
No canto superior direito, selecione Confirmar alterações e , em seguida, na caixa de diálogo, selecione Confirmar alterações.
Monitorizar a implementação
Para monitorar o progresso da implantação, selecione a Actions guia.
Selecione a execução de fluxo de trabalho mais recente listada para o fluxo de trabalho de Build and deploy an app to AKS. O nome da execução é a mensagem de confirmação usada na etapa anterior.
Selecione o trabalho para ver os deploy detalhes da execução deste fluxo de trabalho.
No terminal, execute o seguinte comando para monitorar os pods de serviço de cupom em seu cluster AKS. O
--selector
sinalizador filtra a lista apenas para pods para o serviço de cupom, e o--watch
sinalizador instruikubectl
a observar as alterações.kubectl get pods --selector=app=productservice --watch
Durante a implantação, uma variação da seguinte saída aparece:
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
Na saída anterior, observe que um novo pod productservice é criado. Quando o novo pod estiver pronto, o antigo será encerrado. Este processo torna a transição para a nova versão o mais estável possível.
Verificar o aplicativo
Conclua as seguintes etapas para verificar se seu aplicativo ainda funciona:
Veja a eShop implantada executando este comando no terminal:
echo "http://$(kubectl get services --namespace ingress-nginx ingress-nginx-controller --output jsonpath='{.status.loadBalancer.ingress[0].ip}')"
O comando acima retorna o endereço IP externo do aplicativo Web. Mantenha pressionada a tecla CTRL e selecione o link para abrir o aplicativo em uma nova guia.
Vá para a página de produtos para ver a nova tenda listada na parte inferior da página.
Reverter a implementação
Uma atenuação comum para problemas de produção é reverter para uma implantação em boas condições. O Kubernetes mantém um histórico de implantação que você pode usar para reverter para uma versão anterior do seu aplicativo.
No seu terminal, execute este comando para remover a nova tenda que você acabou de adicionar ao site:
kubectl rollout undo deployment/productservice
Deverá ver esta mensagem da consola:
deployment.apps/productservice rolled back
Atualize a página de produtos no seu navegador e a nova tenda não deve mais ser listada.
Nota
Em um cenário da vida real, você implanta os artefatos da compilação em vários ambientes. Por exemplo, pode ter ambientes de desenvolvimento, teste e preparação. Você pode acionar fluxos de trabalho de implantação por eventos como mesclar RPs. Você pode adicionar portas de qualidade ou aprovação, como a aprovação de relações públicas de uma parte interessada, para evitar implantações inesperadas na produção.