Skip to main content

Déploiement sur Azure Kubernetes Service

Vous pouvez déployer votre projet sur AKS (Azure Kubernetes Service) dans le cadre de vos workflows de déploiement continu (CD).

Introduction

Ce guide explique comment utiliser GitHub Actions pour créer et déployer un projet sur Azure Kubernetes Service.

Remarque : Si vos workflows GitHub Actions doivent accéder aux ressources d’un fournisseur de cloud qui prend en charge OpenID Connecter (OIDC), vous pouvez configurer vos workflows pour qu’ils s’authentifient directement auprès du fournisseur de cloud. Cela vous permet d’arrêter de stocker ces informations d’identification en tant que secrets de longue durée, et de fournir d’autres avantages en matière de sécurité. Pour plus d’informations, consultez « À propos du renforcement de la sécurité avec OpenID Connect ». et « Configuration d’OpenID Connect dans Azure ».

Prérequis

Avant de créer votre workflow GitHub Actions, vous devez suivre les étapes de configuration suivantes :

  1. Créez un cluster AKS cible et un registre de conteneurs Azure (ACR). Pour plus d’informations, consultez « Démarrage rapide – Déployer un cluster AKS avec le portail Azure – Azure Kubernetes Service » et « Démarrage rapide – Créer un registre dans le portail – Azure Container Registry » dans la documentation Azure.

  2. Créez un secret appelé AZURE_CREDENTIALS pour stocker vos informations d’identification Azure. Pour plus d’informations sur la façon de trouver ces informations et de structurer le secret, consultez la documentation de l’action Azure/login.

Création du workflow

Une fois les conditions préalables remplies, vous pouvez procéder à la création du workflow.

L’exemple de workflow suivant montre comment générer et déployer un projet sur Azure Kubernetes Service lorsque le code est poussé (push) vers votre dépôt.

Sous la clé env de workflow, remplacez les valeurs suivantes :

  • AZURE_CONTAINER_REGISTRY par le nom de votre registre de conteneurs
  • PROJECT_NAME par le nom de votre projet
  • RESOURCE_GROUP par le groupe de ressources contenant votre cluster AKS
  • CLUSTER_NAME par le nom de votre cluster AKS

Ce workflow utilise le moteur de rendu helm pour l’action azure/k8s-bake. Si vous envisagez d’utiliser le moteur de rendu helm, remplacez la valeur de CHART_PATH par le chemin d’accès à votre fichier helm. Remplacez CHART_OVERRIDE_PATH par un tableau de chemins de fichiers de remplacement. Si vous utilisez un autre moteur de rendu, mettez à jour les paramètres d’entrée envoyés à l’action azure/k8s-bake.

YAML
# Ce workflow utilise des actions qui ne sont pas certifiées par GitHub.
# Elles sont fournies par un tiers et régies par
# des conditions d’utilisation du service, une politique de confidentialité et un support distincts.
# documentation en ligne.

# GitHub recommande d’épingler les actions à un SHA de commit.
# Pour obtenir une version plus récente, vous devez mettre à jour le SHA.
# Vous pouvez également référencer une balise ou une branche, mais l’action peut changer sans avertissement.

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 }}:${{ 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 }}

Ressources supplémentaires

Les ressources suivantes peuvent également être utiles :