Démarrage rapide : Connecter un cluster Kubernetes existant à Azure Arc

Prise en main de Kubernetes compatible avec Azure Arc à l’aide d’Azure CLI ou Azure PowerShell pour connecter un cluster Kubernetes existant à Azure Arc.

Pour obtenir un aperçu conceptuel de la connexion de clusters à Azure Arc, consultez Vue d’ensemble de l’agent Kubernetes avec Azure Arc. Pour essayer des choses dans un exemple d’expérience/pratique, visitez le démarrage rapide d’Azure Arc.

Prérequis

Important

Outre ces conditions préalables, veillez à répondre à toutes les exigences réseau pour Kubernetes avec Azure Arc.

  • Compte Azure avec un abonnement actif. Créez un compte gratuitement.

  • Une connaissance de base des concepts Kubernetes de base.

  • Identité (utilisateur ou principal de service) qui peut être utilisée pour se connecter à Azure CLI et connecter votre cluster à Azure Arc.

  • La dernière version d’Azure CLI.

  • Version la plus récente de l’extension Azure CLI connectedk8s, installée avec la commande suivante :

    az extension add --name connectedk8s
    
  • Un cluster Kubernetes fonctionnel. Si vous n'en avez pas, vous pouvez créer un cluster en utilisant l'une des options suivantes :

  • Au moins 850 Mo gratuits pour les agents Arc déployés sur le cluster et possibilité d’utiliser environ 7 % d’un même processeur.

  • Fichier kubeconfig et contexte pointant vers votre cluster. Pour découvrir plus d’informations sur la définition d’un fichier kubeconfig et la façon de définir un contexte à pointer vers votre cluster, veuillez consulter cet article.

Inscrire les fournisseurs pour Kubernetes avec Azure Arc

  1. Entrez les commandes suivantes :

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

    az provider show -n Microsoft.Kubernetes -o table
    az provider show -n Microsoft.KubernetesConfiguration -o table
    az provider show -n Microsoft.ExtendedLocation -o table
    

    Une fois l’inscription effectuée, vous devriez voir que l’état RegistrationState pour ces espaces de noms passe à Registered.

Créer un groupe de ressources

Exécutez la commande suivante :

az group create --name AzureArcTest --location EastUS --output table

Sortie :

Location    Name
----------  ------------
eastus      AzureArcTest

Connecter un cluster Kubernetes existant

Exécutez la commande suivante pour vous connecter à votre cluster. Cette commande déploie les agents Azure Arc sur le cluster et installe Helm v. 3.6.3 dans le dossier .azure de la machine de déploiement. Cette installation de Helm 3 est utilisée uniquement pour Azure Arc et ne supprime ni ne modifie pas les versions précédemment installées de Helm sur l’ordinateur.

Dans cet exemple, le nom du cluster est AzureArcTest1.

az connectedk8s connect --name AzureArcTest1 --resource-group AzureArcTest

Sortie :

Helm release deployment succeeded

    {
      "aadProfile": {
        "clientAppId": "",
        "serverAppId": "",
        "tenantId": ""
      },
      "agentPublicKeyCertificate": "xxxxxxxxxxxxxxxxxxx",
      "agentVersion": null,
      "connectivityStatus": "Connecting",
      "distribution": "gke",
      "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/AzureArcTest/providers/Microsoft.Kubernetes/connectedClusters/AzureArcTest1",
      "identity": {
        "principalId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "type": "SystemAssigned"
      },
      "infrastructure": "gcp",
      "kubernetesVersion": null,
      "lastConnectivityTime": null,
      "location": "eastus",
      "managedIdentityCertificateExpirationTime": null,
      "name": "AzureArcTest1",
      "offering": null,
      "provisioningState": "Succeeded",
      "resourceGroup": "AzureArcTest",
      "tags": {},
      "totalCoreCount": null,
      "totalNodeCount": null,
      "type": "Microsoft.Kubernetes/connectedClusters"
    }

Conseil

La commande ci-dessus sans paramètre d’emplacement spécifié crée la ressource Kubernetes avec Azure Arc dans le même emplacement que le groupe de ressources. Pour créer la ressource Kubernetes avec Azure Arc dans un emplacement différent, spécifiez --location <region> ou -l <region> lors de l’exécution de la commande az connectedk8s connect.

Important

Si le déploiement échoue en raison d’une erreur de délai d’expiration, consultez notre guide de résolution des problèmes pour plus d’informations sur la résolution de ce problème.

Se connecter à l’aide d’un serveur proxy sortant

Si votre cluster se trouve derrière un serveur proxy sortant, les demandes doivent être acheminées via le serveur proxy sortant.

  1. Sur la machine de déploiement, définissez les variables d’environnement nécessaires pour Azure CLI afin d’utiliser le serveur proxy sortant :

    export HTTP_PROXY=<proxy-server-ip-address>:<port>
    export HTTPS_PROXY=<proxy-server-ip-address>:<port>
    export NO_PROXY=<cluster-apiserver-ip-address>:<port>
    
  2. Sur le cluster Kubernetes, exécutez la commande connect avec les paramètres proxy-https et proxy-http spécifiés. Si votre serveur proxy est configuré à la fois pour HTTP et HTTPS, veillez à l’utiliser --proxy-http pour le proxy HTTP et --proxy-https pour le proxy HTTPS. Si votre serveur proxy utilise uniquement HTTP, vous pouvez utiliser cette valeur pour les deux paramètres.

    az connectedk8s connect --name <cluster-name> --resource-group <resource-group> --proxy-https https://<proxy-server-ip-address>:<port> --proxy-http http://<proxy-server-ip-address>:<port> --proxy-skip-range <excludedIP>,<excludedCIDR> --proxy-cert <path-to-cert-file>
    

Notes

  • Certaines requêtes réseau, telles que celles impliquant une communication de service à service dans le cluster, doivent être séparées du trafic qui est routé via le serveur proxy pour les communications sortantes. Vous pouvez utiliser le paramètre --proxy-skip-range pour spécifier la plage CIDR et les points de terminaison en les séparant par des virgules afin qu’aucune communication depuis les agents vers ces points de terminaison ne passe par le proxy sortant. Au minimum, la plage CIDR des services dans le cluster doit être spécifiée en tant que valeur pour ce paramètre. Par exemple, supposons que kubectl get svc -A retourne une liste de services qui, tous, ont des valeurs ClusterIP dans la plage 10.0.0.0/16. La valeur à spécifier ensuite pour --proxy-skip-range est 10.0.0.0/16,kubernetes.default.svc,.svc.cluster.local,.svc.
  • --proxy-http, --proxy-https et --proxy-skip-range sont attendus pour la plupart des environnements de serveurs proxy sortants. --proxy-cert est nécessaire uniquement si vous devez injecter les certificats approuvés attendus par le serveur proxy dans le magasin de certificats approuvés des pods d’agents.
  • Le proxy sortant doit être configuré pour autoriser les connexions websocket.

Pour les serveurs proxy de trafic sortant où seul un certificat approuvé doit être fourni sans les entrées de point de terminaison du serveur proxy, az connectedk8s connect peut être exécuté en spécifiant seulement l’entrée --proxy-cert. Si plusieurs certificats approuvés sont attendus, la chaîne de certificats combinée peut être fournie dans un seul fichier en utilisant le paramètre --proxy-cert.

Notes

  • --custom-ca-cert est un alias pour --proxy-cert. Les deux paramètres peuvent être utilisés indifféremment. Si vous passez les deux paramètres dans la même commande, le dernier paramètre passé est honoré.

Exécutez la commande connect avec le paramètre --proxy-cert spécifié :

az connectedk8s connect --name <cluster-name> --resource-group <resource-group> --proxy-cert <path-to-cert-file>

Vérifier la connexion du cluster

Exécutez la commande suivante :

az connectedk8s list --resource-group AzureArcTest --output table

Sortie :

Name           Location    ResourceGroup
-------------  ----------  ---------------
AzureArcTest1  eastus      AzureArcTest

Notes

Après l’intégration du cluster, il faut environ 5 à 10 minutes pour que les métadonnées du cluster (version du cluster, version de l’agent, nombre de nœuds, etc.) soient visibles sur la page Vue d’ensemble de la ressource Kubernetes avec Azure Arc sur le Portail Azure.

Conseil

Pour obtenir de l’aide sur la résolution des problèmes lors de la connexion de votre cluster, consultez Diagnostiquer les problèmes de connexion pour les clusters Kubernetes avec Azure Arc.

Voir les agents Azure Arc pour Kubernetes

Kubernetes avec Azure Arc déploie plusieurs agents dans l’espace de noms azure-arc.

  1. Visualisez ces déploiements et ces pods à l’aide de :

    kubectl get deployments,pods -n azure-arc
    
  2. Vérifiez que tous les pods sont à l’état Running.

    Sortie :

     NAME                                        READY   UP-TO-DATE   AVAILABLE   AGE
     deployment.apps/cluster-metadata-operator   1/1     1            1           13d
     deployment.apps/clusterconnect-agent        1/1     1            1           13d
     deployment.apps/clusteridentityoperator     1/1     1            1           13d
     deployment.apps/config-agent                1/1     1            1           13d
     deployment.apps/controller-manager          1/1     1            1           13d
     deployment.apps/extension-manager           1/1     1            1           13d
     deployment.apps/flux-logs-agent             1/1     1            1           13d
     deployment.apps/kube-aad-proxy              1/1     1            1           13d
     deployment.apps/metrics-agent               1/1     1            1           13d
     deployment.apps/resource-sync-agent         1/1     1            1           13d
    
     NAME                                            READY   STATUS    RESTARTS   AGE
     pod/cluster-metadata-operator-9568b899c-2stjn   2/2     Running   0          13d
     pod/clusterconnect-agent-576758886d-vggmv       3/3     Running   0          13d
     pod/clusteridentityoperator-6f59466c87-mm96j    2/2     Running   0          13d
     pod/config-agent-7cbd6cb89f-9fdnt               2/2     Running   0          13d
     pod/controller-manager-df6d56db5-kxmfj          2/2     Running   0          13d
     pod/extension-manager-58c94c5b89-c6q72          2/2     Running   0          13d
     pod/flux-logs-agent-6db9687fcb-rmxww            1/1     Running   0          13d
     pod/kube-aad-proxy-67b87b9f55-bthqv             2/2     Running   0          13d
     pod/metrics-agent-575c565fd9-k5j2t              2/2     Running   0          13d
     pod/resource-sync-agent-6bbd8bcd86-x5bk5        2/2     Running   0          13d
    

Pour plus d’informations sur ces agents, consultez Vue d’ensemble de l’agent Kubernetes avec Azure Arc.

Nettoyer les ressources

Vous pouvez supprimer la ressource Kubernetes avec Azure Arc, toutes les ressources de configuration associées et tous les agents s’exécutant sur le cluster à l’aide d’Azure CLI et de la commande suivante :

az connectedk8s delete --name AzureArcTest1 --resource-group AzureArcTest

Si le processus de suppression échoue, utilisez la commande suivante pour forcer la suppression (ajout de -y si vous souhaitez contourner l’invite de confirmation) :

az connectedk8s delete -n AzureArcTest1 -g AzureArcTest --force

Cette commande peut également être utilisée si vous rencontrez des problèmes lors de la création d’un déploiement de cluster (en raison de ressources créées précédemment qui ne sont pas complètement supprimées).

Notes

La suppression de la ressource Kubernetes avec Azure Arc à l’aide du portail Azure entraîne la suppression de toutes les ressources de configuration associées mais pas des agents s’exécutant sur le cluster. La meilleure pratique consiste à supprimer la ressource Kubernetes avec Azure Arc à l’aide de az connectedk8s delete au lieu de supprimer la ressource dans le Portail Azure.

Étapes suivantes