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.
- Go installé : Version 1.18 ou ultérieure
- Docker Desktop
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 :
Créez un groupe de ressources Azure avec la commande az group create.
az group create \ --name <resourceGroupName> \ --location eastus
Créez un Azure Container Registry à l’aide de la commande az acr create.
az acr create \ --resource-group <resourceGroupName> \ --name <azureContainerRegistryName> \ --sku basic
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 :
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
Générez l’image Docker localement.
docker build -t <loginServer>/<imageName>:latest .
Envoyer l’image Docker vers Azure Container Registry.
docker push <loginServer>/<imageName>:latest
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