Skip to main content

Implantando no Azure Kubernetes Service

Este guia explica como usar o Actions para criar e implantar um projeto no Serviço de Kubernetes do Azure.

Observação

Se os seus fluxos de trabalho de Actions tiverem de acessar recursos de um provedor de nuvem compatível com o OpenID Connect (OIDC), você poderá configurar seus fluxos de trabalho para efetuar a autenticção diretamente no provedor de nuvem. Isso permitirá que você pare de armazenar essas credenciais como segredos de longa duração e proporcione outros benefícios de segurança. Para saber mais, confira Sobre o enrijecimento de segurança com o OpenID Connect. e Configurando o OpenID Connect no Azure.

Antes de criar seu fluxo de trabalho de Actions, primeiro você precisa concluir as etapas de configuração a seguir:

  1. Crie um cluster-alvo do AKS e um Azure Container Registry (ACR). Para obter mais informações, confira Guia de Início Rápido: Implantar um cluster do AKS usando o portal do Azure – Serviço de Kubernetes do Azure e Guia de Início Rápido – Criar um registro no portal – Registro de Contêiner do Azure na documentação do Azure.

  2. Crie um segredo chamado AZURE_CREDENTIALS para armazenar suas credenciais do Azure. Para obter mais informações sobre como encontrar essas informações e estruturar o segredo, confira a documentação da ação Azure/login.

Depois de preencher os pré-requisitos, você pode prosseguir com a criação do fluxo de trabalho.

O exemplo de fluxo de trabalho a seguir demonstra como criar e implantar um projeto no Azure Kubernetes Services quando o código for enviado por push para o seu repositório.

Abaixo da chave env de fluxo de trabalho, altere os seguintes valores:

  • AZURE_CONTAINER_REGISTRY para o nome do registro de contêiner
  • PROJECT_NAME para o nome do projeto
  • RESOURCE_GROUP para o grupo de recursos que contém o cluster do AKS
  • CLUSTER_NAME para o nome do cluster do AKS

Esse fluxo de trabalho usa o mecanismo de renderização helm da ação azure/k8s-bake. Se você usar o mecanismo de renderização helm, altere o valor de CHART_PATH para o caminho para o arquivo do Helm. Altere CHART_OVERRIDE_PATH para uma matriz de caminhos de arquivo de substituição. Se você usar outro mecanismo de renderização, atualize os parâmetros de entrada enviados para a ação azure/k8s-bake.

YAML
# Esse fluxo de trabalho usa ações que não são certificadas pelo .
# São fornecidas por terceiros e regidas por
# termos de serviço, política de privacidade e suporte separados
# online.

# O  recomenda fixar ações em um SHA de commit.
# Para obter uma versão mais recente, você precisará atualizar o SHA.
# Você também pode fazer referência a uma marca ou branch, mas a ação pode ser alterada sem aviso.

name: Build and deploy to Azure Kubernetes Service

env:
  AZURE_CONTAINER_REGISTRY: MY_REGISTRY_NAME # set this to the name of your container registry
  PROJECT_NAME: MY_PROJECT_NAME              # set this to your project's name
  RESOURCE_GROUP: MY_RESOURCE_GROUP          # set this to the resource group containing your AKS cluster
  CLUSTER_NAME: MY_CLUSTER_NAME              # set this to the name of your AKS cluster
  REGISTRY_URL: MY_REGISTRY_URL              # set this to the URL of your registry
  # If you bake using helm:
  CHART_PATH: MY_HELM_FILE                   # set this to the path to your helm file
  CHART_OVERRIDE_PATH: MY_OVERRIDE_FILES     # set this to an array of override file paths

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4

    - name: Azure Login
      uses: azure/login@14a755a4e2fd6dff25794233def4f2cf3f866955
      with:
        creds: ${{ secrets.AZURE_CREDENTIALS }}

    - name: Build image on ACR
      uses: azure/CLI@61bb69d64d613b52663984bf12d6bac8fd7b3cc8
      with:
        azcliversion: 2.29.1
        inlineScript: |
          az configure --defaults acr=${{ env.AZURE_CONTAINER_REGISTRY }}
          az acr build -t -t ${{ env.REGISTRY_URL }}/${{ env.PROJECT_NAME }}:${{ .sha }}

    - name: Gets K8s context
      uses: azure/aks-set-context@94ccc775c1997a3fcfbfbce3c459fec87e0ab188
      with:
          creds: ${{ secrets.AZURE_CREDENTIALS }}
          resource-group: ${{ env.RESOURCE_GROUP }}
          cluster-name: ${{ env.CLUSTER_NAME }}
      id: login

    - name: Configure deployment
      uses: azure/k8s-bake@61041e8c2f75c1f01186c8f05fb8b24e1fc507d8
      with:
        renderEngine: 'helm'
        helmChart: ${{ env.CHART_PATH }}
        overrideFiles: ${{ env.CHART_OVERRIDE_PATH }}
        overrides: |
          replicas:2
        helm-version: 'latest'
      id: bake

    - name: Deploys application
      uses: Azure/k8s-deploy@dd4bbd13a5abd2fc9ca8bdcb8aee152bb718fa78
      with:
        manifests: ${{ steps.bake.outputs.manifestsBundle }}
        images: |
          ${{ env.AZURE_CONTAINER_REGISTRY }}.azurecr.io/${{ env.PROJECT_NAME }}:${{ .sha }}
        imagepullsecrets: |
          ${{ env.PROJECT_NAME }}

Os seguintes recursos também podem ser úteis: