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 Ihren Nexus Kubernetes-Agentpoolknoten und Knoten auf Steuerungsebene 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 Schrittanleitung fortfahren, sollten Sie Folgendes beachten:
- Sehen Sie sich die umfassende Übersicht und erforderlichen Schritte im Schnellstart für Operator Nexus Kubernetes-Cluster an.
- Stellen Sie sicher, dass Sie die im Schnellstart beschriebenen Voraussetzungen erfüllen, um eine reibungslose Implementierung sicherzustellen.
Hinweis
Dieser Leitfaden setzt voraus, dass Sie bereits über einen vorhandenen Operator Nexus Kubernetes-Cluster verfügen, der mithilfe des Schnellstarts erstellt wurde, und dass Sie Zugriff auf die Befehlszeilenschnittstelle (Command Line Interface, CLI), die Azure Resource Manager (ARM)-Vorlage oder die Bicep-Datei haben, die im Schnellstart zum Aktualisieren der SSH-Schlüssel verwendet wurde.
Konfigurieren der SSH-Schlüssel für Operator Nexus Kubernetes-Clusterknoten
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 unterschiedliche Möglichkeiten zum Bereitstellen von SSH-Schlüsseln für Clusterknoten.
- 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 Knoten auf Steuerungsebene eingefügt.
- Wenn Sie unterschiedliche SSH-Schlüssel für verschiedene Agentpools oder Knoten auf Steuerungsebene 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. Alle neuen Agentpools, die dem Cluster später ohne Schlüssel hinzugefügt werden, verwenden die clusterweiten Schlüssel. Bei Agentpools, die über einen Schlüssel verfügen, wird der bereitgestellte Schlüssel verwendet.
- 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 mit den Knoten herstellen können. Sie können später SSH-Schlüssel hinzufügen, indem Sie die Clusterkonfiguration aktualisieren. Diese Schlüssel können jedoch nicht entfernt werden, nachdem sie hinzugefügt wurden.
Im Folgenden sind die Variablen, die Sie festlegen müssen, und die Standardwerte aus dem Schnellstart, die Sie für bestimmte Variablen verwenden können, aufgeführt.
SSH_PUBLIC_KEY
: Für die clusterweiten Schlüssel. Die Verwendung von clusterweiten Schlüsseln mit Agentpoolknoten und Knoten auf Steuerungsebene hat keine Auswirkung, da die Schlüssel für die Steuerungsebene und den Agentpool anstelle der clusterweiten Schlüssel verwendet werden.CONTROL_PLANE_SSH_PUBLIC_KEY
: Für die Steuerungsebene können Sie öffentliche Schlüssel bereitstellen, die in die Knoten auf der Steuerungsebene 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 der SSH-Schlüssel für Operator Nexus Kubernetes-Clusterknoten
Sie können die SSH-Schlüssel für die Knoten in Ihrem Operator Nexus Kubernetes-Cluster nach dem Erstellen des Clusters verwalten. Es ist möglich, die SSH-Schlüssel zu aktualisieren, Sie können aber nicht alle SSH-Schlüssel aus dem Clusterknoten entfernen. 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 Sie während der Erstbereitstellung mit neuen Schlüsseln verwendet haben, oder die CLI verwenden.
Begrenzungen
- Es ist nicht möglich, SSH-Schlüssel aus den Clusterknoten zu 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 Schlüssel für den Agentpool oder die Steuerungsebene mit einem leeren Array zu aktualisieren, ist der Vorgang erfolgreich, 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, Sie können ihn jedoch nicht entfernen.
Voraussetzungen
- Stellen Sie sicher, dass Sie über die erforderlichen Berechtigungen zum Aktualisieren der Clusterkonfiguration verfügen.
- Sie müssen über die neuen SSH-Schlüssel verfügen, die Sie für die Clusterknoten verwenden möchten.
- Sie müssen über die während der Erstbereitstellung verwendete Parameterdatei oder die im CLI-Befehl verwendeten Variablen verfügen.
- Zur Verwendung dieses Leitfadens benötigen Sie einen vorhandenen Operator Nexus Kubernetes-Cluster, der mithilfe des Schnellstarts erstellt wurde.
Aktualisieren der clusterweiten SSH-Schlüssel
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 Schlüsseln für den Agentpool oder die Steuerungsebene erstellt wurde, hat dieser Vorgang keine Auswirkung. Informationen zum Aktualisieren der Schlüssel für den Agentpool oder die Steuerungsebene finden Sie in den nächsten Abschnitten.
Verwenden der Azure CLI zum Aktualisieren der clusterweiten SSH-Schlüssel
- Legen Sie die
SSH_PUBLIC_KEY
-Variable mit dem neuen SSH-Schlüssel fest.
SSH_PUBLIC_KEY="ssh-rsa CCCCC...."
- 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"
Verwenden von Azure Resource Manager (ARM) und Bicep zum Aktualisieren der clusterweiten SSH-Schlüssel
- Aktualisieren Sie den
sshPublicKeys
-Parameter inkubernetes-deploy-parameters.json
mit dem neuen SSH-Schlüssel.
"sshPublicKeys": {
"value": [
{
"keyData": "ssh-rsa CCCCC...."
}
]
}
- Stellen Sie die Vorlage erneut bereit.
ARM-Vorlage:
az deployment group create --resource-group myResourceGroup --template-file kubernetes-deploy.json --parameters @kubernetes-deploy-parameters.json
Bicep:
az deployment group create --resource-group myResourceGroup --template-file kubernetes-deploy.bicep --parameters @kubernetes-deploy-parameters.json
Aktualisieren der SSH-Schlüssel 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, werden die vorhandenen Schlüssel durch die neuen Schlüssel ersetzt.
- Wenn der Agentpool ohne Schlüssel erstellt wurde, werden die neuen Schlüssel hinzugefügt.
- Wenn der Agentpool mit clusterweiten Schlüsseln erstellt wurde, werden die vorhandenen Schlüssel durch die neuen Schlüssel ersetzt.
- 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, Sie können ihn jedoch nicht entfernen.
- Wenn Sie versuchen, die Schlüssel für den Agentpool mit einem leeren Array zu aktualisieren, ist der Vorgang erfolgreich, und stattdessen werden die clusterweiten Schlüssel verwendet.
Verwenden der Azure CLI zum Aktualisieren der SSH-Schlüssel für den Agentpool
- Legen Sie die
AGENT_POOL_KEY
-Variable mit dem neuen SSH-Schlüssel fest.
AGENT_POOL_KEY="ssh-rsa DDDDD...."
- Verwenden Sie den folgenden Befehl, um die SSH-Schlüssel für den Agentpool 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"
Verwenden der Azure ARM-Vorlage und Bicep-Datei zum Aktualisieren der SSH-Schlüssel für den Agentpool
Hinweis
Das Aktualisieren von Knotenpools, die über die anfängliche Agentpoolkonfiguration erstellt wurden, ist mit dieser Methode nicht möglich, da es keine separate Vorlage und Parameterdatei für den Agentpool gibt. 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 können Sie dem CLI-Befehl im vorherigen Abschnitt entnehmen. 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.
- Aktualisieren Sie den
agentPoolSshKeys
-Parameter inkubernetes-nodepool-parameters.json
mit dem neuen SSH-Schlüssel.
"agentPoolSshKeys": {
"value": [
{
"keyData": "ssh-rsa DDDDD...."
}
]
}
- Stellen Sie die Vorlage erneut bereit.
ARM-Vorlage:
az deployment group create --resource-group myResourceGroup --template-file kubernetes-add-agentpool.json --parameters @kubernetes-nodepool-parameters.json
Bicep:
az deployment group create --resource-group myResourceGroup --template-file kubernetes-add-agentpool.bicep --parameters @kubernetes-nodepool-parameters.json
Aktualisieren der SSH-Schlüssel für die Steuerungsebene
Verwenden Sie den folgenden Befehl, um die SSH-Schlüssel für die Steuerungsebene zu aktualisieren.
- Alle Knoten in der Steuerungsebene werden mit den neuen Schlüsseln aktualisiert.
- Wenn die Steuerungsebene mit Schlüsseln erstellt wurde, werden die vorhandenen Schlüssel durch die neuen Schlüssel ersetzt.
- Wenn die Steuerungsebene ohne Schlüssel erstellt wurde, werden die neuen Schlüssel hinzugefügt.
- Wenn die Steuerungsebene mit clusterweiten Schlüsseln erstellt wurde, werden die vorhandenen Schlüssel durch die neuen Schlüssel ersetzt.
- 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, Sie können ihn jedoch nicht entfernen.
- Wenn Sie versuchen, die Schlüssel für die Steuerungsebene mit einem leeren Array zu aktualisieren, ist der Vorgang erfolgreich, und stattdessen werden die clusterweiten Schlüssel verwendet.
Hinweis
Die Schlüssel für die Steuerungsebene können mit der für die Erstbereitstellung verwendeten Vorlage und Parameterdatei aktualisiert werden, da die Steuerungsebene Teil des Clusters ist. Da der Agentpool eine Unterressource ist, können Schlüssel für den Agentpool jedoch nicht auf diese Weise aktualisiert werden, es sei denn, der Agentpool verwendet clusterweite Schlüssel.
Verwenden der Azure CLI zum Aktualisieren der SSH-Schlüssel für die Steuerungsebene
- Legen Sie die
CONTROL_PLANE_SSH_PUBLIC_KEY
-Variable mit dem neuen SSH-Schlüssel fest.
CONTROL_PLANE_SSH_PUBLIC_KEY="ssh-rsa EEEEE...."
- Verwenden Sie den folgenden Befehl, um die SSH-Schlüssel für die Steuerungsebene 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']"
Verwenden der Azure ARM-Vorlage und Bicep-Datei zum Aktualisieren der SSH-Schlüssel für die Steuerungsebene
- Aktualisieren Sie den
controlPlaneSshKeys
-Parameter inkubernetes-deploy-parameters.json
mit dem neuen SSH-Schlüssel.
"controlPlaneSshKeys": {
"value": [
{
"keyData": "ssh-rsa EEEEE...."
}
]
}
- Stellen Sie die Vorlage erneut bereit.
ARM-Vorlage:
az deployment group create --resource-group myResourceGroup --template-file kubernetes-deploy.json --parameters @kubernetes-deploy-parameters.json
Bicep:
az deployment group create --resource-group myResourceGroup --template-file kubernetes-deploy.bicep --parameters @kubernetes-deploy-parameters.json
Nächste Schritte
Wenn Sie wissen, wie Sie SSH-Schlüssel auf Ihren Operator Nexus Kubernetes-Clusterknoten konfigurieren und verwalten, können Sie sicherstellen, dass Ihr Cluster sicher ist und dass Sie zur Problembehandlung auf die Knoten zugreifen können.