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.
Ce tutoriel prépare un cluster Kubernetes pris en charge pour exécuter Azure Container Apps. Il crée un cluster Kubernetes compatible Azure Arc, installe l’extension Container Apps, crée un emplacement personnalisé et crée un environnement connecté Container Apps.
Compléter ce tutoriel modifie à la fois votre abonnement Azure et votre cluster Kubernetes. Vous avez besoin des permissions Azure pour créer les ressources listées et un accès administrateur cluster au cluster Kubernetes.
Ce tutoriel montre comment activer Azure Container Apps sur un cluster Kubernetes compatible Azure Arc. Dans ce tutoriel, vous allez :
- Connectez un cluster Kubernetes à Azure Arc, s'il n'est pas déjà connecté.
- Éventuellement, créez un espace de travail Log Analytics.
- Installez et validez l’extension Conteneur Applications.
- Créez et validez un emplacement personnalisé.
- Créer et valider un environnement connecté aux applications conteneur.
Avant de commencer, consultez Azure Container Apps sur Azure Arc. Si une ressource ou un composant en cluster n'est pas prêt, consultez Troubleshoot Azure Container Apps on Azure Arc-enabled Kubernetes.
Prérequis
Avant de commencer, vérifiez les exigences suivantes :
- Compte Azure avec un abonnement actif. Si vous n’en avez pas, créez-en un gratuitement.
- Permission d’enregistrer des fournisseurs de ressources et de créer des groupes de ressources, une ressource Kubernetes compatible Azure Arc, une extension de cluster, un emplacement personnalisé, un environnement connecté Container Apps, et éventuellement un espace de travail Log Analytics.
- L’Azure CLI et ses prérequis.
- Une
kubectlversion compatible avec votre cluster Kubernetes et l’accès réseau depuis votre poste de travail au serveur API Kubernetes. - Un cluster Kubernetes pris en charge avec des nœuds de travail Linux
amd64et un accès d’administrateur du cluster via le contextekubectlactif. - Une implémentation fonctionnelle du service Kubernetes
LoadBalancer. - Connectivité sortante vers les points de terminaison requis par Azure Arc et Container Apps.
- Un CPU et une mémoire suffisants allouables pour les charges de travail d’extension et d’application.
Avant de changer un cluster de production, consultez le déploiement de Plan a Container Apps sur Kubernetes compatible Azure Arc.
Programme d’installation
Installez les extensions Azure CLI suivantes.
az extension add --name connectedk8s --upgrade --yes
az extension add --name k8s-extension --upgrade --yes
az extension add --name customlocation --upgrade --yes
az extension add --name containerapp --upgrade --yes
Inscrivez les espaces de noms requis.
az provider register --namespace Microsoft.ExtendedLocation --wait
az provider register --namespace Microsoft.KubernetesConfiguration --wait
az provider register --namespace Microsoft.App --wait
az provider register --namespace Microsoft.Web --wait
az provider register --namespace Microsoft.OperationalInsights --wait
Définissez des variables d’environnement en fonction de votre déploiement de cluster Kubernetes.
GROUP_NAME="my-arc-cluster-group"
AKS_CLUSTER_GROUP_NAME="my-aks-cluster-group"
AKS_NAME="my-aks-cluster"
LOCATION="eastus"
Créer un cluster connecté
Si vous avez déjà un cluster Kubernetes compatible Azure Arc dans $GROUP_NAME, ne créez pas d'autre cluster. Définissez CLUSTER_NAME le nom de ressource existante du cluster connecté, vérifiez l’accès avec kubectl get nodes, et continuez à créer un espace de travail Log Analytics.
Les étapes suivantes créent un cluster AKS et le connectent à Azure Arc. Ce chemin est uniquement destiné à être un environnement d’évaluation hébergé sur Azure pour le tutoriel. Pour un cluster local ou multicloud existant, suivez Quickstart : Connectez un cluster Kubernetes existant à Azure Arc, puis revenez à ce tutoriel.
Créez un cluster dans le service Azure Kubernetes.
az group create --name $AKS_CLUSTER_GROUP_NAME --location $LOCATION az aks create \ --resource-group $AKS_CLUSTER_GROUP_NAME \ --name $AKS_NAME \ --enable-aad \ --generate-ssh-keysRécupérez le fichier kubeconfig et testez votre connexion au cluster. Par défaut, le fichier kubeconfig est enregistré dans
~/.kube/config.az aks get-credentials --resource-group $AKS_CLUSTER_GROUP_NAME --name $AKS_NAME --admin kubectl get nsCréez un groupe de ressources pour accueillir vos ressources Azure Arc.
az group create --name $GROUP_NAME --location $LOCATIONConnectez le cluster que vous avez créé à Azure Arc.
CLUSTER_NAME="${GROUP_NAME}-cluster" # Name of the connected cluster resource az connectedk8s connect --resource-group $GROUP_NAME --name $CLUSTER_NAMEAttendez que le cluster connecté termine de provisionner.
CONNECTED_CLUSTER_ID=$(az connectedk8s show \ --resource-group $GROUP_NAME \ --name $CLUSTER_NAME \ --query id \ --output tsv) az resource wait --ids $CONNECTED_CLUSTER_ID --created --timeout 600 az connectedk8s show \ --resource-group $GROUP_NAME \ --name $CLUSTER_NAME \ --query "{State:provisioningState,Connectivity:connectivityStatus}" \ --output tableContinue seulement lorsque
StateestSucceededetConnectivityestConnected. Si la commande expire, consultez Le cluster connecté n’est pas prêt.
Créer un espace de travail Log Analytics
Un espace de travail Log Analytics donne accès aux journaux d’application pour les applications conteneurs fonctionnant dans le cluster Kubernetes compatible Azure Arc. Un espace de travail Log Analytics est optionnel mais recommandé pour le diagnostic applicatif.
Important
Décidez si vous souhaitez utiliser Log Analytics avant d’installer l’extension Container Apps. Fournissez la configuration Log Analytics lors de l’installation de l’extension. Vous ne pouvez pas ajouter la configuration de Log Analytics à cette instance d'extension plus tard.
Créez un espace de travail Log Analytics.
WORKSPACE_NAME="$GROUP_NAME-workspace" # Name of the Log Analytics workspace az monitor log-analytics workspace create \ --resource-group $GROUP_NAME \ --workspace-name $WORKSPACE_NAMEExécutez les commandes suivantes pour obtenir l’ID d’espace de travail encodé et la clé partagée pour un espace de travail Log Analytics existant. Vous aurez besoin de ces informations à l’étape suivante.
Caution
La clé partagée de l’espace de travail est une attestation. Ne l’imprimez pas, ne le mettez pas en contrôle de version, ne le stockez pas dans l’historique du shell, ni ne l’incluez dans les packs de support. Les commandes suivantes le gardent dans une variable shell et le transmettent à Azure comme paramètre d’extension protégée.
LOG_ANALYTICS_WORKSPACE_ID=$(az monitor log-analytics workspace show \ --resource-group $GROUP_NAME \ --workspace-name $WORKSPACE_NAME \ --query customerId \ --output tsv) LOG_ANALYTICS_WORKSPACE_ID_ENC=$(printf %s $LOG_ANALYTICS_WORKSPACE_ID | base64 -w0) # Needed for the next step LOG_ANALYTICS_KEY=$(az monitor log-analytics workspace get-shared-keys \ --resource-group $GROUP_NAME \ --workspace-name $WORKSPACE_NAME \ --query primarySharedKey \ --output tsv) LOG_ANALYTICS_KEY_ENC=$(printf %s $LOG_ANALYTICS_KEY | base64 -w0) # Needed for the next step
Vérifiez s’il existe une installation de KEDA existante
L’extension Container Apps installe KEDA. Avant d’installer l’extension, vérifiez le cluster pour des composants KEDA existants :
kubectl get deployments -A -o custom-columns="NAMESPACE:.metadata.namespace,NAME:.metadata.name"
kubectl get crd scaledobjects.keda.sh
Inspectez la liste de déploiement des composants KEDA. Si l’une des commandes identifie une installation KEDA existante, 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.
Installez l’extension Container Apps
Important
Si vous déployez sur AKS via Azure Local, assurez-vous de configurer HAProxy ou un équilibreur de charge personnalisé avant d'essayer d'installer l'extension. Vous pouvez aussi configurer az containerapp arc setup-core-dns --distro AksAzureLocal CoreDNS pour les contextes locaux.
Définissez les noms de l’extension Container Apps, de son espace de noms Kubernetes et de l’environnement connecté.
-
EXTENSION_NAMEidentifie la ressource d’extension de cluster Azure. -
NAMESPACEest créé dans le cluster Kubernetes et contient des composants d’extension ainsi que des ressources gérées par les applications conteneures. LeappsNamespaceparamètre doit correspondre exactement à l’espace de noms de la version de l’extension. -
CONNECTED_ENVIRONMENT_NAMEdevient partie intégrante du domaine d’application par défaut. Utilisez un nom compatible DNS, unique au sein du groupe de ressources.
N’installez pas de charges de travail non liées dans l’espace de noms des extensions.
EXTENSION_NAME="appenv-ext" NAMESPACE="appplat-ns" CONNECTED_ENVIRONMENT_NAME="<connected-environment-name>"-
Installez l’extension Container Apps sur votre cluster connecté Azure Arc, avec Log Analytics activé. Log Analytics ne peut pas être ajouté à l’extension ultérieurement.
az k8s-extension create \ --resource-group $GROUP_NAME \ --name $EXTENSION_NAME \ --cluster-type connectedClusters \ --cluster-name $CLUSTER_NAME \ --extension-type 'Microsoft.App.Environment' \ --release-train stable \ --auto-upgrade-minor-version true \ --scope cluster \ --release-namespace $NAMESPACE \ --configuration-settings "Microsoft.CustomLocation.ServiceAccount=default" \ --configuration-settings "appsNamespace=${NAMESPACE}" \ --configuration-settings "clusterName=${CONNECTED_ENVIRONMENT_NAME}" \ --configuration-settings "logProcessor.appLogs.destination=log-analytics" \ --config-protected-settings "logProcessor.appLogs.logAnalyticsConfig.customerId=${LOG_ANALYTICS_WORKSPACE_ID_ENC}" \ --config-protected-settings "logProcessor.appLogs.logAnalyticsConfig.sharedKey=${LOG_ANALYTICS_KEY_ENC}"Remarque
Pour installer l’extension sans intégration Log Analytics, supprimez les trois paramètres liés à la journalisation de la commande.
Pour un cluster utilisant un équilibreur de charge personnalisé, définissez
loadBalancerIpune adresse réservée à l’entrée des applications conteneurs :--configuration-settings "loadBalancerIp=<LOAD_BALANCER_INGRESS_IP>"L’adresse doit être accessible par les clients d’application et ne doit pas être attribuée à un autre service. Après l’installation, utilisez
kubectl get service -n $NAMESPACE -o widepour vérifier que le service d’entrée d’extension rapporte cette adresse. Configurez le DNS joker uniquement après l’attribution de l’adresse. Voir les exigences DNS.Le tableau suivant décrit les différents paramètres
--configuration-settingsinclus lors de l’exécution de la commande :Paramètre Descriptif Microsoft.CustomLocation.ServiceAccountCompte de service créé pour l’emplacement personnalisé. Définissez la valeur sur default.appsNamespaceEspace de noms utilisé pour créer les définitions et révisions d’application. Il doit correspondre à l’espace de noms de la version de l’extension. clusterNameNom de l’environnement Kubernetes de l’extension Container Apps créé par rapport à cette extension. logProcessor.appLogs.destinationfacultatif. Destination des journaux d’application. Accepte log-analyticsounone. Le choix d’aucun désactive les journaux de plateforme.logProcessor.appLogs.logAnalyticsConfig.customerIdObligatoire uniquement quand logProcessor.appLogs.destinationa la valeurlog-analytics. L’ID de l’espace de travail Log Analytics codé en base64. Ce paramètre doit être configuré en tant que paramètre protégé.logProcessor.appLogs.logAnalyticsConfig.sharedKeyObligatoire uniquement quand logProcessor.appLogs.destinationa la valeurlog-analytics. La clé partagée de l’espace de travail Log Analytics codée en base64. Ce paramètre doit être configuré en tant que paramètre protégé.loadBalancerIpAdresse IP d’entrée de l’équilibreur de charge. Enregistrez la propriété
idde l’extension Container Apps pour plus tard.EXTENSION_ID=$(az k8s-extension show \ --cluster-type connectedClusters \ --cluster-name $CLUSTER_NAME \ --resource-group $GROUP_NAME \ --name $EXTENSION_NAME \ --query id \ --output tsv)Attendez que l’extension soit complètement installée avant de continuer.
az resource wait --ids $EXTENSION_ID --created --timeout 1200 az k8s-extension show \ --cluster-type connectedClusters \ --cluster-name $CLUSTER_NAME \ --resource-group $GROUP_NAME \ --name $EXTENSION_NAME \ --query "{State:provisioningState,Version:currentVersion}" \ --output tableContinuer seulement lorsque
StateestSucceeded. Si la commande expire ou signale une défaillance, voir Échecs ou expiration de l’installation de l’extension.Examinez les charges de travail de l’extension, les services et les événements récents :
kubectl get pods -n $NAMESPACE kubectl get services -n $NAMESPACE -o wide kubectl get events -n $NAMESPACE --sort-by=.lastTimestampNe créez pas l’emplacement personnalisé alors qu’un pod d’extension est en attente, redémarre à plusieurs reprises ou n’est pas prêt de façon inattendue. Pour en savoir plus sur ces pods et leur rôle dans le système, consultez Vue d’ensemble d’Azure Arc.
Si vous configurez Log Analytics, effacez les variables locales qui contiennent la clé de l’espace de travail.
unset LOG_ANALYTICS_KEY LOG_ANALYTICS_KEY_ENC
Créer un emplacement personnalisé
L’emplacement personnalisé est un emplacement Azure que vous attribuez à l’environnement connecté Azure Container Apps.
Définissez les variables d’environnement suivantes pour le nom souhaité de l’emplacement personnalisé et pour l’ID du cluster connecté Azure Arc.
CUSTOM_LOCATION_NAME="my-custom-location" # Name of the custom location CONNECTED_CLUSTER_ID=$(az connectedk8s show --resource-group $GROUP_NAME --name $CLUSTER_NAME --query id --output tsv)Créez l’emplacement personnalisé :
az customlocation create \ --resource-group $GROUP_NAME \ --name $CUSTOM_LOCATION_NAME \ --host-resource-id $CONNECTED_CLUSTER_ID \ --namespace $NAMESPACE \ --cluster-extension-ids $EXTENSION_IDRemarque
Si vous avez du mal à créer un emplacement personnalisé dans votre cluster, il se peut que vous ayez besoin d’activer la fonction de localisation personnalisée sur votre cluster. Activez cette fonctionnalité lorsque vous vous connectez à la CLI en utilisant un principal de service ou un utilisateur Microsoft Entra avec des permissions restreintes sur la ressource du cluster.
Attends que le site personnalisé termine le provisionnement et enregistre son identifiant de ressource.
CUSTOM_LOCATION_ID=$(az customlocation show \ --resource-group $GROUP_NAME \ --name $CUSTOM_LOCATION_NAME \ --query id \ --output tsv) az resource wait --ids $CUSTOM_LOCATION_ID --created --timeout 600 az customlocation show \ --resource-group $GROUP_NAME \ --name $CUSTOM_LOCATION_NAME \ --query "{State:provisioningState,Host:hostResourceId,Namespace:namespace}" \ --output tableVérifiez que
StateestSucceeded, queHostidentifie le cluster connecté souhaité et queNamespacecorrespond à$NAMESPACE. Si le provisionnement échoue, consultez La création d’un emplacement personnalisé échoue.
Créez l’environnement connecté Azure Container Apps
Avant de commencer à créer des applications à l’emplacement personnalisé, vous avez besoin d’un environnement connecté à Azure Container Apps.
Créez l’environnement connecté Container Apps :
az containerapp connected-env create \ --resource-group $GROUP_NAME \ --name $CONNECTED_ENVIRONMENT_NAME \ --custom-location $CUSTOM_LOCATION_ID \ --location $LOCATIONAttends que l’environnement connecté termine de provisionner.
CONNECTED_ENVIRONMENT_ID=$(az containerapp connected-env show \ --resource-group $GROUP_NAME \ --name $CONNECTED_ENVIRONMENT_NAME \ --query id \ --output tsv) az resource wait --ids $CONNECTED_ENVIRONMENT_ID --created --timeout 900 az containerapp connected-env show \ --resource-group $GROUP_NAME \ --name $CONNECTED_ENVIRONMENT_NAME \ --query "{State:properties.provisioningState,Location:location,CustomLocation:extendedLocation.name,Domain:properties.defaultDomain}" \ --output yamlContinuez seulement lorsque
StateestSucceededetCustomLocationcorrespond à l’emplacement personnalisé que vous avez créé dans ce tutoriel. Sauvegardez l’affichageDomainpour la configuration DNS de l’application. Si le provisionnement échoue, voir La création de l’environnement connecté échoue.