Skip to main content

Desplegar a Azure Kubernetes Service

Puedes desplegar tu proyecto a Azure Kubernetes Service (AKS) como parte de tus flujos de trabajo de despliegue continuo (DC).

Introducción

Esta guía te explica cómo utilizar las GitHub Actions para crear y desplegar un proyecto a Azure Kubernetes Service.

Nota: Si tus flujos de trabajo de GitHub Actions necesitan acceder a los recursos de un proveedor de servicios en la red que sea compatible con OpenID Connect (OIDC), puedes configurarlos para que se autentiquen directamente con dicho proveedor. Esto te permitirá dejar de almacenar estas credenciales como secretos de duración larga y te proporcionará otros beneficios de seguridad. Para obtener más información, consulta la sección "Acerca del fortalecimiento de seguridad con OpenID Connect". y "Configurar OpenID Connect en Azure".

Prerrequisitos

Antes de crear tu flujo de trabajo de GitHub Actions, primero necesitarás completar los siguientes pasos de configuración:

  1. Crea un clúster de AKS destino y un Registro de Contenedor de Azure (ACR). Para obtener más información, consulta las secciones "Inicio rápido: Desplegar un clúster de AKS utilizando el portal de Azure - Azure Kubernetes Service" y "Inicio ráido - Crear un registro en el portal - Azure Container Registry" en la documentación de Azure.

  2. Crea un secreto llamado AZURE_CREDENTIALS para almacenar tus credenciales de Azure. Para obtener más información sobre cómo encontrar estos datos y estructurar el secreto, consulta la documentación de la acción Azure/login.

Crear un flujo de trabajo

Una vez que hayas completado los prerequisitos, puedes proceder con la creación del flujo de trabajo.

El siguiente flujo de trabajo de ejemplo demuestra cómo compilar y desplegar un proyecto a Azure Kibernetes Service cuando el código se sube a tu repositorio.

Debajo de la llave de flujo de trabajo env, cambia los siguientes valores:

  • AZURE_CONTAINER_REGISTRY al nombre del registro de tu contenedor
  • PROJECT_NAME al nombre de tu proyecto
  • RESOURCE_GROUP al grupo de recursos que contiene tu clúster de AKS
  • CLUSTER_NAME al nombre de tu clúster de AKS

Este flujo de trabajo utiliza el motor de procesamiento helm para la acción azure/k8s-bake. Si vas a utilizar el motor de procesamiento helm, cambia el valor de CHART_PATH a la ruta de tu archivo de helm. Cambia CHART_OVERRIDE_PATH a un arreglo de rutas de archivo de invalidación. Si utilizas un motor de procesamiento diferente, actualiza los parámetros de entrada que se envían a la acción azure/k8s-bake.

YAML
# This workflow uses actions that are not certified by GitHub.
# Estas las proporcionan entidades terceras y las gobiernan
# condiciones de servicio, políticas de privacidad y documentación de soporte
# documentación.

# GitHub recommends pinning actions to a commit SHA.
# To get a newer version, you will need to update the SHA.
# You can also reference a tag or branch, but the action may change without warning.

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 adicionales

Los siguientes recursos también pueden ser útiles: