Azure Container Apps sur Azure Arc

Azure Container Apps sur Kubernetes compatible Azure Arc vous permet d’exécuter des charges de travail Container Apps sur une infrastructure Kubernetes prise en charge en dehors des centres de données Azure, y compris AKS sur Azure Local. Vous gérez les applications comme des ressources Azure pendant que les conteneurs applicatifs et le plan de données Conteneurs Apps s’exécutent sur votre cluster Kubernetes.

Faire tourner des applications conteneurs sur Azure Arc peut vous aider à :

  • Exécutez des applications proches des utilisateurs, des appareils ou des sources de données sur site pour réduire la latence.
  • Conservez le traitement des demandes dans un lieu qui soutient les exigences de résidence des données, de souveraineté ou de conformité de votre organisation.
  • Offrir aux équipes applications un modèle d’application Conteneur tandis que les équipes d’infrastructure conservent le contrôle du cluster Kubernetes, du réseau, du stockage, de la capacité et du cycle de vie.
  • Gérez les applications à travers les emplacements supportés via Azure Resource Manager, Azure CLI et le portail Azure.
  • Utilisez les fonctionnalités prises en charge de Container Apps, telles que les révisions, l’ingress, la mise à l’échelle automatique, Dapr, les tâches, les métriques, le streaming des journaux, les domaines personnalisés et l’accès à la console de l’application.

Container Apps sur Azure Arc n'est pas un service de calcul hébergé. Votre organisation fournit, sécurise, met en valeur, corrige et exploite le cluster Kubernetes sous-jacent ainsi que ses ressources de calcul, de réseau et de stockage.

Pour préparer un cluster et déployer votre première application, terminez Configurez un cluster Kubernetes compatible Azure Arc pour exécuter Azure Container Apps, puis terminez Créer une application conteneur sur Azure Arc.

En configurant votre cluster, vous créez ou utilisez ces ressources :

  • Cluster connecté : La représentation Azure Resource Manager de votre cluster Kubernetes. Les agents Azure Arc exécutant le cluster maintiennent la connexion à Azure. Pour plus d’informations, consultez Qu’est-ce que Kubernetes avec Azure Arc ?.

  • Extension du cluster Conteneurs Apps : Logiciel installé dans le cluster qui fournit les contrôleurs Conteneur Apps, l’entrée, la mise à l’échelle, le Dapr, la journalisation et d’autres composants du plan de données. L’extension est une ressource enfant du cluster connecté.

  • Localisation personnalisée : Une ressource de localisation Azure qui associe le cluster connecté, l’extension Conteneurs Applications, et l’espace de noms Kubernetes où les ressources Conteneurs Applications sont créées.

  • Environnement connecté aux applications conteneures : La frontière des applications dans lesquelles les développeurs déploient les applications conteneurs et les tâches. L’environnement connecté fait référence à la localisation personnalisée et contient la configuration partagée par ses applications.

L’ordre des dépendances est : cluster connecté > extension de cluster > emplacement personnalisé > environnement connecté > application conteneur ou tâche. Si une ressource antérieure est malsaine, les ressources plus avancées dans la chaîne peuvent ne pas être provisionnées.

Limites

Les limitations suivantes s’appliquent à Azure Container Apps sur Kubernetes compatible Azure Arc.

Limite Détails
Régions Azure prises en charge Australie Est, Asie de l’Est, Est des États-Unis, Nord-Centre des États-Unis, Asie du Sud-Est, Suède centrale, Royaume-Uni Sud, Europe de l’Ouest, Ouest des États-Unis
Exigence de mise en réseau du cluster Doit prendre en charge le type de service LoadBalancer
Exigence concernant le système d’exploitation des nœuds Linux uniquement.
Fonctionnalité : identités managées Non disponible
Fonctionnalité : extraire des images d’ACR avec une identité managée Non disponible (dépend d’identités managées)
Fonctionnalité : Azure Files Le pilote SMB (>= v1.18.0) doit être installé avant d’utiliser le stockage SMB d’Azure Files
Journaux d’activité Log Analytics doit être configuré avec l’extension de cluster, pas par application

Les fonctionnalités suivantes sont prises en charge :

  • Étiquettes
  • Métriques
  • Authentification simple
  • Flux de journal
  • Résilience
  • Domaines personnalisés
  • Travaux Container Apps
  • Gestion des révisions
  • Console de conteneur d’application

Important

Avant d’installer l’extension sur AKS sur Azure Local, configurez HAProxy ou un autre équilibreur de charge supporté et configurez un CoreDNS personnalisé. Pour configurer CoreDNS pour AKS sur Azure Local, exécutez az containerapp arc setup-core-dns --distro AksAzureLocal. Pour les options de commande, voir az containerapp arc.

Ressources créées par l’extension Container Apps

Lorsque l’extension Container Apps est installée sur le cluster Kubernetes avec Azure Arc, plusieurs ressources sont créées dans l’espace de noms de mise en production spécifié. Ces ressources permettent à votre cluster d’être une extension du fournisseur de ressources Microsoft.App pour prendre en charge la gestion et l’exploitation de vos applications.

L’extension peut installer les composants KEDA utilisés pour l’échelle pilotée par événements et HTTP. Une seule installation KEDA prise en charge peut fonctionner dans le cluster. Avant l’installation, exécutez kubectl get deployment -A | grep -i keda afin de vérifier si une installation existe déjà. Si KEDA existe déjà, arrêtez et confirmez la configuration de coexistence prise en charge avant de continuer. Ne supprimez pas l’installation KEDA existante ni n’appliquez les paramètres d’extension non documentés car d’autres charges de travail pourraient en dépendre.

Le tableau suivant décrit le rôle de chaque composant d’extension créé pour vous :

Pod Descriptif Nombre d’instances UC Mémoire Type
<extensionName>-k8se-activator Utilisé dans le cadre du pipeline de mise à l’échelle 2 100 milliCPU 500 Mo Ensemble de répliques
<extensionName>-k8se-billing Génération d’enregistrements de facturation 3 100 milliCPU 100 Mo Ensemble de répliques
<extensionName>-k8se-containerapp-controller Pod opérateur principal qui crée des ressources sur le cluster et gère l’état des composants. 2 100 milliCPU 1 Go Ensemble de répliques
<extensionName>-k8se-envoy Couche proxy frontale pour toutes les demandes http de plan de données. Elle achemine le trafic entrant vers les applications correctes. 3 1 cœur 1 536 Mo Ensemble de répliques
<extensionName>-k8se-envoy-controller Opérateur, qui génère la configuration Envoy 2 200 millicpu 500 Mo Ensemble de répliques
<extensionName>-k8se-event-processor Autre destination de routage pour aider les applications qui ont été mises à l’échelle zéro alors que le système reçoit la première instance disponible. 2 100 milliCPU 500 Mo Ensemble de répliques
<extensionName>-k8se-http-scaler Surveille le volume de demandes entrantes pour fournir des informations de mise à l’échelle à KEDA. 1 100 milliCPU 500 Mo Ensemble de répliques
<extensionName>-k8se-keda-cosmosdb-scaler Outil de mise à l’échelle KEDA Cosmos DB 1 10 m 128 Mo Ensemble de répliques
<extensionName>-k8se-keda-metrics-apiserver Serveur de métriques KEDA 1 1 cœur 1 000 Mo Ensemble de répliques
<extensionName>-k8se-keda-operator Met à l’échelle les charges de travail entre 0/1 et N instances 1 100 milliCPU 500 Mo Ensemble de répliques
<extensionName>-k8se-log-processor Recueille les journaux d’applications et d’autres composants, puis les envoie à Log Analytics. 2 200 millicpu 500 Mo DaemonSet
<extensionName>-k8se-mdm Agent de journaux et de métriques 2 500 millicpu 500 Mo Ensemble de répliques
dapr-metrics Pod de métriques Dapr 1 100 milliCPU 500 Mo Ensemble de répliques
dapr-operator Gère les mises à jour des composants et les points de terminaison de service pour Dapr 1 100 milliCPU 500 Mo Ensemble de répliques
dapr-placement-server Utilisé uniquement pour les Acteurs – Crée des tables de mappage qui mappent les instances d’acteurs à des pods 1 100 milliCPU 500 Mo StatefulSet
dapr-sentry Gère mTLS entre les services et agit en tant qu’autorité de certification 2 800 mCPU 200 Mo Ensemble de répliques

FAQ sur Azure Container Apps sur Azure Arc

Quelles fonctionnalités Container Apps sont prises en charge ?

Pour le statut de support documenté et les prérequis de chaque fonctionnalité, voir Limitations. Le portail Azure désactive également des contrôles qui ne sont pas disponibles dans un environnement connecté. Le support peut dépendre de la version installée de l’extension, donc vérifiez les notes de version avant d’utiliser une fonctionnalité récemment ajoutée.

Les identités managées sont-elles prises en charge ?

Non. Vous ne pouvez pas attribuer une identité gérée à une application conteneur ou à un poste dans un environnement connecté. L’authentification par identité managée pour l’extraction d’images à partir d’Azure Container Registry n’est pas non plus disponible.

Si une application doit s’authentifier à une ressource Azure, utilisez un application et un principal de service Microsoft Entra :

  1. Créez ou identifiez un enregistrement d’application.
  2. Accordez à son principal de service uniquement le rôle Azure requis par l’application.
  3. Stockez l’identifiant comme un secret Container Apps.
  4. Faites référence au secret via des variables d’environnement dans l’application.
  5. Établissez un processus de rotation des titres.

Pour plus d’informations, consultez les objets d’application et les objets principaux de service dans Microsoft Entra ID. Évitez d’intégrer des identifiants dans un dépôt d’images ou de sources.

Existe-t-il des limites de mise à l’échelle ?

Les applications conteneurs et les tâches ne peuvent évoluer qu’au sein du processeur, de la mémoire et des ressources spécialisées allouables disponibles dans le cluster Kubernetes sous-jacent. Fixer un nombre maximal de répliques ne réserve pas de capacité.

Lorsque le cluster manque de capacité, Kubernetes laisse de nouvelles répliques en attente et l’application n’atteint pas le nombre de répliques demandé. Vérifiez cette condition avec :

kubectl get pods -n <APPS_NAMESPACE>
kubectl describe pod <PENDING_POD_NAME> -n <APPS_NAMESPACE>
kubectl get events -n <APPS_NAMESPACE> --sort-by=.lastTimestamp

Planifiez la capacité du cluster pour les composants d’extension, les répliques d’applications de pointe, les charges de travail système Kubernetes, les mises à jour progressives et les défaillances des nœuds.

Quels journaux sont collectés ?

Les journaux des composants système et de vos applications sont écrits dans une sortie standard.

Il est possible de collecter les deux types de journaux à des fins d’analyse à l’aide d’outils Kubernetes standard. Vous pouvez également configurer l’extension de cluster d’environnement d’application avec un espace de travail Log Analytics afin d’envoyer tous les journaux à cet espace de travail.

Par défaut, les journaux des composants système sont envoyés à l’équipe Azure. Les journaux des applications ne sont pas envoyés. Vous pouvez empêcher le transfert de ces journaux en définissant logProcessor.enabled=false comme paramètre de configuration d’extension. Ce paramètre de configuration désactive le transfert de l’application vers votre espace de travail Log Analytics. La désactivation du processeur de journal peut affecter le temps nécessaire pour les cas de support, et vous serez invité à collecter les journaux de la sortie standard via d’autres moyens.

Comment puis-je installer SMB Driver ?

Vous pouvez installer le pilote SMB à l’aide de la commande Helm suivante. Pour obtenir des méthodes d’installation supplémentaires, consultez Installer le pilote sur un cluster Kubernetes.

helm repo add csi-driver-smb https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/charts
helm install csi-driver-smb csi-driver-smb/csi-driver-smb --namespace kube-system --version v1.18.0

L’extension peut-elle être installée sur des nœuds Windows ?

Non, l’extension ne peut pas être installée sur des nœuds Windows. L’extension prend en charge l’installation sur les nœuds Linuxuniquement.

Puis-je déployer l’extension Container Apps sur un cluster basé sur Arm64 ?

Non. L’extension ne prend pas en charge les clusters basés sur Arm64.