Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article vous aide à identifier et à résoudre les scénarios d’échec de déploiement qui nécessitent le plus fréquemment une escalade de prise en charge dans Azure Container Apps. Chaque scénario comprend des symptômes, des étapes de diagnostic du portail et de l’interface CLI et des résolutions.
Recherchez votre symptôme dans la table de référence rapide et suivez le lien vers le scénario correspondant.
Informations de référence rapides sur les symptômes
| Symptôme | Scénario |
|---|---|
| Le déploiement échoue avec l’erreur d’approvisionnement, aucune révision n’a été créée | Échecs d’extraction d’images |
Révision créée, mais le statut est Failed ou Degraded |
Plantages de conteneur et échecs au démarrage |
| Secret ou variable d’environnement est vide ou manquant au moment de l’exécution | Problèmes d’accès aux secrets |
| La référence à Key Vault échoue pendant le déploiement ou lors de l’exécution | Échecs des références Key Vault |
| Les appels d’identité managée retournent 401 ou 403 | Mauvaise configuration de l’identité managée |
| Le conteneur Init se bloque ou échoue, l’application ne démarre jamais | Problèmes de minutage d’initialisation |
La révision est provisionnée mais marquée Degraded |
Échecs de sonde d’intégrité |
| L’application est saine, mais les demandes retournent des erreurs ou aucune réponse | Problèmes d’entrée et de routage du trafic |
| Échec de l’authentification du Registre (401 ou NON AUTORISÉ) | Authentification du registre de conteneurs |
Où chercher : surfaces de diagnostic
Utilisez les surfaces de diagnostic suivantes pour examiner les échecs de déploiement.
| Surface | Ce qu’il montre | Procédure accès |
|---|---|---|
| Diagnostiquer et résoudre les problèmes | Détecteurs automatisés pour les problèmes courants, la résolution des problèmes et l’analyse guidée. | Dans le portail Azure, accédez à votre application conteneur, puis sélectionnez Diagnostiquer et résoudre les problèmes. |
| Journaux système | Événements au niveau de la plateforme : état d’extraction d’image, résultats de la sonde, erreurs d’identité, résultats de synchronisation des secrets. |
az containerapp logs show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --type system --tail 50 ou table Log Analytics ContainerAppSystemLogs_CL. |
| Journaux de la console | Application stdout/stderr : traces de pile, messages de démarrage, erreurs d’exécution. |
az containerapp logs show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --tail 100 ou le volet Flux de journaux du portail. |
| Journaux HTTP | Journaux des demandes de couche d’entrée : codes d’état, latence, chemins d’accès, nouvelles tentatives, détails de la réponse. Activez cette option via les paramètres de diagnostic d’Azure Monitor pour l’environnement. | Table ContainerAppHTTPLogs Log Analytics. |
| Propriétés du détail de révision |
provisioningState, , provisioningError, healthStaterunningState, , runningStateDetails. |
az containerapp revision show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --revision <REV> -o json ou volet Révisions du portail. |
| Erreurs au moment du déploiement | Niveau provisioningState de l’application et provisioningError quand aucune révision n’est créée. |
az containerapp show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> -o json |
Échecs de téléchargement d’images
Les échecs d’extraction d’images sont l’une des causes les plus courantes des erreurs de déploiement. Ils se produisent généralement avant qu’Azure Container Apps ne puisse créer une révision utilisable.
Symptoms
- Aucune révision n’a été créée.
-
provisioningStatea la valeurFailed. - Le message d’erreur mentionne
ImagePullBackOff,UNAUTHORIZEDoumanifest unknown.
Où rechercher : diagnostics d’extraction d’images
Dans le portail Azure, accédez à Container App>Revisions (la liste est vide ou affiche une entrée ayant échoué) >Diagnostiquer et résoudre les problèmes, puis recherchez « image ».
# Check app-level provisioning state and error
az containerapp show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> \
--query "{provisioning:properties.provisioningState, error:properties.provisioningError, latestRevision:properties.latestRevisionName}" -o json
# List revisions (expect empty or failed)
az containerapp revision list -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> \
--query "[].{name:name, health:properties.healthState, provisioning:properties.provisioningState}" -o table
Causes et résolutions courantes
| Cause | Signal d’erreur | Résolution |
|---|---|---|
| La balise d’image n’existe pas |
manifest unknown, tag not found |
Vérifiez que la balise exacte existe dans votre registre : az acr repository show-tags --name <AZURE_CONTAINER_REGISTRY_NAME> --repository <REPOSITORY_NAME> |
| Le Registre nécessite l’authentification | UNAUTHORIZED: authentication required |
Configurez les informations d’identification du Registre sur l’application conteneur. Utilisez les informations d’identification d’administrateur ou l’identité managée pour l’extraction ACR. Consultez l’authentification du registre de conteneurs. |
| Nom d’hôte de Registre incorrect |
name unknown, échec de résolution DNS |
Vérifiez que la --image valeur utilise le nom d’hôte correct <REGISTRY>.azurecr.io . |
| Le pare-feu ou le NSG bloque le registre | Délai d’expiration de la connexion | Si vous utilisez un réseau virtuel personnalisé, vérifiez l’accès sortant au Registre. Ajoutez la AzureContainerRegistry balise de service ou les règles de nom de domaine complet. |
Plantage du conteneur et échecs de démarrage
Utilisez cette section lorsqu’une révision est créée, mais que la charge de travail ne parvient pas à démarrer ou à rester en cours d’exécution.
Symptoms
- La révision est créée, mais
healthStateestUnhealthy. -
runningStatea la valeurFailed. - Les journaux de la console peuvent être vides (le conteneur s’arrête avant d’écrire une sortie).
Où rechercher : incidents et diagnostics de démarrage
Dans le portail Azure, accédez à Application conteneur>Révisions, sélectionnez la révision ayant échoué, puis ouvrez l’onglet Événements. Recherchez les événements BackOff ou CrashLoopBackOff.
# Inspect revision detail
az containerapp revision show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --revision <REV> \
--query "{health:properties.healthState, running:properties.runningState, details:properties.runningStateDetails, error:properties.provisioningError}" -o json
# Pull console logs (if any output was written)
az containerapp logs show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --tail 100
# Pull system logs for platform-level events
az containerapp logs show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --type system --tail 50
Causes et résolutions courantes
| Cause | Signal d’erreur | Résolution |
|---|---|---|
| L’application plante au démarrage | Trace de la pile dans les journaux d'activité de la console | Corrigez l’erreur de l’application. Si les journaux sont vides, le blocage se produit avant que stdout ne soit vidé. Ajoutez la journalisation anticipée ou définissez votre runtime pour désactiver la mise en mémoire tampon de sortie (par exemple). PYTHONUNBUFFERED=1 |
| Commande ou point d’entrée non valide |
exec format error, executable file not found |
Vérifiez que les command et args du conteneur correspondent à ce qu’attend l’image. Consultez az containerapp revision show pour properties.template.containers[].command. |
| Variable d’environnement manquante |
KeyError, undefined, référence null |
Vérifiez que toutes les vars env requises sont définies. Consultez les problèmes d’accès aux secrets. |
| Ressources insuffisantes | OOMKilled |
Augmentez les limites de mémoire et d’UC sur le conteneur : az containerapp update -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --cpu 1.0 --memory 2.0Gi. |
Problèmes d’accès aux secrets
Utilisez cette section pour résoudre les valeurs secrètes manquantes ou vides qui interrompent la configuration de l’application au moment de l’exécution.
Symptoms
- Le conteneur démarre mais l’application échoue, car une valeur de configuration attendue est vide ou manquante.
- Les variables d’environnement qui référencent des secrets n’ont aucune valeur.
Où rechercher : diagnostics des références secrètes
Dans le portail Azure, accédez à Application conteneur>Paramètres>Secrets pour vérifier que le secret existe. Accédez ensuite à Application conteneur>Révisions, sélectionnez la révision, puis vérifiez Détails du conteneur>Variables d’environnement pour vérifier que la référence est correcte.
# List secrets defined on the app
az containerapp secret list -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> -o table
# Show the revision template to verify env var references
az containerapp revision show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --revision <REV> \
--query "properties.template.containers[].env" -o json
Causes et résolutions courantes
| Cause | Signal d’erreur | Résolution |
|---|---|---|
| Incompatibilité de nom de secret | La valeur var env est vide | La variable d’environnement secretRef doit correspondre exactement au nom du secret (sensible à la casse). |
| Secret non défini | Erreur de déploiement référençant un secret inconnu | Définissez le secret avant de déployer : az containerapp secret set -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --secrets mysecret=myvalue. |
| Secret mis à jour mais la révision n'a pas redémarrée | L’ancienne valeur persiste | Déployez une nouvelle révision ou redémarrez l’existant : az containerapp revision restart -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --revision <REV>. La mise à jour d’un secret seul ne déclenche pas de nouvelle révision. |
| Secret supprimé alors qu’une révision y fait référence | Le conteneur ne parvient pas à démarrer | Déployez une nouvelle révision qui supprime la référence au secret supprimé, puis désactivez les anciennes révisions. |
Important
Dans Container Apps, les secrets sont définis au niveau de l’application, mais les références de variables d’environnement sont définies au niveau de la révision. La modification d’une valeur secrète ne se propage pas automatiquement aux révisions en cours d’exécution. Vous devez créer une nouvelle révision ou redémarrer celle existante pour que la valeur mise à jour prenne effet.
Échecs des références Key Vault
Utilisez cette section lorsque les secrets adossés à Key Vault ne peuvent pas être résolus lors du déploiement ou lorsque l’application est en cours d’exécution.
Symptoms
- Le déploiement échoue ou la valeur secrète n’est pas disponible.
- Les journaux système font référence à des erreurs d’accès à Key Vault.
-
provisioningErrormentionne un échec d’authentification ou d’autorisation avec Key Vault.
Où chercher : diagnostics d’accès à Key Vault
Dans le portail Azure, accédez à Application conteneur>Paramètres>Secrets (repérez une icône d’avertissement sur la référence Key Vault). Accédez ensuite à Container App>Diagnostic et résolvez les problèmes et recherchez « Key Vault ».
# List secrets and check for Key Vault reference status
az containerapp secret list -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> -o json
# Verify managed identity is assigned
az containerapp identity show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME>
Causes et résolutions courantes
| Cause | Signal d’erreur | Résolution |
|---|---|---|
| Identité gérée non activée | Managed identity not configured |
Activer l’identité managée attribuée par le système ou attribuée par l’utilisateur : az containerapp identity assign -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --system-assigned. |
| Rôle RBAC manquant |
Authorization failed, Access denied |
Accordez le rôle d’utilisateur Key Vault Secrets à l’identité managée sur l’Key Vault : az role assignment create --role "Key Vault Secrets User" --assignee <IDENTITY_PRINCIPAL_ID> --scope <KEYVAULT_RESOURCE_ID>. |
| Key Vault pare-feu bloque l’accès | Délai d’expiration de la connexion, ForbiddenByFirewall |
Ajoutez les adresses IP sortantes de l'environnement Container Apps au pare-feu Key Vault ou configurez un point de terminaison privé. Ajoutez également la balise de service AzureKeyVault et le nom de domaine complet (FQDN) login.microsoft.com si vous utilisez l’UDR avec Pare-feu Azure. |
| Le secret est désactivé dans Key Vault | SecretDisabled |
Activez le secret dans Key Vault : portail Azure > Key Vault > Secrets > sélectionnez le secret > Activer. |
| URI Key Vault mal formé |
SecretNotFound, InvalidUri |
Vérifiez le format d’URI : https://<vault>.vault.azure.net/secrets/<secret-name> ou https://<vault>.vault.azure.net/secrets/<secret-name>/<version>. |
| Délai de propagation des rôles RBAC | Fonctionne après environ 5 minutes | Les modifications RBAC peuvent prendre jusqu’à 10 minutes pour se propager. Le cache des jetons d’identité peut persister jusqu’à 24 heures. Attendez et réessayez ou déployez une nouvelle révision. |
Configuration incorrecte de l’identité managée
Utilisez cette section lorsque l’authentification pour Azure services échoue même si votre application est configurée pour utiliser l’identité managée.
Symptoms
- Le code d’application reçoit 401 (non autorisé) ou 403 (Interdit) lors de l’appel de services Azure.
- Échec de l’acquisition de jetons d’identité gérée.
Où rechercher : diagnostics d’identité et d’autorisation
Dans le portail Azure, accédez à Application conteneur>Paramètres>Identité (vérifiez que l’identité affectée par le système est activée On ou que les identités affectées par l’utilisateur sont répertoriées). Vérifiez ensuite le panneau IAM/Contrôle d’accès de la ressource cible pour connaître les attributions de rôles.
# Verify identity configuration
az containerapp identity show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME>
# Check role assignments for the identity's principal ID
az role assignment list --assignee <PRINCIPAL_ID> --all -o table
Causes et résolutions courantes
| Cause | Signal d’erreur | Résolution |
|---|---|---|
| Aucune identité affectée | Le Kit de développement logiciel (SDK) génère une ManagedIdentityCredential erreur |
Attribuer une identité : az containerapp identity assign -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --system-assigned. |
| Identité incorrecte utilisée (attribuée par le système ou par l’utilisateur) | 403 pour la ressource cible | Si vous utilisez l’identité affectée par l’utilisateur, spécifiez l’ID client dans votre code : DefaultAzureCredential(managed_identity_client_id="<CLIENT_ID>"). |
| Attribution de rôle manquante sur la ressource cible | 403 | Attribuez le rôle requis sur la ressource cible (par exemple, Contributeur aux données Blob de stockage sur un compte de stockage). |
| Le conteneur d’initialisation nécessite une identité, mais n’est pas disponible | Échec du conteneur Init avec l’erreur d’authentification | Dans les environnements de consommation uniquement et à profil de charge de travail dédié, les conteneurs d’initialisation ne peuvent pas utiliser l’identité managée. Déplacez la logique dépendante de l’identité vers le conteneur principal, ou utilisez un environnement de consommation avec profil de charge de travail et définissez lifecycle: Init sur l’identité. |
| Cache de jeton obsolète après la modification du rôle | 403 persiste pendant quelques minutes après le correctif | Le cache des jetons d’identité peut persister jusqu’à 24 heures. Déployez une nouvelle révision pour forcer l’actualisation du jeton. |
Tip
Container Apps expose un point de terminaison REST accessible en interne pour acquérir des jetons d’identité managée. Au lieu d’appeler ce point de terminaison directement, utilisez le Kit de développement logiciel (SDK) Azure Identity (DefaultAzureCredential) pour une expérience cohérente entre les environnements.
Problèmes de synchronisation lors de l’initialisation
Utilisez cette section lorsque les conteneurs init bloquent le démarrage ou échouent avant que le conteneur principal puisse commencer à traiter le trafic.
Symptoms
- L’application n’atteint jamais un état de fonctionnement.
- Les conteneurs Init apparaissent bloqués ou échouent.
- Les journaux système affichent le conteneur init en cours d’exécution, mais jamais terminé.
Où chercher : diagnostics du conteneur d’initialisation
Dans le portail Azure, accédez à Révisions d’application > conteneur, sélectionnez la révision et ouvrez l’onglet Événements. Recherchez les événements de conteneur init.
# Check revision running state
az containerapp revision show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --revision <REV> \
--query "{running:properties.runningState, details:properties.runningStateDetails}" -o json
# Check init container logs
az containerapp logs show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --container <INIT_CONTAINER_NAME> --tail 100
# System logs for platform events
az containerapp logs show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --type system --tail 50
Causes et résolutions courantes
| Cause | Signal d’erreur | Résolution |
|---|---|---|
| Le conteneur Init dépend d’un service qui n’est pas encore disponible | Connexion refusée ou délai d’expiration dans les journaux du conteneur d’initialisation | Ajoutez une logique de nouvelle tentative ou une vérification de préparation dans le conteneur init. Ne supposez pas que les services dépendants sont disponibles au moment de l’init. |
| Le conteneur Init ne se ferme jamais | La révision reste à l’état Provisioning |
Vérifiez que le conteneur init exécute une commande finie et quitte avec le code 0. Les conteneurs d’initialisation qui s’exécutent sans fin empêchent le conteneur principal de démarrer. |
| Le conteneur Init a besoin d’une identité managée | 401 ou 403 à partir du conteneur init | Dans les environnements de consommation uniquement et avec profil de charge de travail dédié, l’identité gérée n’est pas disponible pour les conteneurs d’initialisation. Utilisez un environnement de consommation avec profil de charge de travail, ou déplacez la charge de travail dépendante de l’identité vers le conteneur principal. |
| Le téléchargement de l’image du conteneur d’initialisation échoue | Mêmes symptômes que les échecs de récupération d’image | Appliquez les mêmes vérifications de l’authentification du registre et des balises d’image. |
| Ordre des opérations : secret non encore synchronisé | Le conteneur d’initialisation lit un secret vide | La synchronisation des secrets de Key Vault s’effectue de manière asynchrone. Si le conteneur d’init dépend d’un secret référencé Key Vault, la valeur n’est peut-être pas encore disponible. Utilisez des secrets directs pour les dépendances init-time ou ajoutez une logique de nouvelle tentative. |
Échecs de sonde de santé
Utilisez cette section lorsque les révisions sont déployées avec succès, mais sont marquées comme non saines ou détériorées par les vérifications de sonde.
Symptoms
- La révision est provisionnée, mais l’état d’exécution est
Degraded. - Les journaux système affichent les événements
Unhealthyavec les détails de l’échec de la sonde. - L’application fonctionne localement, mais ne passe pas les vérifications d’état dans ACA.
Où chercher : diagnostics d'intégrité de la sonde
Dans le portail Azure, accédez à Application conteneur>Application>Conteneurs>Sondes d’intégrité (vérifiez la configuration des sondes). Accédez ensuite à Application conteneur>Révisions, sélectionnez la révision et ouvrez Événements.
# Check the revision's probe configuration
az containerapp revision show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --revision <REV> \
--query "properties.template.containers[].probes" -o json
# System logs for probe failure events
az containerapp logs show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --type system --tail 50
Causes et résolutions courantes
| Cause | Signal d’erreur | Résolution |
|---|---|---|
| Le port de sonde ne correspond pas au port d’application | La sonde retourne la connexion refusée | Définissez le port de sonde pour qu’il corresponde au port d’écoute de votre application et à l’entrée targetPort. |
| L’application prend trop de temps pour démarrer | La sonde échoue avant que l’application soit prête, la révision passe à Degraded |
Augmentez la valeur de initialDelaySeconds sur les sondes de liveness et de readiness. Commun avec les applications Java. |
| Le chemin de sonde renvoie un code différent de 200 | La sonde échoue avec une erreur HTTP | Vérifiez que le point de terminaison de vérification d’état renvoie le code 200. Pour les sondes HTTP, vérifiez que le chemin existe et répond correctement. |
| Sonde TCP lorsque l’application se lie uniquement après l’init | La sonde se connecte avant l’écoute de l’application | Utilisez une sonde de démarrage avec une valeur supérieure failureThreshold pour donner au temps de l’application de lier son port. |
Valeurs de sonde par défaut
Lorsque vous activez l’entrée et que vous ne configurez pas les sondes, ACA applique ces valeurs par défaut :
| Propriété | Jeune entreprise | Activité | Préparation |
|---|---|---|---|
| Protocole | TCP | TCP | TCP |
| Port | Port cible d’entrée | Port cible d’entrée | Port cible d’entrée |
| Délai initial | 1s | 1s | 3s |
| Période | 1s | 1s | 5 s |
| Seuil d’échec | 240 | 48 | N/A |
Problèmes d’entrée et de routage du trafic
Utilisez cette section lorsque l’application est en cours d’exécution, mais que les requêtes échouent, car les paramètres de trafic d’entrée ou de révision sont incorrects.
Symptoms
- L’application est en cours d’exécution et intègre, mais les requêtes HTTP retournent des erreurs (404, 502) ou aucune réponse.
- L’application fonctionne via
az containerapp exec, mais pas via l’URL publique.
Où chercher : trafic entrant et diagnostics du trafic
Dans le portail Azure, accédez à Application conteneur>Paramètres>Entrée. Accédez ensuite à Container App>Application>Revisions (vérifiez la répartition du trafic).
# Check ingress configuration and traffic split
az containerapp show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> \
--query "{ingress:properties.configuration.ingress, latestReady:properties.latestReadyRevisionName}" -o json
# Verify the FQDN
az containerapp show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --query "properties.configuration.ingress.fqdn" -o tsv
Causes et résolutions courantes
| Cause | Signal d’erreur | Résolution |
|---|---|---|
| Ingress non activé | Aucun nom de domaine pleinement qualifié attribué, impossible d’accéder à l’application | Activez l’entrée : az containerapp ingress enable -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --type external --target-port 8080 --transport auto. |
| Incompatibilité de port cible | 502 Mauvaise passerelle | Définissez targetPort pour qu’il corresponde au port sur lequel votre application écoute. |
| Le poids du trafic est de 0% lors de la dernière révision | L’ancienne révision sert le trafic | Mettre à jour le fractionnement du trafic : az containerapp ingress traffic set -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --revision-weight latest=100. |
| La restriction IP bloque le client | 403 | Vérifiez les restrictions de sécurité IP dans les paramètres d’entrée. |
| Transport incorrect (HTTP et TCP) | Erreurs de connexion | Vérifiez que le type d’entrée correspond au protocole de votre application. |
Authentification du registre de conteneurs
Utilisez cette section lorsque les extractions d’images échouent, car l’application ne peut pas s’authentifier auprès de votre registre de conteneurs.
Symptoms
- Le déploiement échoue avec
UNAUTHORIZED: authentication required. - Cette erreur masque souvent d’autres problèmes (comme une balise d’image incorrecte) car le Registre rejette la demande avant de pouvoir vérifier la balise.
Où rechercher : diagnostics d’authentification du Registre
Dans le portail Azure, accédez à Application conteneur>Paramètres>Conteneur (vérifiez les paramètres du registre). Accédez ensuite à Container App>Diagnostiquer et résoudre les problèmes et recherchez « registre ».
# Check configured registries
az containerapp show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> \
--query "properties.configuration.registries" -o json
# Verify ACR credentials work
az acr login --name <AZURE_CONTAINER_REGISTRY_NAME>
docker pull <AZURE_CONTAINER_REGISTRY_NAME>.azurecr.io/<REPOSITORY_NAME>:<TAG>
Causes et résolutions courantes
| Cause | Signal d’erreur | Résolution |
|---|---|---|
| Aucune information d’identification du registre n’est configurée | UNAUTHORIZED |
Ajouter des identifiants de registre : az containerapp registry set -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --server <AZURE_CONTAINER_REGISTRY_NAME>.azurecr.io --identity system. |
| Informations d’identification d’administrateur désactivées sur ACR |
UNAUTHORIZED avec le compte administrateur |
Activer l’utilisateur administrateur : az acr update -n <AZURE_CONTAINER_REGISTRY_NAME> --admin-enabled true.
Préféré : utilisez plutôt l’identité managée pour l’extraction ACR. |
| L’identité managée n’a pas de rôle AcrPull | UNAUTHORIZED |
Attribuez le rôle AcrPull : az role assignment create --role AcrPull --assignee <PRINCIPAL_ID> --scope <ACR_RESOURCE_ID>. |
| Nom d’hôte du serveur incorrect | name unknown |
Vérifiez que le serveur de Registre correspond à votre ACR : <your-acr>.azurecr.io. |
Résumé du flux de travail de diagnostic
Utilisez cette séquence lorsque vous ne savez pas ce qui a échoué :
Exécutez
az containerapp show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> -o json. VérifiezprovisioningState,provisioningErroretlatestRevisionName.Exécutez
az containerapp revision list -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> -o table. Si la liste est vide, l’échec est un problème de validation d’image ou de validation de modèle (échecs d’extraction d’images et authentification de Registre de conteneurs). Si une révision existe, passez à l’étape 3.Exécutez
az containerapp revision show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --revision <REV> -o json. VérifierhealthState,runningState,runningStateDetails, etprovisioningError.Exécutez
az containerapp logs show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --type system --tail 50pour afficher les événements au niveau de la plateforme, tels que les échecs de sonde, les erreurs d’identité et les problèmes de synchronisation des secrets.Exécutez
az containerapp logs show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --tail 100pour afficher l’application stdout/stderr, notamment les traces de pile, les erreurs de configuration et les échecs de connexion.Exécutez
az containerapp identity show -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME>pour vérifier la configuration de l’identité si des erreurs liées à l’authentification sont apparues dans les étapes précédentes.
Utilisez « Diagnostiquer et résoudre les problèmes » dans le portail
Le portail Container Apps inclut un panneau Diagnostiquer et résoudre les problèmes avec des diagnostics automatisés :
- Accédez à votre application conteneur dans le portail Azure.
- Sélectionnez Diagnostiquer et résoudre les problèmes dans le volet de navigation gauche.
- Utilisez la zone de recherche pour trouver des diagnostics précis (par exemple, « téléchargement d’image », « sonde de vérification d’état » ou « entrée »).
- Sélectionnez une vignette de catégorie de résolution des problèmes pour l’analyse guidée.
Ce volet est le point de départ recommandé pour les diagnostics guidés. Il peut ne pas couvrir tous les scénarios de cet article, mais il fournit des vérifications automatisées des problèmes courants.
Requêtes Log Analytics pour une analyse plus approfondie
Si la sortie de la CLI et les diagnostics du portail ne suffisent pas, interrogez directement les journaux sous-jacents dans Log Analytics. Les deux requêtes suivantes couvrent les points de départ les plus courants pour les échecs au niveau de la plateforme et les erreurs HTTP de niveau entrée.
Rechercher des échecs au niveau du système
ContainerAppSystemLogs_CL
| where RevisionName_s == "<REV>"
| where Log_s contains "BackOff" or Log_s contains "Failed" or Log_s contains "Error"
or Reason_s == "Unhealthy"
| project TimeGenerated, Reason_s, Log_s
| order by TimeGenerated desc
| take 50
Cette requête affiche des erreurs d’extraction d’images, des échecs de sonde, des erreurs d’approvisionnement et d’autres événements de plateforme.
Rechercher des erreurs HTTP (nécessite que les journaux HTTP soient activés)
La couche d’entrée génère des journaux HTTP, et vous choisissez de les activer. Activez ces journaux via les paramètres de diagnostic d’Azure Monitor sur l’environnement managé Container Apps. Une fois que vous les avez activés, la ContainerAppHTTPLogs table apparaît dans Log Analytics. L’affichage du tableau peut prendre plusieurs minutes.
ContainerAppHTTPLogs
| where TimeGenerated > ago(1h)
| where StatusCode >= 400
| project TimeGenerated, ContainerAppName, RevisionName, Method, Path,
StatusCode, ResponseCodeDetails, RequestDuration, RequestId
| order by TimeGenerated desc
| take 100
Cette requête filtre les journaux HTTP de la couche d’entrée pour afficher uniquement les demandes ayant échoué (code d’état 400 ou supérieur) à partir de la dernière heure. Il retourne l’horodatage, l’application et le nom de révision, la méthode HTTP et le chemin, le code d’état d’erreur, un ResponseCodeDetails champ qui indique si l’erreur provient de votre conteneur (via_upstream) ou de la plateforme (, route_not_found),connection_timeout la durée de la requête et un ID de requête unique que vous pouvez utiliser pour mettre en corrélation les journaux d’application.
Pour en savoir plus, notamment sur l’analyse des requêtes lentes, le taux d’erreur par révision, le traçage d’une requête unique et les principaux points de terminaison en échec, consultez Surveiller les journaux dans Azure Container Apps avec Log Analytics.