Déployer une application web Go sur Azure Container Apps

Ce guide de démarrage rapide explique comment déployer une application web Go conteneurisée sur Azure Container Apps.

Azure Container Apps vous permet d’exécuter un code d’application empaqueté dans n’importe quel conteneur sans devoir gérer une infrastructure cloud complexe ou des orchestrateurs de conteneurs complexes, et sans vous soucier du modèle d’exécution ou de programmation. Les utilisations courantes d’Azure Container Apps sont notamment les suivantes : déploiement de points de terminaison d’API, hébergement d’applications de traitement en arrière-plan, gestion du traitement piloté par les événements et exécution de microservices.

Suivez ce didacticiel pour découvrir comment créer une image Docker, la déployer sur Azure Container Registry et déployer une application web Go sur Azure Container Apps.

Prérequis

  • Abonnement Azure : Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.

Programme d’installation

Pour vous connecter à Azure à partir de l’interface CLI, exécutez la commande az login et suivez les invites pour procéder à l’authentification.

az login

Pour vous assurer que vous exécutez la dernière version de l’interface CLI à l’aide de la commande az upgrade.

az upgrade

Ensuite, installez ou mettez à jour l’extension Azure Container Apps pour l’interface CLI.

Si vous recevez des erreurs concernant des paramètres manquants lorsque vous exécutez des commandes az containerapp dans Azure CLI, vérifiez que la dernière version de l’extension Azure Container Apps est installée.

az extension add --name containerapp --upgrade

Remarque

À compter de mai 2024, les extensions Azure CLI n’activent plus les fonctionnalités en préversion par défaut. Pour accéder aux fonctionnalités en préversion de Container Apps, installez l’extension Container Apps avec --allow-preview true.

az extension add --name containerapp --upgrade --allow-preview true

Maintenant que la version actuelle de l’extension ou du module est installée, inscrivez les espaces de noms Microsoft.App et Microsoft.OperationalInsights.

Remarque

Les ressources Azure Container Apps ont migré de l’espace de noms Microsoft.Web vers l’espace de noms Microsoft.App. Pour plus d’informations, reportez-vous à Migration de l’espace de noms de Microsoft.Web vers Microsoft.App en mars 2022.

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

Télécharger l’exemple d’application

Pour suivre ce tutoriel, vous avez besoin d’un exemple d’application à conteneuriser. Un exemple d’application web Go est fourni dans le dépôt GitHub msdocs-go-webapp-quickstart. Téléchargez ou clonez l’exemple d’application sur votre station de travail locale.

git clone https://github.com/Azure-Samples/msdocs-go-webapp-quickstart.git

cd msdocs-go-webapp-quickstart

Création d’un Azure Container Registry

Azure Container Registry vous permet de créer, de stocker et de gérer des images conteneur. Vous l’utiliserez pour stocker l’image Docker qui contient l’exemple d’application web Go fournie dans l’exemple de dépôt cité ci-dessus.

Exécutez les commandes suivantes pour créer un Azure Container Registry :

  1. Créez un groupe de ressources Azure avec la commande az group create.

    
    
    az group create \
        --name <resourceGroupName> \
        --location eastus
    
  2. Créez un Azure Container Registry à l’aide de la commande az acr create.

    az acr create \
        --resource-group <resourceGroupName> \
        --name <azureContainerRegistryName> \
        --sku basic
    
  3. Connectez-vous à l’instance de conteneur Azure avec la commande az acr login.

    az acr login --name <azureContainerRegistryName>  
    

Remplacez <resourceGroupName> et <azureContainerRegistryName> par les valeurs appropriées. Le nom de votre Azure Container Registry doit être unique au niveau mondial.

Remarque

Si vous obtenez une erreur similaire à celle ci-dessous lorsque vous exécutez la commande az acr login, vérifiez que le démon Docker s’exécute sur votre système :

You may want to use 'az acr login -n <azureContainerRegistryName> --expose-token' to get an access token, which does not require Docker to be installed.
2024-09-12 17:25:25.127779 An error occurred: DOCKER_COMMAND_ERROR

Générer et envoyer l’image Docker

Une fois que vous avez créé un Azure Container Registry, générez et envoyez l’image Docker de l’exemple d’application web Go.

Exécutez les commandes suivantes pour générer et envoyer l’image au registre :

  1. Obtenez les informations de connexion du serveur avec la commande az acr show.

    az acr show \
        --name <azureContainerRegistryName> \
        --resource-group <resourceGroupName> \
        --query loginServer \
        --output tsv  
    
  2. Générez l’image Docker localement.

    docker build -t <loginServer>/<imageName>:latest .
    
  3. Envoyer l’image Docker vers Azure Container Registry.

    docker push <loginServer>/<imageName>:latest
    
  4. Vérifiez que l’image a été envoyée avec succès vers Azure Container Registry avec la commande az acr repository list.

    az acr repository list \
        --name <azureContainerRegistryName> \
        --output table
    

Remplacez loginServer, imageName et azureContainerRegistryName par les valeurs appropriées. Le nom de l’image est l’image Docker envoyée à Azure Container Registry et utilisée ultérieurement pour le déploiement sur Azure Container Apps.

Maintenant que vous possédez une image disponible dans Azure Container Registry, vous pouvez déployer Azure Container App et son environnement.

Créer un environnement Azure Container Apps

Azure Container Apps n’a pas la complexité d’un orchestrateur de conteneurs, mais il faut tout de même trouver un moyen d’établir des limites sécurisées, et c’est là que les environnements Azure Container Apps entrent en jeu. Les applications de conteneur déployées dans un même environnement partagent le même réseau virtuel et écrivent les journaux dans le même espace de travail Log Analytics. Avant de pouvoir déployer une application de conteneur Azure, il vous faut un environnement pour le faire.

  • Exécutez la commande az containerapp env create pour créer un environnement Azure Container Apps.

    az containerapp env create \
        --name <containerAppEnvName> \
        --resource-group <resourceGroupName> \
        --location "East US"
    

Déployer sur Azure Container Apps

À ce stade, vous avez créé une Azure Container Registry, généré et envoyé une image Docker vers cette dernière, et créé un environnement Azure Container Apps. Il ne nous reste qu’à déployer l’application.

Exécutez la commande az containerapp create pour déployer l’application web Go sur Azure Container Apps.

az containerapp create \
    --name <containerAppName> \
    --resource-group <resourceGroupName> \
    --environment <containerAppEnvName> \
    --image "<loginServer>/<imageName>:latest" \
    --registry-server "<loginServer>" \
    --registry-identity system \
    --target-port 8080 \
    --ingress external

Le paramètre --registry-identity system configure l’identité managée affectée par le système sur l’application conteneur. L’application conteneur utilise cette identité plutôt que le nom d’utilisateur/mot de passe, ce qui est moins sécurisé, pour s’authentifier auprès du registre de conteneurs. La commande crée également automatiquement une attribution de rôle AcrPull pour l’identité, afin qu’elle soit autorisée à extraire des images à partir du registre. Pour utiliser des identités managées pour l’authentification et l’autorisation, le registre doit être un Azure Container Registry.

Vérifier l’URL de l’application web

Exécutez la commande az containerapp show pour obtenir le nom de domaine complet (FQDN) de l’entrée de l’application web.

APP_FQDN=$(az containerapp show \
    --name <containerAppName> \
    --resource-group <resourceGroupName> \
    --query properties.configuration.ingress.fqdn \
    --output tsv)

Ensuite, exécutez la commande curl sur le nom de domaine complet et confirmez que la sortie reflète le code HTML du site web.

curl "https://$APP_FQDN"

Nettoyer les ressources

Lorsque vous en avez terminé avec l’exemple d’application, vous pouvez supprimer d’Azure toutes les ressources pour l’application. Cela permet d’éviter les frais courants et d’encombrer votre abonnement Azure. Supprimer le groupe de ressources permet également de supprimer toutes les ressources qu’il contient. Cette méthode est la plus rapide pour supprimer toutes les ressources Azure de votre application.

Pour supprimer un groupe de ressources et ses ressources, exécutez la commande az group delete.

az group delete \
    --name <resourceGroupName> \
    --no-wait

Étapes suivantes