Partager via


Tutoriel : Mettre à l’échelle une application de conteneur

Azure Container Apps gère la mise à l’échelle horizontale automatique en utilisant un ensemble de règles de mise à l’échelle déclaratives. Quand une application conteneur effectue un scale-out, des instances de l’application conteneur sont créées à la demande. Ces instances sont appelées réplicas.

Dans ce tutoriel, vous ajoutez une règle de mise à l’échelle HTTP à votre application de conteneur et observez la façon dont votre application est mise à l’échelle.

Prérequis

Condition requise Instructions
Compte Azure Si vous ne possédez pas de compte Azure, vous pouvez créer un compte gratuit.

Vous avez besoin de l’autorisation Contributeur sur l’abonnement Azure pour continuer. Pour plus d’informations, consultez Attribuer des rôles Azure à l’aide du portail Azure.
Compte GitHub Vous pouvez en obtenir un gratuitement.
Azure CLI Installez Azure CLI.

Programme d’installation

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

az login

Pour être sûr d’utiliser la dernière version de l’interface CLI, exécutez la commande de mise à niveau.

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 ou les cmdlets du module Az.App dans Azure PowerShell, assurez-vous 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.

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

Créer et déployer l’application conteneur

Créez et déployez votre application de conteneur à l’aide de la commande containerapp up. Cette commande crée :

  • Resource group
  • Environnement Container Apps
  • Espace de travail Log Analytics

Si l’une de ces ressources existe déjà, la commande utilise les ressources existantes plutôt que d’en créer de nouvelles.

Enfin, la commande crée et déploie l’application de conteneur à l’aide d’une image conteneur publique.

az containerapp up \
  --name my-container-app \
  --resource-group my-container-apps \
  --location centralus \
  --environment 'my-container-apps' \
  --image mcr.microsoft.com/k8se/quickstart:latest \
  --target-port 8080 \
  --ingress external \
  --query properties.configuration.ingress.fqdn \

Notes

Vérifiez que la valeur du paramètre --image est en minuscules.

En définissant --ingress sur external, vous rendez l’application conteneur disponible pour les demandes publiques.

La commande up retourne le nom de domaine complet de l’application de conteneur. Copiez ce nom de domaine complet (FQDN) dans un fichier texte. Vous l’utiliserez dans la section Envoyer des demandes. Votre FQDN ressemble à l’exemple suivant :

https://my-container-app.icydune-96848328.centralus.azurecontainerapps.io

Ajouter une règle de mise à l’échelle

Ajoutez une règle de mise à l’échelle HTTP à votre application de conteneur en exécutant la commande az containerapp update.

az containerapp update \
	--name my-container-app \
	--resource-group my-container-apps \
    --scale-rule-name my-http-scale-rule \
    --scale-rule-http-concurrency 1

Cette commande ajoute une règle de mise à l’échelle HTTP à votre application de conteneur avec le nom my-http-scale-rule et un paramètre d’accès concurrentiel de 1. Si votre application reçoit plusieurs requêtes HTTP simultanées, le runtime crée des réplicas de votre application pour gérer les requêtes.

La commande update retourne la nouvelle configuration en tant que réponse JSON pour vérifier que votre demande a réussi.

Sortie du journal de démarrage

Vous pouvez observer les effets de la mise à l’échelle de votre application en affichant les journaux générés par le runtime Container Apps. Utilisez la commande az containerapp logs show pour commencer à écouter les entrées de journal.

az containerapp logs show \
	--name my-container-app \
	--resource-group my-container-apps \
	--type=system \
	--follow=true

La commande show retourne les entrées des journaux système pour votre application de conteneur en temps réel. Vous pouvez vous attendre à une réponse semblable à celle-ci :

{
	"TimeStamp":"2023-08-01T16:49:03.02752",
	"Log":"Connecting to the container 'my-container-app'..."
}
{
	"TimeStamp":"2023-08-01T16:49:03.04437",
	"Log":"Successfully Connected to container:
	'my-container-app' [Revision: 'my-container-app--9uj51l6',
	Replica: 'my-container-app--9uj51l6-5f96557ffb-5khg9']"
}
{
	"TimeStamp":"2023-08-01T16:47:31.9480811+00:00",
	"Log":"Microsoft.Hosting.Lifetime[14]"
}
{
	"TimeStamp":"2023-08-01T16:47:31.9481264+00:00",
	"Log":"Now listening on: http://[::]:8080"
}
{
	"TimeStamp":"2023-08-01T16:47:31.9490917+00:00",
	"Log":"Microsoft.Hosting.Lifetime[0]"
}
{
	"TimeStamp":"2023-08-01T16:47:31.9491036+00:00",
	"Log":"Application started. Press Ctrl+C to shut down."
}
{
	"TimeStamp":"2023-08-01T16:47:31.949723+00:00",
	"Log":"Microsoft.Hosting.Lifetime[0]"
}
{
	"TimeStamp":"2023-08-01T16:47:31.9497292+00:00",
	"Log":"Hosting environment: Production"
}
{
	"TimeStamp":"2023-08-01T16:47:31.9497325+00:00",
	"Log":"Microsoft.Hosting.Lifetime[0]"
}
{
	"TimeStamp":"2023-08-01T16:47:31.9497367+00:00",
	"Log":"Content root path: /app/"
}

Pour plus d’informations, consultez az containerapp logs.

Envoyer des demandes

Ouvrez un nouvel interpréteur de commandes bash. Exécutez la commande suivante, en remplaçant <YOUR_CONTAINER_APP_FQDN> par le nom de domaine complet de votre application de conteneur enregistrée à la section Créer et déployer l’application de conteneur.

seq 1 50 | xargs -Iname -P10 curl "<YOUR_CONTAINER_APP_FQDN>"

Ces commandes envoient 50 requêtes à votre application de conteneur dans des lots simultanés de 10 requêtes chacune.

Commande ou argument Description
seq 1 50 Génère une séquence de nombres de 1 à 50.
| L’opérateur barre verticale envoie la séquence à la commande xargs.
xargs Exécute curl avec l’URL spécifiée
-Iname Agit comme un espace réservé pour la sortie de seq. Cet argument empêche l’envoi de la valeur renvoyée à la commande curl.
curl Appelle l’URL donnée.
-P10 Indique à xargs d’exécuter jusqu’à 10 processus à la fois.

Pour plus d’informations, consultez la documentation pour :

Dans le premier interpréteur de commandes, où vous avez exécuté la commande az containerapp logs show, la sortie contient désormais une ou plusieurs entrées de journal comme suit.

{
	"TimeStamp":"2023-08-01 18:09:52 +0000 UTC",
	"Type":"Normal",
	"ContainerAppName":"my-container-app",
	"RevisionName":"my-container-app--9uj51l6",
	"ReplicaName":"my-container-app--9uj51l6-5f96557ffb-f795d",
	"Msg":"Replica 'my-container-app--9uj51l6-5f96557ffb-f795d' has been scheduled to run on a node.",
	"Reason":"AssigningReplica",
	"EventSource":"ContainerAppController",
	"Count":0
}

Afficher la mise à l’échelle dans le portail Azure (facultatif)

  1. Connectez-vous au portail Azure.
  2. Dans la barre de recherche en haut, entrez my-container-app.
  3. Dans les résultats de la recherche, sous Ressources, sélectionnez my-container-app.
  4. Dans la barre de navigation à gauche, développez Application, puis sélectionnez Mettre à l’échelle et réplicas.
  5. Dans la page Mettre à l’échelle et réplicas, sélectionnez Réplicas.
  6. Votre application de conteneur a maintenant plusieurs réplicas en cours d’exécution.

Capture d’écran des réplicas d’une application de conteneur.

Vous devrez peut-être sélectionner Actualiser pour voir les nouvelles réplicas.

  1. Dans la barre de navigation à gauche, développez Supervision, puis sélectionnez Métriques.

  2. Dans la page Métriques, définissez Métrique sur Requêtes.

  3. Sélectionnez Appliquer le fractionnement.

  4. Développez la liste déroulante Valeurs et cochez Réplica.

  5. Sélectionnez l’icône de coche bleue pour terminer la modification du fractionnement.

  6. Le graphique montre les requêtes reçues par votre application de conteneur, divisées par réplica.

    Graphique de métriques de l’application de conteneur, montrant les requêtes fractionnées par réplica.

  7. Par défaut, l’échelle du graphique est définie sur une durée de 24 heures, avec une granularité de temps de 15 minutes. Sélectionnez l’échelle et remplacez-la par les 30 dernières minutes, avec une granularité de temps d’une minute. Sélectionnez le bouton Appliquer.

  8. Sélectionnez sur le graphique et faites glisser pour mettre en évidence l’augmentation récente du nombre de requêtes reçues par votre application de conteneur.

Capture d’écran du graphique de métriques de l’application de conteneur, montrant les requêtes fractionnées par réplica, avec une échelle de 30 minutes et une granularité de temps d’une minute.

La capture d’écran suivante montre une vue zoomée de la façon dont les requêtes reçues par votre application de conteneur sont réparties entre les réplicas.

Graphique de métriques de l’application de conteneur, montrant les requêtes fractionnées par réplica, en vue zoomée.

Nettoyer les ressources

Si vous ne souhaitez pas continuer à utiliser cette application, exécutez la commande suivante pour supprimer le groupe de ressources ainsi que toutes les ressources créées dans ce tutoriel.

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 tutoriel existent dans le groupe de ressources spécifié, elles seront également supprimées.

az group delete --name my-container-apps

Conseil

Vous rencontrez des problèmes ? Faites-le nous savoir sur GitHub en ouvrant un problème dans le dépôt Azure Container Apps.

Étapes suivantes