Freigeben über


Konfigurieren und Verwalten von SSH-Schlüsseln auf Azure Operator Nexus Kubernetes-Clusterknoten

In diesem Artikel wird beschrieben, wie Sie den SSH-Schlüssel auf Ihrem Nexus Kubernetes-Agentpool und Steuerebenenknoten konfigurieren und verwalten. SSH-Schlüssel bieten eine sichere Methode für den Zugriff auf diese Knoten in Ihrem Cluster.

Voraussetzungen

Bevor Sie mit dieser Anleitung fortfahren, empfiehlt es sich, Folgendes zu beachten:

  • In der Schnellstartanleitung für den Operator Nexus Kubernetes-Cluster finden Sie eine umfassende Übersicht und die erforderlichen Schritte.
  • Stellen Sie sicher, dass Sie die beschriebenen Voraussetzungen in der Schnellstartanleitung erfüllen, um eine reibungslose Implementierung des Leitfadens sicherzustellen.

Hinweis

In diesem Leitfaden wird davon ausgegangen, dass Sie bereits über einen vorhandenen Operator Nexus Kubernetes-Cluster verfügen, der mithilfe des Schnellstarthandbuchs erstellt wurde, und dass Sie Zugriff auf die CLI-, ARM-Vorlage oder Bicep haben, die in der Schnellstartanleitung zum Aktualisieren der SSH-Schlüssel verwendet wurde.

Konfigurieren Sie die SSH-Schlüssel für die Knoten des Operator Nexus Kubernetes-Clusters

Beim Konfigurieren eines Operator Nexus Kubernetes-Clusters müssen Sie SSH-Schlüssel für die Knoten im Cluster bereitstellen. SSH-Schlüssel bieten eine sichere Methode für den Zugriff auf diese Knoten in Ihrem Cluster.

Es gibt einige verschiedene Möglichkeiten, wie Sie SSH-Schlüssel für Ihre Clusterknoten bereitstellen können.

  • Wenn Sie denselben SSH-Schlüssel für alle Knoten in Ihrem Cluster verwenden möchten, können Sie beim Erstellen des Clusters ein Array von öffentlichen Schlüsseln bereitstellen. Diese Schlüssel werden in alle Agentpoolknoten und Steuerebenenknoten eingefügt.
  • Wenn Sie unterschiedliche SSH-Schlüssel für verschiedene Agentpools oder Steuerebenenknoten verwenden möchten, können Sie für jeden Pool einen eindeutigen öffentlichen Schlüssel bereitstellen, sodass Sie den SSH-Zugriff präziser verwalten können. Dadurch werden die clusterweiten Schlüssel überschrieben. Jeder neue Agentpool, der dem Cluster später ohne Schlüssel hinzugefügt wird, verwendet die clusterweiten Schlüssel. Wenn er über einen Schlüssel verfügt, verwendet er den bereitgestellten Schlüssel.
  • Wenn Sie beim Erstellen Ihres Clusters keine SSH-Schlüssel bereitstellen, werden keine SSH-Schlüssel in die Knoten eingefügt. Dies bedeutet, dass Benutzer keine SSH-Verbindung zu den Knoten herstellen können. Sie können SSH-Schlüssel später hinzufügen, indem Sie die Clusterkonfiguration aktualisieren, aber diese Schlüssel nach dem Hinzufügen nicht entfernen.

Im Folgenden sind die Variablen aufgeführt, die Sie festlegen müssen, zusammen mit den Schnellstartleitfaden-Standardwerten , die Sie für bestimmte Variablen verwenden können.

  • SSH_PUBLIC_KEY Für die clusterweiten Schlüssel. Die Verwendung von clusterweiten Schlüsseln zusammen mit Agentpool- und Steuerebenenschlüsseln hat keine Auswirkung, da die Steuerebenen- und Agentpoolschlüssel anstelle der clusterweiten Schlüssel verwendet werden.
  • CONTROL_PLANE_SSH_PUBLIC_KEY – Für die Steuerebene können Sie öffentliche Schlüssel bereitstellen, die in die Steuerebenenknoten eingefügt werden.
  • INITIAL_AGENT_POOL_SSH_PUBLIC_KEY – Für jeden Agentpool können Sie öffentliche Schlüssel bereitstellen, die in die Knoten in diesem Pool eingefügt werden.
    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}"

Verwalten von SSH-Schlüsseln für Knoten im Operator-Nexus-Kubernetes-Cluster

Sie können die SSH-Schlüssel für die Knoten in Ihrem Operator Nexus Kubernetes-Cluster verwalten, nachdem der Cluster erstellt wurde. Das Aktualisieren der SSH-Schlüssel ist möglich, aber das Entfernen aller SSH-Schlüssel vom Clusterknoten ist keine Option. Stattdessen werden alle vorhandenen Schlüssel durch neue Schlüssel ersetzt.

Um die SSH-Schlüssel zu aktualisieren, können Sie dieselbe Bicep/ARM-Konfiguration anwenden, die während der ersten Bereitstellung mit neuen Schlüsseln verwendet wird, oder die CLI verwenden.

Einschränkungen

  • Sie können SSH-Schlüssel nicht von den Clusterknoten entfernen. Sie können sie nur mit neuen Schlüsseln aktualisieren.
  • Wenn Sie versuchen, den clusterweiten Schlüssel mit einem leeren Array zu aktualisieren, ist der Vorgang erfolgreich, aber die vorhandenen Schlüssel bleiben unverändert.
  • Wenn Sie versuchen, die Agentpoolschlüssel oder die Steuerungsebene mit einem leeren Array zu aktualisieren, wird der Vorgang erfolgreich ausgeführt, und stattdessen werden die clusterweiten Schlüssel verwendet.
  • Wenn Sie versuchen, die Schlüssel für einen Cluster zu aktualisieren, der ohne Schlüssel erstellt wurde, wird der neue Schlüssel hinzugefügt, aber Sie können ihn nicht entfernen.

Bevor Sie anfangen

  • Stellen Sie sicher, dass Sie über die erforderlichen Berechtigungen zum Aktualisieren der Clusterkonfiguration verfügen.
  • Sie verfügen über die neuen SSH-Schlüssel, die Sie für die Clusterknoten verwenden möchten.
  • Sie haben entweder die Parameterdatei, die während der anfänglichen Bereitstellung verwendet wurde, oder die Variablen, die im CLI-Befehl benutzt werden.
  • Um diesen Leitfaden zu verwenden, müssen Sie über einen vorhandenen Operator Nexus Kubernetes-Cluster verfügen, der mithilfe des Schnellstarthandbuchs erstellt wurde.

Aktualisieren von clusterweiten SSH-Schlüsseln

Verwenden Sie den folgenden Befehl, um die clusterweiten SSH-Schlüssel zu aktualisieren, die für alle Knoten im Cluster verwendet werden. Die vorhandenen Schlüssel werden durch die neuen Schlüssel ersetzt.

Hinweis

Dies funktioniert nur, wenn der Cluster mit clusterweiten Schlüsseln erstellt wurde. Wenn der Cluster mit Agentpool- oder Steuerebenenschlüsseln erstellt wurde, hat dieser Vorgang keine Auswirkung. Lesen Sie die folgenden Abschnitte, um den Agentpool oder die Steuerebenenschlüssel zu aktualisieren.

Azure CLI zum Aktualisieren clusterweiter SSH-Schlüssel

  1. Legen Sie die SSH_PUBLIC_KEY Variable mit dem neuen SSH-Schlüssel fest.
SSH_PUBLIC_KEY="ssh-rsa CCCCC...."
  1. Verwenden Sie den folgenden Befehl, um die clusterweiten SSH-Schlüssel zu aktualisieren.
az networkcloud kubernetescluster update --name "$CLUSTER_NAME" --resource-group "$RESOURCE_GROUP" --subscription "$SUBSCRIPTION_ID" --ssh-key-values "$SSH_PUBLIC_KEY"

Azure Resource Manager (ARM) und Bicep zum Aktualisieren clusterweiter SSH-Schlüssel

  1. Aktualisieren Sie den sshPublicKeys-Parameter in kubernetes-deploy-parameters.json mit dem neuen SSH-Schlüssel.
    "sshPublicKeys": {
      "value": [
        {
          "keyData": "ssh-rsa CCCCC...."
        }
      ]
    }
  1. Stellen Sie die Vorlage erneut zur Anwendung.

Für ARM-Vorlage:

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

Für Bicep:

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

Aktualisieren von SSH-Schlüsseln für den Agentpool

Verwenden Sie den folgenden Befehl, um die SSH-Schlüssel für einen bestimmten Agentpool zu aktualisieren.

  • Alle Knoten im Agentpool werden mit den neuen Schlüsseln aktualisiert.
  • Wenn der Agentpool mit Schlüsseln erstellt wurde, ersetzen die neuen Schlüssel die vorhandenen Schlüssel.
  • Wenn der Agentpool ohne Schlüssel erstellt wurde, werden die neuen Schlüssel hinzugefügt.
  • Wenn der Agentpool mit clusterweiten Schlüsseln erstellt wurde, ersetzen die neuen Schlüssel die vorhandenen Schlüssel.
  • Wenn Sie versuchen, die Schlüssel für einen Cluster zu aktualisieren, der ohne Schlüssel erstellt wurde, wird der neue Schlüssel hinzugefügt, aber Sie können ihn nicht entfernen.
  • Wenn Sie versuchen, die Agentpoolschlüssel mit einem leeren Array zu aktualisieren, wird der Vorgang erfolgreich ausgeführt, und stattdessen werden die clusterweiten Schlüssel verwendet.

Azure CLI zum Aktualisieren von SSH-Schlüsseln für den Agentpool

  1. Legen Sie die AGENT_POOL_KEY Variable mit dem neuen SSH-Schlüssel fest.
AGENT_POOL_KEY="ssh-rsa DDDDD...."
  1. Verwenden Sie den folgenden Befehl, um die SSH-Schlüssel des Agentpools zu aktualisieren.
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"

Azure ARM-Vorlage und Bicep zum Aktualisieren von SSH-Schlüsseln im Agentpool

Hinweis

Das Aktualisieren von Knotenpools, die über die anfängliche Agentpoolkonfiguration erstellt wurden, ist mit dieser Methode nicht möglich, da keine separate Agentpoolvorlage und Parameterdatei vorhanden ist. Nur die Agentpoolschlüssel für Pools, die nach der Clustererstellung erstellt wurden, können mit dieser Methode aktualisiert werden. Informationen zum Aktualisieren der Schlüssel für den anfänglichen Agentpool finden Sie unter dem im vorherigen Abschnitt angegebenen CLI-Befehl. Wenn der anfängliche Agentpool mit clusterweiten Schlüsseln erstellt wurde und Sie die Schlüssel für den anfänglichen Agentpool aktualisieren möchten, können Sie die clusterweiten Schlüssel aktualisieren.

  1. Aktualisieren Sie den Parameter agentPoolSshKeys in kubernetes-nodepool-parameters.json mit dem neuen SSH-Schlüssel.
    "agentPoolSshKeys": {
      "value": [
        {
          "keyData": "ssh-rsa DDDDD...."
        }
      ]
    }
  1. Stellen Sie die Vorlage erneut zur Anwendung.

Für ARM-Vorlage:

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

Für Bicep:

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

Aktualisieren von SSH-Schlüsseln für die Steuerungsebene

Verwenden Sie den folgenden Befehl, um die SSH-Schlüssel für die Steuerungsebene zu aktualisieren.

  • Alle Knoten in der Steuerebene werden mit den neuen Tasten aktualisiert.
  • Wenn die Steuerebene mit Schlüsseln erstellt wurde, ersetzen die neuen Schlüssel die vorhandenen Schlüssel.
  • Wenn die Steuerebene ohne Schlüssel erstellt wurde, werden die neuen Schlüssel hinzugefügt.
  • Wenn die Steuerebene mit clusterweiten Schlüsseln erstellt wurde, ersetzen die neuen Schlüssel die vorhandenen Schlüssel.
  • Wenn Sie versuchen, die Schlüssel für einen Cluster zu aktualisieren, der ohne Schlüssel erstellt wurde, wird der neue Schlüssel hinzugefügt, aber Sie können ihn nicht entfernen.
  • Wenn Sie versuchen, die Schlüssel der Steuerungsebene mit einem leeren Array zu aktualisieren, wird der Vorgang erfolgreich abgeschlossen, und stattdessen werden die clusterweiten Schlüssel verwendet.

Hinweis

Die Steuerungsebenenschlüssel können mithilfe der anfänglichen Bereitstellungsvorlage und der Parameterdatei aktualisiert werden, da die Steuerungsebene Teil des Clusters ist. Agentpoolschlüssel können jedoch nicht auf die gleiche Weise aktualisiert werden, wie der Agentpool eine Unterressource ist, es sei denn, der Agentpool verwendet clusterweite Schlüssel.

Azure CLI zum Aktualisieren von SSH-Schlüsseln der Steuerebene

  1. Legen Sie die CONTROL_PLANE_SSH_PUBLIC_KEY Variable mit dem neuen SSH-Schlüssel fest.
CONTROL_PLANE_SSH_PUBLIC_KEY="ssh-rsa EEEEE...."
  1. Verwenden Sie den folgenden Befehl, um die SSH-Tasten der Steuerebene zu aktualisieren.
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']"

Azure ARM-Vorlage und Bicep zum Aktualisieren der Steuerungsebene der SSH-Schlüssel

  1. Aktualisieren Sie den controlPlaneSshKeys Parameter in kubernetes-deploy-parameters.json mit dem neuen SSH-Schlüssel.
    "controlPlaneSshKeys": {
      "value": [
        {
          "keyData": "ssh-rsa EEEEE...."
        }
      ]
    }
  1. Stellen Sie die Vorlage erneut zur Anwendung.

Für ARM-Vorlage:

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

Für Bicep:

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

Nächste Schritte

Wenn Sie verstehen, wie Sie SSH-Schlüssel auf Ihren Operator Nexus Kubernetes-Clusterknoten konfigurieren und verwalten, können Sie sicherstellen, dass Ihr Cluster sicher ist und Sie bei der Problembehandlung auf die Knoten zugreifen können.