Criar, testar e implementar contentores para Azure Kubernetes Service (AKS) com GitHub Actions
GitHub Actions dá-lhe a flexibilidade de criar um fluxo de trabalho de ciclo de vida de desenvolvimento de software automatizado. Pode utilizar várias ações do Kubernetes para implementar em contentores de Azure Container Registry (ACR) para Azure Kubernetes Service (AKS) com GitHub Actions.
Pré-requisitos
- Uma conta do Azure com uma subscrição ativa. Se não tiver uma, crie uma conta gratuitamente.
- Uma conta do GitHub. Se não tiver uma, inscreva-se gratuitamente.
- Ao utilizar GitHub Actions, tem de configurar a integração entre o Azure e o repositório do GitHub. Para configurar a integração, veja Utilizar GitHub Actions para ligar ao Azure.
- Um cluster do AKS existente com um ACR anexado. Se não tiver uma, consulte Autenticar com o ACR a partir do AKS.
GitHub Actions para o AKS
Com o GiHub Actions, pode automatizar os fluxos de trabalho de desenvolvimento de software a partir do GitHub. Para obter mais informações, veja GitHub Actions para o Azure.
A tabela seguinte lista as ações disponíveis para o AKS:
Nome | Descrição | Mais detalhes |
---|---|---|
azure/aks-set-context |
Defina o contexto do cluster do AKS de destino para que outras ações utilizem ou executem quaisquer comandos kubectl. | azure/aks-set-context |
azure/k8s-set-context |
Defina o contexto de cluster do Kubernetes de destino para que outras ações utilizem ou executem comandos kubectl. | azure/k8s-set-context |
azure/k8s-bake |
Asse o ficheiro de manifesto para utilizar para implementações com o Helm, kustomize ou kompose. | azure/k8s-bake |
azure/k8s-create-secret |
Crie um segredo genérico ou um segredo do docker-registry no cluster do Kubernetes. | azure/k8s-create-secret |
azure/k8s-deploy |
Implementar manifestos em clusters do Kubernetes. | azure/k8s-deploy |
azure/k8s-lint |
Valide/lint os seus ficheiros de manifesto. | azure/k8s-lint |
azure/setup-helm |
Instale uma versão específica do binário helm no corredor. | azure/setup-helm |
azure/setup-kubectl |
Instale uma versão específica do kubectl no corredor. | azure/setup-kubectl |
azure/k8s-artifact-substitute |
Atualize a etiqueta ou o resumo das imagens de contentor. | azure/k8s-artifact-substitute |
azure/aks-create-action |
Crie um cluster do AKS com o Terraform. | azure/aks-create-action |
azure/aks-github-runner |
Configure agentes autoalojados para GitHub Actions. | azure/aks-github-runner |
azure/acr-build |
Crie contentores com o ACR. | azure/acr-build |
Utilizar GitHub Actions com o AKS
Por exemplo, pode utilizar GitHub Actions para implementar uma aplicação no cluster do AKS sempre que uma alteração for enviada para o repositório do GitHub. Este exemplo utiliza a aplicação Azure Vote .
Nota
Este exemplo utiliza um principal de serviço para autenticação com o cluster do ACR e do AKS. Em alternativa, pode configurar o Open ID Connect (OIDC) e atualizar a ação azure/login
para utilizar o OIDC. Para obter mais informações, veja Configurar o Início de Sessão do Azure com a autenticação do OpenID Connect.
Fork e atualizar o repositório
Navegue para o repositório Azure Vote e selecione Fork.
Atualize o para utilizar o
azure-vote-all-in-one-redis.yaml
ACR para aazure-vote-front
imagem. Substitua<registryName>
pelo nome do seu registo.... containers: - name: azure-vote-front image: <registryName>.azurecr.io/azuredocs/azure-vote-front:v1 ...
Consolide o atualizado
azure-vote-all-in-one-redis.yaml
para o seu repositório.
Criar segredos
Crie um principal de serviço para aceder ao grupo de recursos com a função
Contributor
com oaz ad sp create-for-rbac
comando . Substitua<SUBSCRIPTION_ID>
pelo ID de subscrição da sua conta do Azure e<RESOURCE_GROUP>
pelo nome do grupo de recursos que contém o ACR.az ad sp create-for-rbac \ --name "ghActionAzureVote" \ --scope /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP> \ --role Contributor \ --json-auth
O resultado deve ter um aspeto semelhante ao seguinte resultado de exemplo:
{ "clientId": <clientId>, "clientSecret": <clientSecret>, "subscriptionId": <subscriptionId>, "tenantId": <tenantId>, ... }
Navegue para as definições do repositório do GitHub e selecione Segredos de Segurança>e variáveis Ações>.
Para cada segredo, selecione Novo Segredo do Repositório e introduza o nome e o valor do segredo.
Nome do segredo Valor secreto AZURE_CREDENTIALS A saída JSON completa do az ad sp create-for-rbac
comando.service_principal O valor de <clientId>
.service_principal_password O valor de <clientSecret>
.subscrição O valor de <subscriptionId>
.inquilino O valor de <tenantId>
.registry O nome do seu registo. repository azuredocs resource_group O nome do grupo de recursos. cluster_name O nome do cluster.
Para obter mais informações sobre como criar segredos, veja Segredos Encriptados.
Criar ficheiro de ações
No seu repositório, crie e
.github/workflows/main.yml
cole os seguintes conteúdos:name: build_deploy_aks on: push: paths: - "azure-vote/**" jobs: build: runs-on: ubuntu-latest steps: - name: Checkout source code uses: actions/checkout@v3 - name: ACR build id: build-push-acr uses: azure/acr-build@v1 with: service_principal: ${{ secrets.service_principal }} service_principal_password: ${{ secrets.service_principal_password }} tenant: ${{ secrets.tenant }} registry: ${{ secrets.registry }} repository: ${{ secrets.repository }} image: azure-vote-front folder: azure-vote branch: master tag: ${{ github.sha }} - name: Azure login id: login uses: azure/login@v1.4.3 with: creds: ${{ secrets.AZURE_CREDENTIALS }} - name: Set AKS context id: set-context uses: azure/aks-set-context@v3 with: resource-group: '${{ secrets.resource_group }}' cluster-name: '${{ secrets.cluster_name }}' - name: Setup kubectl id: install-kubectl uses: azure/setup-kubectl@v3 - name: Deploy to AKS id: deploy-aks uses: Azure/k8s-deploy@v4 with: namespace: 'default' manifests: | azure-vote-all-in-one-redis.yaml images: '${{ secrets.registry }}.azurecr.io/${{ secrets.repository }}/azure-vote-front:${{ github.sha }}' pull-images: false
A
on
secção contém o evento que aciona a ação. No ficheiro de exemplo, a ação é acionada quando uma alteração é enviada para oazure-vote
diretório.A
steps
secção contém cada ação distinta:- O código fonte de saída utiliza a Ação de Saída do GitHub Actions para clonar o repositório.
- A compilação do ACR utiliza o Azure Container Registry Build Action para criar a imagem e carregá-la para o seu registo.
- O início de sessão do Azure utiliza a Ação de Início de Sessão do Azure para iniciar sessão na sua conta do Azure.
- Definir o contexto do AKS utiliza a Ação de Contexto Do Conjunto do Azure AKS para definir o contexto para o cluster do AKS.
- O kubectl de configuração utiliza a Ação kubectl de Configuração do Azure AKS para instalar o kubectl no seu corredor.
- Implementar no AKS utiliza a Ação de Implementação do Azure Kubernetes para implementar a aplicação no cluster do Kubernetes.
Consolide o
.github/workflows/main.yml
ficheiro no seu repositório.Para confirmar que a ação está a funcionar, atualize o
azure-vote/azure-vote/config_file.cfg
com os seguintes conteúdos:# UI Configurations TITLE = 'Azure Voting App' VOTE1VALUE = 'Fish' VOTE2VALUE = 'Dogs' SHOWHOST = 'false'
Consolide o atualizado
azure-vote/azure-vote/config_file.cfg
para o seu repositório.No seu repositório, selecione Ações e confirme que está a ser executado um fluxo de trabalho. Em seguida, confirme que o fluxo de trabalho tem uma marca de verificação verde e que a aplicação atualizada é implementada no cluster.
Passos seguintes
Reveja os seguintes fluxos de trabalho de arranque para o AKS. Para obter mais informações, veja Utilizar fluxos de trabalho de arranque.