Créer et gérer des emplacements personnalisés sur Kubernetes avec Azure Arc

La fonctionnalité d’emplacements personnalisés permet de configurer vos clusters Kubernetes avec Azure Arc en tant qu’emplacements cibles pour le déploiement d’instances d’offres Azure. Parmi les exemples d’offres Azure qui peuvent être déployées sur des emplacements personnalisés, citons des bases de données, telles que SQL Managed Instance avec Azure Arc et le serveur PostgreSQL avec Azure Arc, ou des instances d’applications comme App Services, Functions, Event Grid, Logic Apps et Gestion des API.

Un emplacement personnalisé dispose d’un mappage un-à-un à un espace de noms au sein du cluster Kubernetes avec Azure Arc. La ressource Azure d’emplacement personnalisé, combinée avec le contrôle d’accès en fonction du rôle (RBAC) Azure, permet d’accorder aux développeurs d’applications ou aux administrateurs de base de données des autorisations précises pour déployer des ressources, telles que des bases de données ou des instances d’application, sur des clusters Kubernetes avec Arc dans un environnement multilocataire.

Dans cet article, vous allez apprendre à activer les emplacements personnalisés sur un cluster Kubernetes avec Arc et à créer un emplacement personnalisé.

Prérequis

  • Installez ou mettez à niveau Azure CLI vers la dernière version.

  • Installez les versions les plus récentes des extensions Azure CLI suivantes :

    • connectedk8s

    • k8s-extension

    • customlocation

      az extension add --name connectedk8s
      az extension add --name k8s-extension
      az extension add --name customlocation
      

      Si vous avez déjà installé les extensions connectedk8s, k8s-extension et customlocation, mettez-les à jour vers la version la plus récente à l’aide de la commande suivante :

      az extension update --name connectedk8s
      az extension update --name k8s-extension
      az extension update --name customlocation
      
  • Vérifiez que l’inscription du fournisseur est terminée pour Microsoft.ExtendedLocation.

    1. Entrez les commandes suivantes :

      az provider register --namespace Microsoft.ExtendedLocation
      
    2. Supervisez le processus d’inscription. L’inscription peut prendre jusqu’à 10 minutes.

      az provider show -n Microsoft.ExtendedLocation -o table
      

      Une fois l’inscription terminée, l’état RegistrationState aura la valeur de Registered.

  • Vérifiez que vous disposez d’un cluster connecté Kubernetes avec Azure Arc et mettez à niveau vos agents vers la dernière version. Vérifiez que la machine sur laquelle vous allez exécuter les commandes décrites dans cet article comporte un fichier kubeconfig pointant vers ce cluster.

Activer les emplacements personnalisés sur votre cluster

Conseil

La fonctionnalité d’emplacements personnalisés dépend de la fonctionnalité de connexion au cluster. Les deux fonctionnalités doivent être activées dans le cluster pour que les emplacements personnalisés fonctionnent.

Si vous êtes connecté à Azure CLI en tant qu’utilisateur Microsoft Entra, utilisez la commande suivante :

az connectedk8s enable-features -n <clusterName> -g <resourceGroupName> --features cluster-connect custom-locations

Si vous exécutez la commande ci-dessus lorsque vous êtes identifié sur Azure CLI en tant que principal de service, il se peut que vous receviez l’avertissement suivant :

Unable to fetch oid of 'custom-locations' app. Proceeding without enabling the feature. Insufficient privileges to complete the operation.

Cela est dû au fait qu’un principal de service n’a pas les autorisations nécessaires pour obtenir des informations sur l’application utilisée par le service Azure Arc. Pour éviter cette erreur, effectuez les étapes suivantes :

  1. Connectez-vous à Azure CLI à l’aide de votre compte d’utilisateur. Récupérez l’élément objectId ou id de l’application Microsoft Entra utilisé par le service Azure Arc à l’aide de la commande suivante :

    az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query id -o tsv
    
  2. Connectez-vous à Azure CLI à l’aide du principal de service. Utilisez la valeur <objectId> ou id de l’étape précédente pour activer les emplacements personnalisés sur le cluster :

    az connectedk8s enable-features -n <cluster-name> -g <resource-group-name> --custom-locations-oid <objectId/id> --features cluster-connect custom-locations
    

Créer un emplacement personnalisé

  1. Déployez l’extension de cluster de service Azure de l’instance de service Azure que vous voulez installer sur votre cluster :

  2. Obtenez l’identificateur Azure Resource Manager du cluster Kubernetes avec Azure Arc, référencé dans les prochaines étapes avec connectedClusterId :

    az connectedk8s show -n <clusterName> -g <resourceGroupName>  --query id -o tsv
    
  3. Obtenez l’identificateur Azure Resource Manager de l’extension de cluster que vous avez déployée sur le cluster Kubernetes avec Azure Arc, référencé dans les étapes ultérieures en tant que extensionId :

    az k8s-extension show --name <extensionInstanceName> --cluster-type connectedClusters -c <clusterName> -g <resourceGroupName>  --query id -o tsv
    
  4. Créez l’emplacement personnalisé en référençant le cluster Kubernetes avec Azure Arc et l’extension :

    az customlocation create -n <customLocationName> -g <resourceGroupName> --namespace <name of namespace> --host-resource-id <connectedClusterId> --cluster-extension-ids <extensionId> 
    
    • Paramètres obligatoires :

      Nom du paramètre Description
      --name, --n Nom de l’emplacement personnalisé.
      --resource-group, --g Groupe de ressources de l’emplacement personnalisé.
      --namespace Espace de noms dans le cluster lié à l’emplacement personnalisé en cours de création.
      --host-resource-id Identificateur Azure Resource Manager du cluster Kubernetes avec Azure Arc (cluster connecté).
      --cluster-extension-ids Identificateurs Azure Resource Manager d’une instance d’extension de cluster installée sur le cluster connecté. En présence de plusieurs extensions, fournissez une liste d’ID d’extension de cluster séparés par des espaces.
    • Paramètres facultatifs :

      Nom du paramètre Description
      --location, --l Emplacement personnalisé de la ressource Azure Resource Manager dans Azure. S’il n’est pas spécifié, l’emplacement du cluster connecté est utilisé.
      --tags Liste d’étiquettes séparées par des espaces au format key[=value]. Utilisez '' pour effacer des balises existantes.
      --kubeconfig Administrateur kubeconfig du cluster.

Afficher les détails d’un emplacement personnalisé

Pour afficher les détails d’un emplacement personnalisé, utilisez la commande suivante :

az customlocation show -n <customLocationName> -g <resourceGroupName> 

Lister les emplacements personnalisés

Pour répertorier tous les emplacements personnalisés dans un groupe de ressources, utilisez la commande suivante :

az customlocation list -g <resourceGroupName> 

Mettre à jour un emplacement personnalisé

Utilisez la commande update pour ajouter de nouvelles valeurs pour --tags ou associer de nouveaux --cluster-extension-ids à l’emplacement personnalisé tout en conservant les valeurs existantes pour les étiquettes et les extensions de cluster associées.

az customlocation update -n <customLocationName> -g <resourceGroupName> --namespace <name of namespace> --host-resource-id <connectedClusterId> --cluster-extension-ids <extensionIds> 

Patcher un emplacement personnalisé

Utilisez la commande patch pour remplacer les valeurs existantes pour --cluster-extension-ids ou --tags. Les valeurs précédentes ne sont pas conservées.

az customlocation patch -n <customLocationName> -g <resourceGroupName> --namespace <name of namespace> --host-resource-id <connectedClusterId> --cluster-extension-ids <extensionIds> 

Supprimer un emplacement personnalisé

Pour supprimer un emplacement personnalisé, utilisez la commande suivante :

az customlocation delete -n <customLocationName> -g <resourceGroupName> 

Dépannage

Si la création d’emplacement personnalisé échoue avec l’erreur Unknown proxy error occurred, modifiez votre stratégie réseau pour autoriser la communication interne de pod à pod au sein de l’espace de noms azure-arc. Veillez également à ajouter l’espace de noms azure-arc à la liste d’exclusion no-proxy de votre stratégie configurée.

Étapes suivantes