Partage via


Déployer sur Azure Container Apps à partir d’Azure Pipelines

Azure Container Apps vous permet d’utiliser Azure Pipelines pour publier des révisions sur votre application de conteneur. À mesure que les commits sont envoyés à votre référentiel Azure Pipelines, un pipeline est déclenché et met à jour l’image du conteneur dans le registre de conteneurs. Azure Container Apps crée une révision basée sur l’image conteneur mise à jour.

Le pipeline est déclenché par les validations dans une branche spécifique de votre référentiel. Lors de la création du pipeline, vous décidez de la branche qui est le déclencheur.

Tâche Azure Pipelines Container Apps

La tâche prend en charge les scénarios suivants :

  • Générer à partir d’un Dockerfile et déployer sur Container Apps
  • Générer à partir de code source sans Dockerfile et déployer sur Container Apps Les langages pris en charge incluent .NET, Java, Node.js, PHP et Python.
  • Déployez une image conteneur existante sur Container Apps

Avec la version de production, cette tâche est fournie avec Azure DevOps et ne nécessite plus d’installation explicite. Pour obtenir la documentation complète, consultez AzureContainerApps@1 – Tâche Azure Container Apps Deploy v1.

Exemples d'utilisation

Voici quelques scénarios courants d’utilisation de la tâche. Pour plus d’informations, consultez la documentation de la tâche.

Générer et déployer sur Container Apps

L’extrait de code suivant montre comment créer une image conteneur à partir du code source et la déployer sur Container Apps.

steps:
- task: AzureContainerApps@1
  inputs:
    appSourcePath: '$(Build.SourcesDirectory)/src'
    azureSubscription: 'my-subscription-service-connection'
    acrName: 'myregistry'
    containerAppName: 'my-container-app'
    resourceGroup: 'my-container-app-rg'

La tâche utilise le Dockerfile dans appSourcePath pour générer l’image conteneur. Si aucun Dockerfile n’est trouvé, la tâche tente de générer l’image conteneur à partir du code source dans appSourcePath.

Déployez une image conteneur existante sur Container Apps

L’extrait de code suivant montre comment déployer une image conteneur existante dans Container Apps. La tâche s’authentifie auprès du Registre à l’aide de la connexion de service. Si l’identité de la connexion de service n’est pas affectée au rôle AcrPush pour le Registre, fournissez les informations d’identification d’administrateur du Registre à l’aide des paramètres d’entrée acrUsername et acrPassword .

steps:
  - task: AzureContainerApps@1
    inputs:
      azureSubscription: 'my-subscription-service-connection'
      containerAppName: 'my-container-app'
      resourceGroup: 'my-container-app-rg'
      imageToDeploy: 'myregistry.azurecr.io/my-container-app:$(Build.BuildId)'

Important

Si vous créez une image conteneur dans une étape distincte, assurez-vous d’utiliser une étiquette unique comme ID de build au lieu d’une étiquette stable comme latest. Pour plus d’informations, consultez Bonnes pratiques en matière de balise d’image.

Authentification avec Azure Container Registry

La tâche Azure Container Apps doit s’authentifier auprès de votre instance Azure Container Registry pour envoyer (push) l’image conteneur. L’application conteneur doit également s’authentifier auprès de votre instance Azure Container Registry pour tirer l’image conteneur.

Pour envoyer (push) des images, la tâche s’authentifie automatiquement auprès du registre de conteneurs spécifié dans acrName à l’aide de la connexion de service fournie dans azureSubscription. Si l’identité de la connexion de service n’est pas affectée au rôle AcrPush pour le Registre, fournissez les informations d’identification d’administrateur du Registre à l’aide de acrUsername et de acrPassword.

Pour extraire des images, Azure Container Apps utilise une identité managée (recommandé) ou des informations d’identification d’administrateur pour s’authentifier auprès de l’instance Azure Container Registry. Pour utiliser l’identité managée, l’application conteneur cible de la tâche doit être configurée pour utiliser l’identité managée. Pour vous authentifier avec les informations d’identification de l’administrateur du registre, définissez les entrées acrUsername et acrPassword de la tâche.

Configuration

Effectuez les étapes suivantes pour configurer un pipeline Azure DevOps à déployer sur Azure Container Apps.

  • Créer un référentiel Azure DevOps pour votre application
  • Créer une application conteneur avec l’identité managée activée
  • Attribuer le rôle AcrPull pour Azure Container Registry à l’identité managée de l’application conteneur
  • Installer la tâche Azure Container Apps à partir de la Place de marché Azure DevOps
  • Configurer une connexion de service Azure DevOps pour votre abonnement Azure
  • Créer un pipeline Azure DevOps

Prérequis

Condition requise Instructions
Compte Azure Si vous n’en avez pas un, créez un compte gratuitement. Vous avez besoin de l’autorisation Contributeur ou Propriétaire sur l’abonnement Azure pour continuer. Pour plus d’informations, consultez Attribuer des rôles Azure à l’aide du portail Azure.
Azure DevOps Projects Accédez à Azure DevOps et sélectionnez Démarrer gratuitement. Créez ensuite un projet.
Azure CLI Installez Azure CLI.

Créer un référentiel Azure DevOps et cloner le code source

Avant de créer un pipeline, le code source de votre application doit se trouver dans un référentiel.

  1. Connectez-vous à Azure DevOps et accédez à votre projet.

  2. Ouvrez la page Référentiels.

  3. Dans la barre de navigation supérieure, sélectionnez la liste déroulante Référentiels, puis sélectionnez Importer le référentiel.

  4. Entrez les informations suivantes et sélectionnez Importer :

    Champ Value
    Type de dépôt Git
    Cloner l’URL https://github.com/Azure-Samples/containerapps-albumapi-csharp.git
    Nom my-container-app
  5. Sélectionnez Cloner pour afficher l’URL du référentiel et la copier.

  6. Ouvrez un terminal et exécutez la commande suivante pour cloner le référentiel :

    git clone <REPOSITORY_URL> my-container-app
    

    Remplacez <REPOSITORY_URL> par l’URL que vous avez copiée.

Créer une application conteneur et configurer une identité managée

Créez votre application conteneur à l’aide de la commande az containerapp up en procédant comme suit. Cette commande crée des ressources Azure, génère l’image conteneur, stocke l’image dans un registre et la déploie dans une application conteneur.

Une fois votre application créée, vous pouvez ajouter une identité managée à votre application et lui attribuer le rôle AcrPull pour permettre à l’identité d’extraire des images du Registre.

  1. Passez au dossier src du référentiel cloné.

    cd my-container-app
    cd src
    
  2. Créez des ressources Azure et déployez une application conteneur avec la commande az containerapp up.

    az containerapp up \
      --name my-container-app \
      --source . \
      --ingress external 
    
  3. Dans la sortie de la commande, notez le nom de l’instance Azure Container Registry.

  4. Récupérez l’ID de ressource complet du registre de conteneurs.

    az acr show --name <ACR_NAME> --query id --output tsv
    

    Remplacez <ACR_NAME> par le nom de votre registre.

  5. Activez l’identité managée pour l’application conteneur.

    az containerapp identity assign \
      --name my-container-app \
      --resource-group my-container-app-rg \
      --system-assigned \
      --output tsv
    

    Notez l’ID principal de l’identité managée dans la sortie de la commande.

  6. Attribuez le rôle AcrPull de l’instance Azure Container Registry à l’identité managée de l’application conteneur.

    az role assignment create \
      --assignee <MANAGED_IDENTITY_PRINCIPAL_ID> \
      --role AcrPull \
      --scope <ACR_RESOURCE_ID>
    

    Remplacez <MANAGED_IDENTITY_PRINCIPAL_ID> par l’ID principal de l’identité managée et <ACR_RESOURCE_ID> par l’ID de ressource d’Azure Container Registry.

  7. Configurez l’application conteneur pour utiliser l’identité managée afin de tirer des images d’Azure Container Registry.

    az containerapp registry set \
      --name my-container-app \
      --resource-group my-container-app-rg \
      --server <ACR_NAME>.azurecr.io \
      --identity system
    

    Remplacer <ACR_NAME> par le nom de votre registre Azure Container Registry.

Créer une connexion de service Azure DevOps

Pour effectuer un déploiement sur Azure Container Apps, vous devez créer une connexion de service Azure DevOps pour votre abonnement Azure.

  1. Dans Azure DevOps, sélectionnez Paramètres du projet.

  2. Sélectionnez Connexions de service.

  3. Sélectionnez Nouvelle connexion de service.

  4. Sélectionnez Azure Resource Manager.

  5. Sélectionnez Principal de service (automatique), puis Suivant.

  6. Entrez les informations suivantes, puis sélectionnez Enregistrer:

    Champ Valeur
    Abonnement Sélectionnez votre abonnement Azure.
    Groupe de ressources Sélectionnez le groupe de ressources (my-container-app-rg) qui contient votre application conteneur et votre registre de conteneurs.
    Nom de la connexion de service my-subscription-service-connection

Pour en savoir plus sur les connexions de service, consultez Se connecter à Microsoft Azure.

Créer un pipeline YAML Azure DevOps

  1. Dans votre projet Azure DevOps, sélectionnez Pipelines.

  2. Sélectionnez Nouveau pipeline.

  3. Sélectionnez Azure Repos Git.

  4. Sélectionnez le référentiel qui contient votre code source (my-container-app).

  5. Sélectionnez Pipeline de démarrage.

  6. Dans l’éditeur, remplacez le contenu du fichier par le YAML suivant :

    trigger:
      branches:
        include:
          - main
    
    pool:
      vmImage: ubuntu-latest
    
    steps:
      - task: AzureContainerApps@1
        inputs:
          appSourcePath: '$(Build.SourcesDirectory)/src'
          azureSubscription: '<AZURE_SUBSCRIPTION_SERVICE_CONNECTION>'
          acrName: '<ACR_NAME>'
          containerAppName: 'my-container-app'
          resourceGroup: 'my-container-app-rg'
    

    Remplacez <AZURE_SUBSCRIPTION_SERVICE_CONNECTION> par le nom de la connexion de service Azure DevOps (my-subscription-service-connection) que vous avez créée à l’étape précédente, et <ACR_NAME> par le nom de votre instance Azure Container Registry.

  7. Sélectionnez Enregistrer et exécuter.

Une exécution Azure Pipelines commence à générer et déployer votre application conteneur. Pour vérifier sa progression, accédez à Pipelines et sélectionnez l’exécution. Lors de la première exécution du pipeline, vous pouvez être invité à autoriser le pipeline à utiliser votre connexion de service.

Pour déployer une nouvelle révision de votre application, envoyez (push) un nouveau commit à la branche primaire.