共用方式為


在 Azure 操作員 Nexus Kubernetes 叢集節點上設定和管理 SSH 金鑰

本文說明如何在 Nexus Kubernetes 代理程式集區和控制平面節點上設定和管理 SSH 金鑰。 SSH 金鑰提供安全的方法,可讓您存取叢集中的這些節點。

必要條件

在繼續進行本操作指南之前,建議您:

  • 如需相關的完整概觀和步驟,請參閱操作員 Nexus Kubernetes 叢集 快速入門指南
  • 請確定您符合快速入門中概述的必要條件,以確保指南的順利實作。

注意

本指南假設您已經有使用快速入門指南建立的現有操作員 Nexus Kubernetes 叢集,而且您可以存取快速入門中用來更新 SSH 密鑰的 CLI、ARM 範本或 Bicep。

設定操作員 Nexus Kubernetes 叢集節點 SSH 金鑰

設定操作員 Nexus Kubernetes 叢集時,您必須為叢集中的節點提供 SSH 金鑰。 SSH 金鑰提供安全的方法,可讓您存取叢集中的這些節點。

有幾種不同的方式可為叢集節點提供 SSH 金鑰。

  • 如果您要針對叢集中的所有節點使用相同的 SSH 金鑰,您可以在建立叢集時提供公鑰陣。 這些索引鍵會插入所有代理程式集區節點和控制平面節點。
  • 如果您要針對不同的代理程式集區或控制平面節點使用不同的SSH 金鑰,您可以為每個集區提供唯一的公鑰,讓您更細微地管理 SSH 存取,這會覆寫整個叢集的金鑰。 任何新的代理程式集區稍後都會新增至叢集,而不使用索引鍵,如果叢集具有密鑰,則會使用提供的密鑰。
  • 如果您在建立叢集時未提供任何 SSH 金鑰,則不會將 SSH 金鑰插入節點中。 這表示用戶無法透過 SSH 連線到節點。 您稍後可以藉由更新叢集組態來新增 SSH 金鑰,但無法移除新增這些金鑰。

以下是您需要設定的變數,以及可用於特定變數的 快速入門指南 預設值。

  • SSH_PUBLIC_KEY - 針對叢集寬金鑰。 使用叢集寬密鑰搭配代理程式集區和控制平面密鑰並沒有任何作用,因為使用控制平面和代理程式集區索引鍵,而不是叢集寬密鑰。
  • CONTROL_PLANE_SSH_PUBLIC_KEY - 針對控制平面,您可以提供插入控制平面節點的公鑰。
  • INITIAL_AGENT_POOL_SSH_PUBLIC_KEY - 針對每個代理程式集區,您可以提供插入該集區中節點的公鑰。
    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}"

管理操作員 Nexus Kubernetes 叢集節點 SSH 金鑰

您可以在建立叢集之後,管理操作員 Nexus Kubernetes 叢集中節點的 SSH 金鑰。 可以更新 SSH 金鑰,但從叢集節點移除所有 SSH 金鑰不是選項。 相反地,提供的任何新金鑰都會取代所有現有的金鑰。

若要更新 SSH 金鑰,您可以使用新的金鑰,套用初始部署期間所使用的相同 Bicep/ARM 組態,或使用 CLI。

限制

  • 您無法從叢集節點移除 SSH 金鑰。 您只能使用新的金鑰來更新它們。
  • 如果您嘗試以空陣語更新叢集寬密鑰,作業會成功,但現有的密鑰會保持不變。
  • 如果您嘗試使用空陣列來更新代理程式集區索引鍵或控制平面,作業會成功,而且會改用叢集寬密鑰。
  • 如果您嘗試更新在沒有任何金鑰的情況下建立之叢集的金鑰,則會新增新的金鑰,但無法移除它。

開始之前

  • 請確定您具有更新叢集組態的必要許可權。
  • 您有想要用於叢集節點的新 SSH 金鑰。
  • 您在初始部署期間使用參數檔案,或 CLI 命令中使用的變數。
  • 若要使用本指南,您必須具有使用快速入門指南建立的現有操作員 Nexus Kubernetes 叢集。

更新整個叢集的 SSH 金鑰

使用下列命令來更新叢集範圍 SSH 金鑰,這些金鑰用於叢集中的所有節點。 現有的索引鍵會取代為新的索引鍵。

注意

只有當叢集是以全叢集索引鍵建立時,才能運作。 如果叢集是使用代理程式集區或控制平面索引鍵建立的,此作業就沒有作用。 請參閱下一節來更新代理程式集區或控制平面密鑰。

用來更新叢集寬 SSH 金鑰的 Azure CLI

  1. SSH_PUBLIC_KEY使用新的 SSH 金鑰設定變數。
SSH_PUBLIC_KEY="ssh-rsa CCCCC...."
  1. 使用下列命令來更新整個叢集的 SSH 金鑰。
az networkcloud kubernetescluster update --name "$CLUSTER_NAME" --resource-group "$RESOURCE_GROUP" --subscription "$SUBSCRIPTION_ID" --ssh-key-values "$SSH_PUBLIC_KEY"

Azure Resource Manager (ARM) 和 Bicep 更新叢集寬 SSH 密鑰

  1. sshPublicKeys使用新的 SSH 金鑰更新 中的 kubernetes-deploy-parameters.json 參數。
    "sshPublicKeys": {
      "value": [
        {
          "keyData": "ssh-rsa CCCCC...."
        }
      ]
    }
  1. 重新部署範本。

針對 ARM 範本:

    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

更新代理程式集區 SSH 金鑰

使用下列命令來更新特定代理程式集區的 SSH 金鑰。

  • 代理程式集區中的所有節點都會以新的金鑰更新。
  • 如果代理程式集區是使用索引鍵建立的,新的金鑰會取代現有的密鑰。
  • 如果代理程式集區建立時沒有索引鍵,則會新增新的密鑰。
  • 如果代理程式集區是使用叢集寬密鑰建立的,新的金鑰會取代現有的密鑰。
  • 如果您嘗試更新在沒有任何金鑰的情況下建立之叢集的金鑰,則會新增新的金鑰,但無法移除它。
  • 如果您嘗試使用空陣列來更新代理程式集區密鑰,作業會成功,而會改用叢集寬密鑰。

用來更新代理程式集區 SSH 金鑰的 Azure CLI

  1. AGENT_POOL_KEY使用新的 SSH 金鑰設定變數。
AGENT_POOL_KEY="ssh-rsa DDDDD...."
  1. 使用下列命令來更新代理程式集區 SSH 金鑰。
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 樣本和 Bicep 以更新代理程式集區 SSH 金鑰

注意

使用此方法無法更新透過初始代理程式集區組態建立的節點集區,因為沒有個別的代理程式集區範本和參數檔案。 只有叢集建立之後所建立集區的代理程式集區密鑰,才能使用此方法更新。 若要更新初始代理程式集區的金鑰,請參閱上一節中提供的 CLI 命令。 如果初始代理程式集區是使用叢集寬密鑰建立的,而且如果您想要更新初始代理程式集區的金鑰,則可以更新整個叢集的密鑰。

  1. agentPoolSshKeys使用新的 SSH 金鑰更新 中的 kubernetes-nodepool-parameters.json 參數。
    "agentPoolSshKeys": {
      "value": [
        {
          "keyData": "ssh-rsa DDDDD...."
        }
      ]
    }
  1. 重新部署範本。

針對 ARM 範本:

    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

更新控制平面 SSH 金鑰

使用下列命令來更新控制平面的 SSH 金鑰。

  • 控制平面中的所有節點都會以新的索引鍵更新。
  • 如果使用索引鍵建立控制平面,新的索引鍵會取代現有的索引鍵。
  • 如果控制平面未建立索引鍵,則會新增新的索引鍵。
  • 如果使用叢集寬鍵建立控制平面,新的索引鍵會取代現有的索引鍵。
  • 如果您嘗試更新在沒有任何金鑰的情況下建立之叢集的金鑰,則會新增新的金鑰,但無法移除它。
  • 如果您嘗試使用空陣列來更新控制平面索引鍵,作業會成功,並改用叢集寬鍵。

注意

控制平面索引鍵可以使用初始部署範本和參數檔案來更新,因為控制平面是叢集的一部分。 不過,代理程式集區密鑰無法以相同方式更新,因為代理程式集區是子資源,除非代理程式集區使用叢集寬密鑰。

用來更新控制平面 SSH 金鑰的 Azure CLI

  1. CONTROL_PLANE_SSH_PUBLIC_KEY使用新的 SSH 金鑰設定變數。
CONTROL_PLANE_SSH_PUBLIC_KEY="ssh-rsa EEEEE...."
  1. 使用下列命令來更新控制平面 SSH 金鑰。
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 樣本和 Bicep 以更新控制平面 SSH 金鑰

  1. controlPlaneSshKeys使用新的 SSH 金鑰更新 中的 kubernetes-deploy-parameters.json 參數。
    "controlPlaneSshKeys": {
      "value": [
        {
          "keyData": "ssh-rsa EEEEE...."
        }
      ]
    }
  1. 重新部署範本。

針對 ARM 範本:

    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

下一步

藉由瞭解如何在操作員 Nexus Kubernetes 叢集節點上設定和管理 SSH 金鑰,您可以確定叢集是安全的,而且您可以在需要疑難解答問題時存取節點。