Introdução
Este guia explica como usar o GitHub Actions para criar e implantar um projeto no Serviço de Kubernetes do Azure.
Pré-requisitos
Antes de criar seu fluxo de trabalho de GitHub Actions, primeiro você precisa concluir as etapas de configuração a seguir:
-
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.
-
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çãoAzure/login
.
Criar o fluxo de trabalho
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êinerPROJECT_NAME
para o nome do projetoRESOURCE_GROUP
para o grupo de recursos que contém o cluster do AKSCLUSTER_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
.
# Esse fluxo de trabalho usa ações que não são certificadas pelo GitHub.
# São fornecidas por terceiros e regidas por
# termos de serviço, política de privacidade e suporte separados
# online.
# O GitHub 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@v3
- name: Azure Login
uses: azure/login@89d153571fe9a34ed70fcf9f1d95ab8debea7a73
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Build image on ACR
uses: azure/CLI@7378ce2ca3c38b4b063feb7a4cbe384fef978055
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 }}:${{ github.sha }}
- name: Gets K8s context
uses: azure/aks-set-context@4e5aec273183a197b181314721843e047123d9fa
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
resource-group: ${{ env.RESOURCE_GROUP }}
cluster-name: ${{ env.CLUSTER_NAME }}
id: login
- name: Configure deployment
uses: azure/k8s-bake@773b6144a3732e3bf4c78b146a0bb9617b2e016b
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@c8fbd76ededaad2799c054a9fd5d0fa5d4e9aee4
with:
manifests: ${{ steps.bake.outputs.manifestsBundle }}
images: |
${{ env.AZURE_CONTAINER_REGISTRY }}.azurecr.io/${{ env.PROJECT_NAME }}:${{ github.sha }}
imagepullsecrets: |
${{ env.PROJECT_NAME }}
Recursos adicionais
Os seguintes recursos também podem ser úteis:
- Para o fluxo de trabalho inicial original, confira
azure-kubernetes-service.yml
no repositóriostarter-workflows
do GitHub Actions. - As ações usadas nesse fluxo de trabalho são as ações
Azure/login
,Azure/aks-set-context
,Azure/CLI
eAzure/k8s-bake
oficiais do Azure e as açõesAzure/k8s-deploy
. - Para ver mais exemplos de fluxos de trabalho do GitHub Action que são implantados no Azure, confira o repositório actions-workflow-samples.