Tirage (pull) d’image Azure Container Apps avec une identité managée

Vous pouvez tirer des images à partir de référentiels privés dans Microsoft Azure Container Registry en utilisant des identités managées pour l’authentification afin d’éviter l’utilisation d’informations d’identification d’administration. Vous pouvez utiliser une identité managée affectée par le système ou par l’utilisateur pour vous authentifier auprès d’Azure Container Registry.

Avec une identité managée affectée par le système, l’identité est créée et gérée par Azure Container Apps. L’identité est liée à votre application conteneur et supprimée quand votre application est supprimée. Avec une identité managée affectée par l’utilisateur, vous créez et gérez l’identité en dehors d’Azure Container Apps. Elle peut être affectée à plusieurs ressources Azure, dont Azure Container Apps.

Container Apps recherche une nouvelle version de l’image chaque fois qu’un conteneur est démarré. Dans la terminologie Docker ou Kubernetes, Container Apps définit la stratégie d’extraction d’images de chaque conteneur sur always.

Cet article explique comment utiliser le portail Azure pour configurer votre application conteneur afin d’utiliser des identités managées affectées par l’utilisateur et par le système pour extraire des images à partir de référentiels Azure Container Registry privés.

Identité managée affectée par l’utilisateur

Les étapes suivantes décrivent le processus de configuration de votre application conteneur pour utiliser une identité managée affectée par l’utilisateur afin d’extraire des images à partir de référentiels Azure Container Registry privés.

  1. Créer une application conteneur avec une image publique.
  2. Ajouter l’identité managée affectée par l’utilisateur à l’application conteneur.
  3. Créer une révision d’application conteneur avec une image privée et l’identité managée affectée par l’utilisateur.

Prérequis

  • Compte Azure avec un abonnement actif.

  • Azure Container Registry privé contenant une image que vous souhaitez extraire.

  • Votre registre de conteneurs Azure Container Registry doit autoriser les jetons d’audience ARM pour l’authentification afin d’utiliser l’identité managée pour extraire des images. Utilisez la commande suivante pour vérifier si les jetons ARM sont autorisés à accéder à votre ACR :

    az acr config authentication-as-arm show -r <REGISTRY>
    

    Si les jetons ARM ne sont pas autorisés, vous pouvez les autoriser avec la commande suivante :

    az acr config authentication-as-arm update -r <REGISTRY> --status enabled
    
  • Créez une identité managée affectée par l’utilisateur. Pour plus d’informations, consultez Créer une identité managée affectée par l’utilisateur.

Créer une application de conteneur

Suivez les étapes suivantes pour créer une application conteneur avec l’image de démarrage rapide par défaut.

  1. Accédez à la page d’accueil du portail Azure.

  2. Dans la barre de recherche supérieure, recherchez Applications conteneur.

  3. Dans les résultats de la recherche, sélectionnez Applications conteneur.

  4. Cliquez sur le bouton Créer.

  5. Sous l’onglet Informations de base, effectuez les actions suivantes.

    Setting Action
    Abonnement Sélectionnez votre abonnement Azure.
    Groupe de ressources Sélectionnez un groupe de ressources existant ou créez-en un.
    Nom de l’application conteneur Entrez un nom d’application conteneur.
    Lieu Sélectionnez un emplacement.
    Créer un environnement d’application conteneur Sélectionnez ou créez un environnement.
  6. Au bas de la page Créer une application conteneur, sélectionnez le bouton Vérifier + créer.

  7. Sélectionnez le bouton Créer au bas de la fenêtre Créer une application conteneur.

Patientez quelques minutes jusqu’à ce que le déploiement de l’application conteneur soit terminé. Une fois le déploiement effectué, sélectionnez Accéder à la ressource.

Ajouter l’identité managée affectée par l’utilisateur

  1. Dans le volet gauche, sélectionnez Identité.
  2. Sélectionnez l’onglet Affecté(e) par l’utilisateur.
  3. Sélectionnez le bouton Ajouter une identité managée affectée par l’utilisateur.
  4. Sélectionnez votre abonnement.
  5. Sélectionnez l’identité que vous avez créée.
  6. Sélectionnez Ajouter.

Créez une révision d’application conteneur

Créer une révision d’application conteneur avec une image privée et l’identité managée affectée par le système.

  1. Dans le menu de gauche, sélectionnez Gestion des révisions.

  2. Sélectionnez Créer une nouvelle révision.

  3. Dans la table Image conteneur, sélectionnez l’image conteneur.

  4. Dans la boîte de dialogue Modifier un conteneur, entrez les informations.

    Champ Action
    Nom Entrez le nom du conteneur.
    Source de l’image Sélectionnez Azure Container Registry.
    Authentification Sélectionnez Identité managée.
    Identité Dans le menu déroulant, sélectionnez l’identité que vous avez créée.
    Registre Dans le menu déroulant, sélectionnez le registre que vous souhaitez utiliser.
    Image Entrez le nom de l’image que vous voulez utiliser.
    Étiquette d’image Entrez le nom et l’étiquette de l’image que vous souhaitez extraire.

    Screen shot of the Edit a container dialog entering user assigned managed identity.

    Remarque

    Si les informations d’identification d’administration ne sont pas activées sur votre registre Azure Container Registry, un message d’avertissement s’affiche et vous devez entrer manuellement les informations de nom et d’étiquette de l’image.

  5. Sélectionnez Enregistrer.

  6. Dans la page Créer et déployer une nouvelle révision, sélectionnez Créer.

Une nouvelle révision sera créée et déployée. Le portail tentera automatiquement d’ajouter le rôle acrpull à l’identité managée affectée par l’utilisateur. Si le rôle n’est pas ajouté, vous pouvez l’ajouter manuellement.

Vous pouvez vérifier que le rôle a été ajouté en vérifiant l’identité à partir du volet Identité de la page de l’application conteneur.

  1. Dans le volet gauche, sélectionnez Identité.
  2. Sélectionnez l’onglet Affecté(e) par l’utilisateur.
  3. Sélectionnez l’identité managée affectée par l’utilisateur.
  4. Sélectionnez Attributions de rôles Azure dans le menu de la page des ressources d’identité managée.
  5. Vérifiez que le rôle acrpullest attribué à l’identité managée affectée par l’utilisateur.

Créer une application conteneur avec une image privée

Si vous ne souhaitez pas commencer par créer une application conteneur avec une image publique, vous pouvez également effectuer les opérations suivantes.

  1. Créez une identité managée affectée par l’utilisateur.
  2. Ajoutez le rôle acrpull à l’identité managée affectée par l’utilisateur.
  3. Créer une application conteneur avec une image privée et l’identité managée affectée par l’utilisateur.

Cette méthode est typique dans les scénarios d’infrastructure en tant que code (IaC).

Nettoyer les ressources

Si vous n’envisagez pas de continuer à utiliser cette application, vous pouvez supprimer l’instance Azure Container Apps et tous les services associés en supprimant le groupe de ressources.

Avertissement

La suppression du groupe de ressources aura pour effet de supprimer toutes les ressources qu’il contient. Si vous avez d’autres ressources dans le groupe, elles seront également supprimées. Si vous souhaitez conserver les ressources, vous pouvez supprimer l’instance et l’environnement d’application conteneur.

  1. Dans la section Vue d’ensemble, sélectionnez votre groupe de ressources.
  2. Sélectionnez le bouton Supprimer un groupe de ressources en haut de la Vue d’ensemble du groupe de ressources.
  3. Dans la boîte de dialogue de confirmation, entrez le nom du groupe de ressources.
  4. Sélectionnez Supprimer.
    Le processus de suppression du groupe de ressources peut prendre quelques minutes.

Identité managée affectée par le système

La méthode de configuration d’une identité managée affectée par le système dans le portail Azure est identique à la méthode de configuration d’une identité managée affectée par l’utilisateur. La seule différence est que vous n’avez pas besoin de créer une identité managée affectée par l’utilisateur. Au lieu de cela, l’identité managée affectée par le système est créée lorsque vous créez l’application conteneur.

La méthode de configuration d’une identité managée affectée par le système dans le portail Azure est la suivante :

  1. Créer une application conteneur avec une image publique.
  2. Créer une révision d’application conteneur avec une image privée et l’identité managée affectée par le système.

Prérequis

Créer une application de conteneur

Pour créer une application conteneur avec l’image de démarrage rapide par défaut, procédez comme suit.

  1. Accédez à la page d’accueil du portail Azure.

  2. Dans la barre de recherche supérieure, recherchez Applications conteneur.

  3. Dans les résultats de la recherche, sélectionnez Applications conteneur.

  4. Cliquez sur le bouton Créer.

  5. Sous l’onglet Informations de base, effectuez les actions suivantes.

    Setting Action
    Abonnement Sélectionnez votre abonnement Azure.
    Groupe de ressources Sélectionnez un groupe de ressources existant ou créez-en un.
    Nom de l’application conteneur Entrez un nom d’application conteneur.
    Lieu Sélectionnez un emplacement.
    Créer un environnement d’application conteneur Sélectionnez ou créez un environnement.
  6. Au bas de la page Créer une application conteneur, sélectionnez le bouton Vérifier + créer.

  7. Au bas de la page Créer une application conteneur, sélectionnez le bouton Créer.

Patientez quelques minutes jusqu’à ce que le déploiement de l’application conteneur soit terminé. Une fois le déploiement effectué, sélectionnez Accéder à la ressource.

Modifier et déployer une révision

Modifiez le conteneur pour utiliser l’image de votre Azure Container Registry privé et configurez l’authentification pour utiliser l’identité affectée par le système.

  1. Dans le menu situé à gauche, sélectionnez Conteneurs.

  2. Sélectionnez Modifier et déployer.

  3. Dans la liste, sélectionnez le conteneur simple-hello-world-container.

    Setting Action
    Nom Entrez le nom de l’application conteneur.
    Source de l’image Sélectionnez Azure Container Registry.
    Authentification Sélectionnez Identité managée.
    Identité Sélectionnez Affectée par le système.
    Registre Entrez le nom du registre.
    Image Entrer le nom de l’image.
    Balise d’image Entrez l’étiquette.

    Screen shot Edit a container with system-assigned managed identity.

    Remarque

    Si les informations d’identification d’administration ne sont pas activées sur votre registre Azure Container Registry, un message d’avertissement s’affiche et vous devez entrer manuellement les informations de nom et d’étiquette de l’image.

  4. Sélectionnez Enregistrer au bas de la page.

  5. En bas de la page Créer et déployer une nouvelle révision, sélectionnez Créer.

  6. Après quelques minutes, dans la page Gestion des révisions, sélectionnez Actualiser pour afficher la nouvelle révision.

Une nouvelle révision sera créée et déployée. Le portail tentera automatiquement d’ajouter le rôle acrpull à l’identité managée affectée par le système. Si le rôle n’est pas ajouté, vous pouvez l’ajouter manuellement.

Vous pouvez vérifier que le rôle a été ajouté en vérifiant l’identité dans le volet Identité de la page de l’application conteneur.

  1. Dans le volet gauche, sélectionnez Identité.
  2. Sélectionnez l’onglet Affectée par le système.
  3. Sélection d’Attributions de rôles Azure.
  4. Vérifiez que le rôle acrpullest attribué à l’identité managée affectée par le système.

Nettoyer les ressources

Si vous n’envisagez pas de continuer à utiliser cette application, vous pouvez supprimer l’instance Azure Container Apps et tous les services associés en supprimant le groupe de ressources.

Avertissement

La suppression du groupe de ressources aura pour effet de supprimer toutes les ressources qu’il contient. Si vous avez d’autres ressources dans le groupe, elles seront également supprimées. Si vous souhaitez conserver les ressources, vous pouvez supprimer l’instance et l’environnement d’application conteneur.

  1. Dans la section Vue d’ensemble, sélectionnez votre groupe de ressources.
  2. Sélectionnez le bouton Supprimer un groupe de ressources en haut de la Vue d’ensemble du groupe de ressources.
  3. Dans la boîte de dialogue de confirmation, entrez le nom du groupe de ressources.
  4. Sélectionnez Supprimer.
    Le processus de suppression du groupe de ressources peut prendre quelques minutes.

Cet article explique comment configurer votre application conteneur pour utiliser des identités managées afin d’extraire des images d’un référentiel Azure Container Registry privé à l’aide d’Azure CLI et d’Azure PowerShell.

Prérequis

Logiciel requis Description
Compte Azure Compte Azure avec un abonnement actif. Si vous n’en avez pas, vous pouvez en créer un gratuitement.
Azure CLI Si vous utilisez Azure CLI, installez Azure CLI sur votre ordinateur local.
Azure PowerShell Si vous utilisez PowerShell, installez Azure PowerShell sur votre ordinateur local. Vérifiez que la dernière version du module Az.App est installée en exécutant la commande Install-Module -Name Az.App.
Azure Container Registry Azure Container Registry privé contenant une image que vous souhaitez extraire. Démarrage rapide : Créer un registre de conteneurs privé avec Azure CLI ou Démarrage rapide : Créer un registre de conteneurs privé avec Azure PowerShell

Programme d’installation

Commencez par vous connecter à Azure à partir de l’interface CLI ou de PowerShell. Exécutez la commande suivante et suivez les invites pour terminer le processus d’authentification.

az login

Installez l’extension Azure Container Apps pour l’interface CLI.

az extension add --name containerapp --upgrade

Maintenant que l’extension ou le module actuels sont installés, inscrivez l’espace de noms Microsoft.App et le fournisseur Microsoft.OperationalInsights si vous ne les avez pas inscrits auparavant.

az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights

Ensuite, définissez les variables d’environnement suivantes. Remplacez les <ESPACES RÉSERVÉS> par vos propres valeurs.

RESOURCE_GROUP="<YOUR_RESOURCE_GROUP_NAME>"
LOCATION="<YOUR_LOCATION>"
CONTAINERAPPS_ENVIRONMENT="<YOUR_ENVIRONMENT_NAME>"
REGISTRY_NAME="<YOUR_REGISTRY_NAME>"
CONTAINERAPP_NAME="<YOUR_CONTAINERAPP_NAME>"
IMAGE_NAME="<YOUR_IMAGE_NAME>"

Si vous avez déjà un groupe de ressources, ignorez cette étape. Autrement, sélectionnez un groupe de ressources.

az group create \
  --name $RESOURCE_GROUP \
  --location $LOCATION

Créer un environnement d’application conteneur

Si l’environnement n’existe pas, exécutez la commande suivante :

Pour créer l’environnement, exécutez la commande suivante :

az containerapp env create \
  --name $CONTAINERAPPS_ENVIRONMENT \
  --resource-group $RESOURCE_GROUP \
  --location $LOCATION

Passez à la section suivante pour configurer l’identité managée affectée par l’utilisateur, ou allez à la section Identité managée affectée par le système.

Identité managée affectée par l’utilisateur

Pour configurer l’identité managée affectée par l’utilisateur, procédez comme suit :

  1. Créez une identité managée affectée par l’utilisateur.
  2. Si vous utilisez PowerShell, attribuez un rôle acrpull pour votre registre à l’identité managée. Azure CLI effectue automatiquement cette affectation.
  3. Créez une application conteneur avec l’image à partir du registre privé authentifié avec l’identité managée affectée par l’utilisateur.

Créer une identité managée attribuée par l’utilisateur

Créez une identité managée affectée par l’utilisateur. Remplacez les <ESPACES RÉSERVÉS> par le nom de votre identité managée.

IDENTITY="<YOUR_IDENTITY_NAME>"
az identity create \
  --name $IDENTITY \
  --resource-group $RESOURCE_GROUP

Obtenez l’ID de ressource de l’identité.

IDENTITY_ID=`az identity show \
  --name $IDENTITY \
  --resource-group $RESOURCE_GROUP \
  --query id`

Créer une application de conteneur

Créez votre application conteneur avec votre image à partir du registre privé authentifié avec l’identité.

Copiez l’ID de ressource de l’identité pour le coller dans les espaces réservés <IDENTITY_ID> dans la commande ci-dessous. Si votre balise d’image n’est pas latest, remplacez « latest » par votre balise.

echo $IDENTITY_ID
az containerapp create \
  --name $CONTAINERAPP_NAME \
  --resource-group $RESOURCE_GROUP \
  --environment $CONTAINERAPPS_ENVIRONMENT \
  --user-assigned <IDENTITY_ID> \
  --registry-identity <IDENTITY_ID> \
  --registry-server "$REGISTRY_NAME.azurecr.io" \
  --image "$REGISTRY_NAME.azurecr.io/$IMAGE_NAME:latest"

Nettoyage

Attention

La commande suivante supprime le groupe de ressources spécifié et toutes les ressources qu’il contient. Si des ressources en dehors du cadre de ce démarrage rapide existent dans le groupe de ressources spécifié, elles seront également supprimées.

az group delete --name $RESOURCE_GROUP

Identité managée affectée par le système

Pour configurer une identité affectée par le système, vous devez :

  1. Créer une application conteneur avec une image publique.
  2. Attribuer une identité managée affectée par le système à l’ application conteneur.
  3. Mettre à jour l’application conteneur avec l’image privée.

Créer une application de conteneur

Créer un conteneur avec une image publique.

az containerapp create \
  --name $CONTAINERAPP_NAME \
  --resource-group $RESOURCE_GROUP \
  --environment $CONTAINERAPPS_ENVIRONMENT \
  --image mcr.microsoft.com/k8se/quickstart:latest \
  --target-port 80 \
  --ingress external

Mettre à jour l’application conteneur

Mettez à jour l’application conteneur avec l’image provenant de votre registre de conteneurs privé et ajoutez une identité affectée par le système pour authentifier l’extraction Azure Container Registry. Vous pouvez également inclure d’autres paramètres nécessaires pour votre application conteneur, comme des paramètres d’entrée, de mise à l’échelle et de Distributed Apps Runtime (Dapr).

Définissez le serveur de Registre et activez l’identité managée affectée par le système dans l’application conteneur.

az containerapp registry set \
  --name $CONTAINERAPP_NAME \
  --resource-group $RESOURCE_GROUP \
  --identity system \
  --server "$REGISTRY_NAME.azurecr.io"
az containerapp update \
  --name $CONTAINERAPP_NAME \
  --resource-group $RESOURCE_GROUP \
  --image "$REGISTRY_NAME.azurecr.io/$IMAGE_NAME:latest"

Nettoyage

Attention

La commande suivante supprime le groupe de ressources spécifié et toutes les ressources qu’il contient. Si des ressources en dehors du cadre de ce démarrage rapide existent dans le groupe de ressources spécifié, elles seront également supprimées.

az group delete --name $RESOURCE_GROUP

Étapes suivantes