Dela via


Konfigurera och hantera SSH-nycklar på Azure Operator Nexus Kubernetes-klusternoder

Den här artikeln beskriver hur du konfigurerar och hanterar SSH-nyckeln på nexus Kubernetes-agentpoolen och styr plannoder. SSH-nycklar ger en säker metod för att komma åt dessa noder i klustret.

Förutsättningar

Innan du fortsätter med den här guiden rekommenderar vi att du:

  • I snabbstartsguiden för Operator Nexus Kubernetes-kluster finns en omfattande översikt och steg.
  • Se till att du uppfyller de angivna förutsättningarna i snabbstarten för att säkerställa en smidig implementering av guiden.

Kommentar

Den här guiden förutsätter att du redan har ett befintligt Operator Nexus Kubernetes-kluster som skapades med hjälp av snabbstartsguiden och att du har åtkomst till antingen CLI, ARM-mallen eller Bicep som används i snabbstarten för att uppdatera SSH-nycklarna.

Konfigurera SSH-nycklar för Operator Nexus Kubernetes-klusternod

När du konfigurerar ett Operator Nexus Kubernetes-kluster måste du ange SSH-nycklar för noderna i klustret. SSH-nycklar ger en säker metod för att komma åt dessa noder i klustret.

Det finns några olika sätt att ange SSH-nycklar för dina klusternoder.

  • Om du vill använda samma SSH-nyckel för alla noder i klustret kan du ange en matris med offentliga nycklar när du skapar klustret. Dessa nycklar infogas i alla agentpoolnoder och kontrollplansnoder.
  • Om du vill använda olika SSH-nycklar för olika agentpooler eller kontrollplansnoder kan du ange en unik offentlig nyckel för varje pool, vilket gör att du kan hantera SSH-åtkomst mer detaljerat, detta åsidosätter klustrets breda nycklar. Alla nya agentpooler läggs till i klustret senare utan nycklar använder klustrets breda nycklar, om den har nyckeln använder den angivna nyckeln.
  • Om du inte anger några SSH-nycklar när du skapar klustret infogas inga SSH-nycklar i noderna. Det innebär att användarna inte kan SSH till noderna. Du kan lägga till SSH-nycklar senare genom att uppdatera klusterkonfigurationen, men kan inte ta bort nycklarna när de har lagts till.

Följande är de variabler som du behöver ange, tillsammans med standardvärdena för snabbstartsguiden som du kan använda för vissa variabler.

  • SSH_PUBLIC_KEY – För klustrets breda nycklar. Att använda klusteromfattande nyckel med agentpool och kontrollplansnycklar har ingen effekt eftersom kontrollplanet och agentpoolnycklarna används i stället för klusteromfattande nycklar.
  • CONTROL_PLANE_SSH_PUBLIC_KEY – För kontrollplanet kan du ange offentliga nycklar som infogas i kontrollplanets noder.
  • INITIAL_AGENT_POOL_SSH_PUBLIC_KEY – För varje agentpool kan du ange offentliga nycklar som infogas i noderna i poolen.
    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}"

Hantera SSH-nycklar för Operator Nexus Kubernetes-klusternod

Du kan hantera SSH-nycklarna för noderna i ditt Operator Nexus Kubernetes-kluster när klustret har skapats. Det är möjligt att uppdatera SSH-nycklarna, men att ta bort alla SSH-nycklar från klusternoden är inte ett alternativ. I stället ersätter alla nya nycklar som tillhandahålls alla befintliga nycklar.

Om du vill uppdatera SSH-nycklarna kan du använda samma Bicep/ARM-konfiguration som användes under den första distributionen med nya nycklar eller använda CLI.

Begränsningar

  • Du kan inte ta bort SSH-nycklar från klusternoderna. Du kan bara uppdatera dem med nya nycklar.
  • Om du försöker uppdatera klusterbreddsnyckeln med en tom matris lyckas åtgärden, men de befintliga nycklarna förblir oförändrade.
  • Om du försöker uppdatera agentpoolnycklarna eller kontrollplanet med en tom matris lyckas åtgärden och de klusteromfattande nycklarna används i stället.
  • Om du försöker uppdatera nycklarna för ett kluster som har skapats utan nycklar läggs den nya nyckeln till, men du kan inte ta bort den.

Innan du börjar

  • Se till att du har de behörigheter som krävs för att uppdatera klusterkonfigurationen.
  • Du har de nya SSH-nycklar som du vill använda för klusternoderna.
  • Du har den parameterfil som användes under den inledande distributionen eller variablerna som används i CLI-kommandot.
  • Om du vill använda den här guiden måste du ha ett befintligt Operator Nexus Kubernetes-kluster som skapades med hjälp av snabbstartsguiden.

Uppdatera klusteromfattande SSH-nycklar

Använd följande kommando för att uppdatera klustrets breda SSH-nycklar, som används för alla noder i klustret. De befintliga nycklarna ersätts med de nya nycklarna.

Kommentar

Detta fungerar bara om klustret har skapats med klusteromfattande nycklar. Om klustret skapades med agentpoolen eller kontrollplansnycklarna har den här åtgärden ingen effekt. Se nästa avsnitt för att uppdatera agentpoolen eller kontrollplansnycklarna.

Azure CLI för att uppdatera klusteromfattande SSH-nycklar

  1. Ange variabeln SSH_PUBLIC_KEY med den nya SSH-nyckeln.
SSH_PUBLIC_KEY="ssh-rsa CCCCC...."
  1. Använd följande kommando för att uppdatera klustrets breda SSH-nycklar.
az networkcloud kubernetescluster update --name "$CLUSTER_NAME" --resource-group "$RESOURCE_GROUP" --subscription "$SUBSCRIPTION_ID" --ssh-key-values "$SSH_PUBLIC_KEY"

Azure Resource Manager (ARM) och Bicep för att uppdatera klusteromfattande SSH-nycklar

  1. Uppdatera parametern sshPublicKeys i kubernetes-deploy-parameters.json med den nya SSH-nyckeln.
    "sshPublicKeys": {
      "value": [
        {
          "keyData": "ssh-rsa CCCCC...."
        }
      ]
    }
  1. Distribuera om mallen.

För ARM-mall:

    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

Uppdatera SSH-nycklar för agentpool

Använd följande kommando för att uppdatera SSH-nycklarna för en specifik agentpool.

  • Alla noder i agentpoolen uppdateras med de nya nycklarna.
  • Om agentpoolen skapades med nycklar ersätter de nya nycklarna de befintliga nycklarna.
  • Om agentpoolen skapades utan nycklar läggs de nya nycklarna till.
  • Om agentpoolen skapades med klusteromfattande nycklar ersätter de nya nycklarna de befintliga nycklarna.
  • Om du försöker uppdatera nycklarna för ett kluster som har skapats utan nycklar läggs den nya nyckeln till, men du kan inte ta bort den.
  • Om du försöker uppdatera agentpoolnycklarna med en tom matris lyckas åtgärden och de klusteromfattande nycklarna används i stället.

Azure CLI för att uppdatera agentpoolens SSH-nycklar

  1. Ange variabeln AGENT_POOL_KEY med den nya SSH-nyckeln.
AGENT_POOL_KEY="ssh-rsa DDDDD...."
  1. Använd följande kommando för att uppdatera agentpoolens SSH-nycklar.
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-mall och Bicep för att uppdatera agentpoolens SSH-nycklar

Kommentar

Det går inte att uppdatera nodpooler som skapats via den inledande agentpoolkonfigurationen med den här metoden, eftersom det inte finns någon separat agentpoolmall och parameterfil. Endast agentpoolnycklarna för pooler som skapas när klustret har skapats kan uppdateras med den här metoden. Information om hur du uppdaterar nycklarna för den första agentpoolen finns i CLI-kommandot som angavs i föregående avsnitt. Om den första agentpoolen skapades med klusteromfattande nycklar, och om du vill uppdatera nycklarna för den första agentpoolen, kan du uppdatera klustrets breda nycklar.

  1. Uppdatera parametern agentPoolSshKeys i kubernetes-nodepool-parameters.json med den nya SSH-nyckeln.
    "agentPoolSshKeys": {
      "value": [
        {
          "keyData": "ssh-rsa DDDDD...."
        }
      ]
    }
  1. Distribuera om mallen.

För ARM-mall:

    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

Uppdatera SSH-nycklar för kontrollplan

Använd följande kommando för att uppdatera SSH-nycklarna för kontrollplanet.

  • Alla noder i kontrollplanet uppdateras med de nya nycklarna.
  • Om kontrollplanet skapades med nycklar ersätter de nya nycklarna de befintliga nycklarna.
  • Om kontrollplanet skapades utan nycklar läggs de nya nycklarna till.
  • Om kontrollplanet skapades med klusteromfattande nycklar ersätter de nya nycklarna de befintliga nycklarna.
  • Om du försöker uppdatera nycklarna för ett kluster som har skapats utan nycklar läggs den nya nyckeln till, men du kan inte ta bort den.
  • Om du försöker uppdatera kontrollplansnycklarna med en tom matris lyckas åtgärden och de klusteromfattande nycklarna används i stället.

Kommentar

Kontrollplansnycklarna kan uppdateras med hjälp av den inledande distributionsmallen och parameterfilen, eftersom kontrollplanet är en del av klustret. Agentpoolnycklar kan dock inte uppdateras på samma sätt, eftersom agentpoolen är en underresurs, såvida inte agentpoolen använder klusteromfattande nycklar.

Azure CLI för att uppdatera SSH-nycklar för kontrollplan

  1. Ange variabeln CONTROL_PLANE_SSH_PUBLIC_KEY med den nya SSH-nyckeln.
CONTROL_PLANE_SSH_PUBLIC_KEY="ssh-rsa EEEEE...."
  1. Använd följande kommando för att uppdatera kontrollplanets SSH-nycklar.
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-mall och Bicep för att uppdatera SSH-nycklar för kontrollplan

  1. Uppdatera parametern controlPlaneSshKeys i kubernetes-deploy-parameters.json med den nya SSH-nyckeln.
    "controlPlaneSshKeys": {
      "value": [
        {
          "keyData": "ssh-rsa EEEEE...."
        }
      ]
    }
  1. Distribuera om mallen.

För ARM-mall:

    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ästa steg

Genom att förstå hur du konfigurerar och hanterar SSH-nycklar på operatorn Nexus Kubernetes-klusternoder kan du se till att klustret är säkert och att du kan komma åt noderna när du behöver felsöka problem.