Partager via


Configurer et gérer les clés SSH sur les nœuds de cluster Kubernetes Azure Operator Nexus

Cet article explique comment configurer et gérer la clé SSH sur votre pool d’agents Kubernetes Nexus et vos nœuds de plan de contrôle. Les clés SSH fournissent une méthode sécurisée d’accès à ces nœuds dans votre cluster.

Prérequis

Avant de suivre ce guide pratique, nous vous recommandons de :

  • Reportez-vous au Guide de démarrage rapide de cluster Kubernetes Operator Nexus pour obtenir une vue d’ensemble complète et les étapes impliquées.
  • Veillez à respecter les prérequis décrits dans le démarrage rapide pour en garantir une implémentation fluide.

Remarque

Ce guide suppose que vous disposez déjà d’un cluster Kubernetes Operator Nexus existant créé en utilisant le guide de démarrage rapide et que vous avez accès à l’interface CLI, au modèle ARM ou à Bicep, utilisés dans le démarrage rapide pour mettre à jour les clés SSH.

Configurer les clés SSH de nœud de cluster Kubernetes Operator Nexus

Lors de la configuration d’un cluster Kubernetes Operator Nexus, vous devez fournir des clés SSH pour les nœuds du cluster. Les clés SSH fournissent une méthode sécurisée d’accès à ces nœuds dans votre cluster.

Il existe plusieurs façons de fournir des clés SSH pour vos nœuds de cluster.

  • Si vous voulez utiliser la même clé SSH pour tous les nœuds de votre cluster, vous pouvez fournir un tableau de clés publiques lorsque vous créez le cluster. Ces clés sont insérées dans tous les nœuds de pool d’agents et tous les nœuds de plan de contrôle.
  • Si vous voulez utiliser différentes clés SSH pour différents pools d’agents ou nœuds de plan de contrôle, vous pouvez fournir une clé publique unique pour chaque pool, ce qui vous permet de gérer l’accès SSH de manière plus granulaire. Ceci remplace les clés à l’échelle du cluster. Tout nouveau pool d’agents ajouté au cluster ultérieurement sans clés utilise les clés à l’échelle du cluster, s’il a une clé, il utilise la clé fournie.
  • Si vous ne fournissez aucune clé SSH lors de la création de votre cluster, aucune clé SSH n’est insérée dans les nœuds. Cela signifie que les utilisateurs ne peuvent pas se connecter par SSH aux nœuds. Vous pouvez ajouter des clés SSH ultérieurement en mettant à jour la configuration du cluster, mais vous ne pouvez pas supprimer ces clés une fois ajoutées.

Voici les variables que vous devez définir, ainsi que les valeurs par défaut du Guide de démarrage rapide que vous pouvez utiliser pour certaines variables.

  • SSH_PUBLIC_KEY - Pour les clés à l’échelle du cluster. Utiliser une clé à l’échelle du cluster avec des clés de pool d’agents et de plan de contrôle n’a aucun effet, car les clés de plan de contrôle et de pool d’agents sont utilisés au lieu des clés à l’échelle du cluster.
  • CONTROL_PLANE_SSH_PUBLIC_KEY - Pour le plan de contrôle, vous pouvez fournir des clés publiques insérées dans les nœuds du plan de contrôle.
  • INITIAL_AGENT_POOL_SSH_PUBLIC_KEY - Pour chaque pool d’agents, vous pouvez fournir des clés publiques insérées dans les nœuds de ce pool.
    az networkcloud kubernetescluster create \
      --name "${CLUSTER_NAME}" \
      --resource-group "${RESOURCE_GROUP}" \
      --subscription "${SUBSCRIPTION_ID}" \
      --extended-location name="${CUSTOM_LOCATION}" type=CustomLocation \
      --location "${LOCATION}" \
      --kubernetes-version "${K8S_VERSION}" \
      --aad-configuration admin-group-object-ids="[${AAD_ADMIN_GROUP_OBJECT_ID}]" \
      --admin-username "${ADMIN_USERNAME}" \
      --ssh-key-values "${SSH_PUBLIC_KEY}" \
      --control-plane-node-configuration \
        count="${CONTROL_PLANE_COUNT}" \
        vm-sku-name="${CONTROL_PLANE_VM_SIZE}" \
        ssh-key-values='["${CONTROL_PLANE_SSH_PUBLIC_KEY}"]' \
      --initial-agent-pool-configurations "[{count:${INITIAL_AGENT_POOL_COUNT},mode:System,name:${INITIAL_AGENT_POOL_NAME},vm-sku-name:${INITIAL_AGENT_POOL_VM_SIZE},ssh-key-values:['${INITIAL_AGENT_POOL_SSH_PUBLIC_KEY}']}]"\
      --network-configuration \
        cloud-services-network-id="${CSN_ARM_ID}" \
        cni-network-id="${CNI_ARM_ID}" \
        pod-cidrs="[${POD_CIDR}]" \
        service-cidrs="[${SERVICE_CIDR}]" \
        dns-service-ip="${DNS_SERVICE_IP}"

Gérer les clés SSH du nœud de cluster Kubernetes Operator Nexus

Vous pouvez gérer les clés SSH pour les nœuds de votre cluster Kubernetes Operator Nexus une fois le cluster créé. La mise à jour des clés SSH est possible, mais la suppression de toutes les clés SSH du nœud de cluster ne l’est pas. Au lieu de cela, toutes nouvelles clés fournies remplaceront toutes clés existantes.

Pour mettre à jour les clés SSH, vous pouvez appliquer la même configuration Bicep/ARM que celle utilisée pendant le déploiement initial avec de nouvelles clés, ou utiliser l’interface CLI.

Limites

  • Vous ne pouvez pas supprimer les clés SSH des nœuds de cluster. Vous ne pouvez que les mettre à jour avec de nouvelles clés.
  • Si vous essayez de mettre à jour la clé à l’échelle du cluster avec un tableau vide, l’opération réussit, mais les clés existantes restent inchangées.
  • Si vous essayez de mettre à jour les clés de pool d'agents ou le plan de contrôle avec un tableau vide, l’opération réussit et les clés à l’échelle du cluster sont utilisées à la place.
  • Si vous essayez de mettre à jour les clés d’un cluster qui a été créé sans aucune clé, la nouvelle clé est ajoutée, mais vous ne pourrez pas la supprimer.

Avant de commencer

  • Vérifiez que vous disposez des autorisations requises pour mettre à jour la configuration du cluster.
  • Vous avez les nouvelles clés SSH que vous voulez utiliser pour les nœuds de cluster.
  • Vous avez le fichier de paramètres utilisé pendant le déploiement initial ou les variables utilisées dans la commande CLI.
  • Pour utiliser ce guide, vous devez disposer d’un cluster Kubernetes Operator Nexus existant qui a été créé en utilisant le guide de démarrage rapide.

Mettre à jour les clés SSH à l’échelle du cluster

Utilisez la commande suivante pour mettre à jour les clés SSH à l’échelle du cluster, qui sont utilisées pour tous les nœuds du cluster. Les clés existantes sont remplacées par les nouvelles clés.

Remarque

Cela fonctionne uniquement si le cluster a été créé avec des clés à l’échelle du cluster. Si le cluster a été créé avec des clés de pool d’agents ou de plan de contrôle, cette opération n’a aucun effet. Reportez-vous aux sections suivantes pour mettre à jour les clés de pool d’agents ou de plan de contrôle.

Azure CLI pour mettre à jour les clés SSH à l’échelle du cluster

  1. Définissez la variable SSH_PUBLIC_KEY avec la nouvelle clé SSH.
SSH_PUBLIC_KEY="ssh-rsa CCCCC...."
  1. Utilisez la commande suivante pour mettre à jour les clés SSH à l’échelle du cluster.
az networkcloud kubernetescluster update --name "$CLUSTER_NAME" --resource-group "$RESOURCE_GROUP" --subscription "$SUBSCRIPTION_ID" --ssh-key-values "$SSH_PUBLIC_KEY"

Azure Resource Manager (ARM) et Bicep pour mettre à jour les clés SSH à l’échelle du cluster

  1. Mettez à jour le paramètre sshPublicKeys dans kubernetes-deploy-parameters.json avec la nouvelle clé SSH.
    "sshPublicKeys": {
      "value": [
        {
          "keyData": "ssh-rsa CCCCC...."
        }
      ]
    }
  1. Redéployez le modèle.

Pour le modèle ARM :

    az deployment group create --resource-group myResourceGroup --template-file kubernetes-deploy.json --parameters @kubernetes-deploy-parameters.json

Pour Bicep :

    az deployment group create --resource-group myResourceGroup --template-file kubernetes-deploy.bicep --parameters @kubernetes-deploy-parameters.json

Mettre à jour les clés SSH de pool d’agents

Utilisez la commande suivante pour mettre à jour les clés SSH d’un pool d’agents spécifique.

  • Tous les nœuds du pool d’agents seront mis à jour avec les nouvelles clés.
  • Si le pool d’agents a été créé avec des clés, les nouvelles clés remplacent les clés existantes.
  • Si le pool d’agents a été créé sans clés, les nouvelles clés sont ajoutées.
  • Si le pool d’agents a été créé avec des clés à l’échelle du cluster, les nouvelles clés remplacent les clés existantes.
  • Si vous essayez de mettre à jour les clés d’un cluster qui a été créé sans aucune clé, la nouvelle clé est ajoutée, mais vous ne pourrez pas la supprimer.
  • Si vous essayez de mettre à jour les clés de pool d’agents avec un tableau vide, l’opération réussit et les clés à l’échelle du cluster sont utilisées à la place.

Azure CLI pour mettre à jour les clés SSH de pool d’agents

  1. Définissez la variable AGENT_POOL_KEY avec la nouvelle clé SSH.
AGENT_POOL_KEY="ssh-rsa DDDDD...."
  1. Utilisez la commande suivante pour mettre à jour les clés SSH de pool d’agents.
az networkcloud kubernetescluster agentpool update --agent-pool-name "${CLUSTER_NAME}-nodepool-2" --kubernetes-cluster-name "$CLUSTER_NAME" --resource-group "$RESOURCE_GROUP" --subscription "$SUBSCRIPTION_ID" --ssh-key-values "$AGENT_POOL_KEY"

Modèle Azure ARM et Bicep pour mettre à jour les clés SSH de pool d’agents

Remarque

Il n’est pas possible de mettre à jour les pools de nœuds créés via la configuration du pool d’agents initial avec cette méthode, car il n’existe aucun modèle de pool d’agents et fichier de paramètres distincts. Seules les clés de pool d’agents pour les pools créés après la création du cluster peuvent être mises à jour à l’aide de cette méthode. Pour mettre à jour les clés du pool d’agents initial, reportez-vous à la commande CLI fournie dans la section précédente. Si le pool d’agents initial a été créé avec des clés à l’échelle du cluster et que vous souhaitez mettre à jour les clés du pool d’agents initial, vous pouvez mettre à jour les clés au niveau du cluster.

  1. Mettez à jour le paramètre agentPoolSshKeys dans kubernetes-nodepool-parameters.json avec la nouvelle clé SSH.
    "agentPoolSshKeys": {
      "value": [
        {
          "keyData": "ssh-rsa DDDDD...."
        }
      ]
    }
  1. Redéployez le modèle.

Pour le modèle ARM :

    az deployment group create --resource-group myResourceGroup --template-file kubernetes-add-agentpool.json --parameters @kubernetes-nodepool-parameters.json

Pour Bicep :

    az deployment group create --resource-group myResourceGroup --template-file kubernetes-add-agentpool.bicep --parameters @kubernetes-nodepool-parameters.json

Mettre à jour les clés SSH de plan de contrôle

Utilisez la commande suivante pour mettre à jour les clés SSH pour le plan de contrôle.

  • Tous les nœuds du plan de contrôle seront mis à jour avec les nouvelles clés.
  • Si le plan de contrôle a été créé avec des clés, les nouvelles clés remplacent les clés existantes.
  • Si le plan de contrôle a été créé sans clés, les nouvelles clés sont ajoutées.
  • Si le plan de contrôle a été créé avec des clés à l’échelle du cluster, les nouvelles clés remplacent les clés existantes.
  • Si vous essayez de mettre à jour les clés d’un cluster qui a été créé sans aucune clé, la nouvelle clé est ajoutée, mais vous ne pourrez pas la supprimer.
  • Si vous essayez de mettre à jour les clés de plan de contrôle avec un tableau vide, l’opération réussit et les clés à l’échelle du cluster sont utilisées à la place.

Remarque

Les clés de plan de contrôle peuvent être mises à jour en utilisant le modèle de déploiement initial et le fichier de paramètres, car le plan de contrôle fait partie du cluster. Toutefois, les clés de pool d’agents ne peuvent pas être mises à jour de la même façon, car le pool d’agents est une sous-ressource, sauf si le pool d’agents utilise des clés à l’échelle du cluster.

Azure CLI pour mettre à jour les clés SSH de plan de contrôle

  1. Définissez la variable CONTROL_PLANE_SSH_PUBLIC_KEY avec la nouvelle clé SSH.
CONTROL_PLANE_SSH_PUBLIC_KEY="ssh-rsa EEEEE...."
  1. Utilisez la commande suivante pour mettre à jour les clés SSH de plan de contrôle.
az networkcloud kubernetescluster update --name "$CLUSTER_NAME" --resource-group "$RESOURCE_GROUP" --subscription "$SUBSCRIPTION_ID" --control-plane-node-configuration ssh-key-values="['$CONTROL_PLANE_SSH_PUBLIC_KEY']"

Modèle Azure ARM et Bicep pour mettre à jour les clés SSH de plan de contrôle

  1. Mettez à jour le paramètre controlPlaneSshKeys dans kubernetes-deploy-parameters.json avec la nouvelle clé SSH.
    "controlPlaneSshKeys": {
      "value": [
        {
          "keyData": "ssh-rsa EEEEE...."
        }
      ]
    }
  1. Redéployez le modèle.

Pour le modèle ARM :

    az deployment group create --resource-group myResourceGroup --template-file kubernetes-deploy.json --parameters @kubernetes-deploy-parameters.json

Pour Bicep :

    az deployment group create --resource-group myResourceGroup --template-file kubernetes-deploy.bicep --parameters @kubernetes-deploy-parameters.json

Étapes suivantes

En comprenant comment configurer et gérer les clés SSH sur vos nœuds de cluster Kubernetes Operator Nexus, vous pouvez garantir que votre cluster est sécurisé et que vous pouvez accéder aux nœuds lorsque vous avez besoin de résoudre les problèmes.