Requisitos previos
Antes de crear tu flujo de trabajo de GitHub Actions, primero necesitarás completar los siguientes pasos de configuración:
-
Cree un clúster de AKS de destino y un Azure Container Registry (ACR). Para obtener más información, consulte Inicio rápido: Implementar un clúster de AKS mediante el portal de Azure - Servicio de Kubernetes de Azure y Inicio rápido: Crear un registro en el portal - Registro de contenedores de Azure en la documentación de Azure.
-
Cree un secreto denominado
AZURE_CREDENTIALSpara almacenar las credenciales de Azure. Para obtener más información sobre cómo encontrar y estructurar el secreto, consultela documentación de la acción .
Crear un flujo de trabajo
Una vez que hayas completado los prerequisitos, puedes proceder con la creación del flujo de trabajo.
En el flujo de trabajo de ejemplo siguiente se muestra cómo compilar e implementar un proyecto en Azure Kubernetes Service cuando se inserta código en el repositorio.
Debajo de la clave env del flujo de trabajo, cambie los valores siguientes:
*
AZURE_CONTAINER_REGISTRY por el nombre del registro de contenedor
*
PROJECT_NAME al nombre de su proyecto
*
RESOURCE_GROUP por el grupo de recursos que contiene el clúster de AKS
*
CLUSTER_NAME por el nombre del clúster de AKS
Este flujo de trabajo usa el motor de representación de helm para la acción azure/k8s-bake. Si va a usar el motor de representación helm, cambie el valor de CHART_PATH por la ruta del archivo helm. Cambie CHART_OVERRIDE_PATH por una matriz de rutas de archivo de invalidación. Si usa otro motor de representación, actualice los parámetros de entrada que se envían a la acción azure/k8s-bake.
# Este flujo de trabajo usa acciones que no GitHub no certifica.
# Estas las proporcionan entidades terceras y las gobiernan
# condiciones de servicio, políticas de privacidad y documentación de soporte
# en línea.
# GitHub recomienda anclar acciones a un SHA de confirmación.
# Para obtener una versión más reciente, debes actualizar el SHA.
# También puedes hacer referencia a una etiqueta o rama, pero la acción puede cambiar sin ninguna advertencia.
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@v5
- 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 }}:${{ github.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 }}:${{ github.sha }}
imagepullsecrets: |
${{ env.PROJECT_NAME }}
# Este flujo de trabajo usa acciones que no GitHub no certifica.
# Estas las proporcionan entidades terceras y las gobiernan
# condiciones de servicio, políticas de privacidad y documentación de soporte
# en línea.
# GitHub recomienda anclar acciones a un SHA de confirmación.
# Para obtener una versión más reciente, debes actualizar el SHA.
# También puedes hacer referencia a una etiqueta o rama, pero la acción puede cambiar sin ninguna advertencia.
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@v5
- 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 }}:${{ github.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 }}:${{ github.sha }}
imagepullsecrets: |
${{ env.PROJECT_NAME }}
Información adicional
- Para obtener la plantilla de flujo de trabajo original, vea
azure-kubernetes-service.ymlen el repositoriostarter-workflowsde GitHub Actions. - Las acciones usadas en este flujo de trabajo son las acciones oficiales de Azure
Azure/login,Azure/aks-set-context,Azure/CLI,Azure/k8s-bakeyAzure/k8s-deploy. - Para obtener más ejemplos de flujos de trabajo de acción de GitHub que se implementan en Azure, consulte el repositorio actions-workflow-samples.