Condividi tramite


Configurare e gestire le chiavi SSH nei nodi del cluster Nexus Kubernetes dell'operatore di Azure

Questo articolo descrive come configurare e gestire la chiave SSH nei nodi del pool di agenti Nexus Kubernetes e del piano di controllo. Le chiavi SSH forniscono un metodo sicuro per accedere a questi nodi nel cluster.

Prerequisiti

Prima di procedere con questa guida pratica, è consigliabile:

  • Per una panoramica completa e i passaggi necessari, vedere la Guida introduttiva al cluster Nexus Kubernetes.
  • Assicurarsi di soddisfare i prerequisiti descritti nella guida introduttiva per garantire un'implementazione uniforme della guida.

Nota

In questa guida si presuppone che sia già disponibile un cluster Operator Nexus Kubernetes creato usando la guida introduttiva e che sia possibile accedere all'interfaccia della riga di comando, al modello arm o a Bicep usato nella guida introduttiva per aggiornare le chiavi SSH.

Configurare le chiavi SSH del nodo del cluster Nexus Nexus Kubernetes

Quando si configura un cluster Operator Nexus Kubernetes, è necessario fornire chiavi SSH per i nodi nel cluster. Le chiavi SSH forniscono un metodo sicuro per accedere a questi nodi nel cluster.

Esistono diversi modi per fornire chiavi SSH per i nodi del cluster.

  • Se si vuole usare la stessa chiave SSH per tutti i nodi del cluster, è possibile fornire una matrice di chiavi pubbliche quando si crea il cluster. Queste chiavi vengono inserite in tutti i nodi del pool di agenti e i nodi del piano di controllo.
  • Se si vogliono usare chiavi SSH diverse per pool di agenti o nodi del piano di controllo diversi, è possibile fornire una chiave pubblica univoca per ogni pool, consentendo di gestire l'accesso SSH in modo più granulare, ignorando le chiavi a livello di cluster. Qualsiasi nuovo pool di agenti viene aggiunto al cluster in un secondo momento senza chiavi che usano le chiavi a livello di cluster, se ha la chiave, usa la chiave fornita.
  • Se non si forniscono chiavi SSH durante la creazione del cluster, non vengono inserite chiavi SSH nei nodi. Ciò significa che gli utenti non possono accedere tramite SSH ai nodi. È possibile aggiungere chiavi SSH in un secondo momento aggiornando la configurazione del cluster, ma non è possibile rimuovere tali chiavi dopo l'aggiunta.

Di seguito sono riportate le variabili da impostare, insieme ai valori predefiniti della Guida introduttiva che è possibile usare per determinate variabili.

  • SSH_PUBLIC_KEY - Per le chiavi a livello di cluster. L'uso della chiave a livello di cluster con le chiavi del pool di agenti e del piano di controllo non ha alcun effetto perché vengono usate le chiavi del piano di controllo e del pool di agenti anziché le chiavi a livello di cluster.
  • CONTROL_PLANE_SSH_PUBLIC_KEY - Per il piano di controllo, è possibile fornire chiavi pubbliche inserite nei nodi del piano di controllo.
  • INITIAL_AGENT_POOL_SSH_PUBLIC_KEY - Per ogni pool di agenti, è possibile fornire chiavi pubbliche inserite nei nodi del 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}"

Gestire le chiavi SSH del nodo del cluster Nexus Nexus Kubernetes

È possibile gestire le chiavi SSH per i nodi nel cluster Operator Nexus Kubernetes dopo la creazione del cluster. L'aggiornamento delle chiavi SSH è possibile, ma la rimozione di tutte le chiavi SSH dal nodo del cluster non è un'opzione. Le nuove chiavi fornite sostituiranno invece tutte le chiavi esistenti.

Per aggiornare le chiavi SSH, è possibile applicare la stessa configurazione bicep/ARM usata durante la distribuzione iniziale con nuove chiavi o usare l'interfaccia della riga di comando.

Limiti

  • Non è possibile rimuovere le chiavi SSH dai nodi del cluster. È possibile aggiornarli solo con nuove chiavi.
  • Se si tenta di aggiornare la chiave a livello di cluster con una matrice vuota, l'operazione ha esito positivo, ma le chiavi esistenti rimangono invariate.
  • Se si tenta di aggiornare le chiavi del pool di agenti o il piano di controllo con una matrice vuota, l'operazione ha esito positivo e vengono invece usate le chiavi a livello di cluster.
  • Se si tenta di aggiornare le chiavi per un cluster creato senza chiavi, la nuova chiave viene aggiunta, ma non è possibile rimuoverla.

Operazioni preliminari

  • Assicurarsi di disporre delle autorizzazioni necessarie per aggiornare la configurazione del cluster.
  • Sono disponibili le nuove chiavi SSH da usare per i nodi del cluster.
  • Il file dei parametri viene usato durante la distribuzione iniziale o le variabili usate nel comando dell'interfaccia della riga di comando.
  • Per usare questa guida, è necessario disporre di un cluster Operator Nexus Kubernetes esistente creato usando la guida introduttiva.

Aggiornare le chiavi SSH a livello di cluster

Usare il comando seguente per aggiornare le chiavi SSH a livello di cluster, usate per tutti i nodi del cluster. Le chiavi esistenti vengono sostituite con le nuove chiavi.

Nota

Questa operazione funziona solo se il cluster è stato creato con chiavi a livello di cluster. Se il cluster è stato creato con chiavi del pool di agenti o del piano di controllo, questa operazione non ha alcun effetto. Fare riferimento alle sezioni successive per aggiornare le chiavi del pool di agenti o del piano di controllo.

Interfaccia della riga di comando di Azure per aggiornare le chiavi SSH a livello di cluster

  1. Impostare la SSH_PUBLIC_KEY variabile con la nuova chiave SSH.
SSH_PUBLIC_KEY="ssh-rsa CCCCC...."
  1. Usare il comando seguente per aggiornare le chiavi SSH a livello di 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) e Bicep per aggiornare le chiavi SSH a livello di cluster

  1. Aggiornare il sshPublicKeys parametro in kubernetes-deploy-parameters.json con la nuova chiave SSH.
    "sshPublicKeys": {
      "value": [
        {
          "keyData": "ssh-rsa CCCCC...."
        }
      ]
    }
  1. Ridistribuire il modello.

Per il modello di Resource Manager:

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

Per Bicep:

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

Aggiornare le chiavi SSH del pool di agenti

Usare il comando seguente per aggiornare le chiavi SSH per un pool di agenti specifico.

  • Tutti i nodi nel pool di agenti verranno aggiornati con le nuove chiavi.
  • Se il pool di agenti è stato creato con le chiavi, le nuove chiavi sostituiscono le chiavi esistenti.
  • Se il pool di agenti è stato creato senza chiavi, vengono aggiunte le nuove chiavi.
  • Se il pool di agenti è stato creato con chiavi a livello di cluster, le nuove chiavi sostituiscono le chiavi esistenti.
  • Se si tenta di aggiornare le chiavi per un cluster creato senza chiavi, la nuova chiave viene aggiunta, ma non è possibile rimuoverla.
  • Se si tenta di aggiornare le chiavi del pool di agenti con una matrice vuota, l'operazione ha esito positivo e vengono usate le chiavi a livello di cluster.

Interfaccia della riga di comando di Azure per aggiornare le chiavi SSH del pool di agenti

  1. Impostare la AGENT_POOL_KEY variabile con la nuova chiave SSH.
AGENT_POOL_KEY="ssh-rsa DDDDD...."
  1. Usare il comando seguente per aggiornare le chiavi SSH del pool di agenti.
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"

Modello di Azure Resource Manager e Bicep per aggiornare le chiavi SSH del pool di agenti

Nota

L'aggiornamento dei pool di nodi creati tramite la configurazione iniziale del pool di agenti non è possibile con questo metodo, perché non esiste un modello di pool di agenti e un file di parametri separati. È possibile aggiornare solo le chiavi del pool di agenti per i pool creati dopo la creazione del cluster usando questo metodo. Per aggiornare le chiavi per il pool di agenti iniziale, vedere il comando dell'interfaccia della riga di comando fornito nella sezione precedente. Se il pool di agenti iniziale è stato creato con chiavi a livello di cluster e se si desidera aggiornare le chiavi per il pool di agenti iniziale, è possibile aggiornare le chiavi a livello di cluster.

  1. Aggiornare il agentPoolSshKeys parametro in kubernetes-nodepool-parameters.json con la nuova chiave SSH.
    "agentPoolSshKeys": {
      "value": [
        {
          "keyData": "ssh-rsa DDDDD...."
        }
      ]
    }
  1. Ridistribuire il modello.

Per il modello di Resource Manager:

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

Per Bicep:

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

Aggiornare le chiavi SSH del piano di controllo

Usare il comando seguente per aggiornare le chiavi SSH per il piano di controllo.

  • Tutti i nodi nel piano di controllo verranno aggiornati con le nuove chiavi.
  • Se il piano di controllo è stato creato con le chiavi, le nuove chiavi sostituiscono le chiavi esistenti.
  • Se il piano di controllo è stato creato senza chiavi, vengono aggiunte le nuove chiavi.
  • Se il piano di controllo è stato creato con chiavi a livello di cluster, le nuove chiavi sostituiscono le chiavi esistenti.
  • Se si tenta di aggiornare le chiavi per un cluster creato senza chiavi, la nuova chiave viene aggiunta, ma non è possibile rimuoverla.
  • Se si tenta di aggiornare le chiavi del piano di controllo con una matrice vuota, l'operazione ha esito positivo e vengono invece usate le chiavi a livello di cluster.

Nota

Le chiavi del piano di controllo possono essere aggiornate usando il modello di distribuzione iniziale e il file di parametri, poiché il piano di controllo fa parte del cluster. Tuttavia, le chiavi del pool di agenti non possono essere aggiornate nello stesso modo, poiché il pool di agenti è una sotto-risorsa, a meno che il pool di agenti non usi chiavi a livello di cluster.

Interfaccia della riga di comando di Azure per aggiornare le chiavi SSH del piano di controllo

  1. Impostare la CONTROL_PLANE_SSH_PUBLIC_KEY variabile con la nuova chiave SSH.
CONTROL_PLANE_SSH_PUBLIC_KEY="ssh-rsa EEEEE...."
  1. Usare il comando seguente per aggiornare le chiavi SSH del piano di controllo.
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']"

Modello di Azure RESOURCE Manager e Bicep per aggiornare le chiavi SSH del piano di controllo

  1. Aggiornare il controlPlaneSshKeys parametro in kubernetes-deploy-parameters.json con la nuova chiave SSH.
    "controlPlaneSshKeys": {
      "value": [
        {
          "keyData": "ssh-rsa EEEEE...."
        }
      ]
    }
  1. Ridistribuire il modello.

Per il modello di Resource Manager:

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

Per Bicep:

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

Passaggi successivi

Comprendendo come configurare e gestire le chiavi SSH nei nodi del cluster Operator Nexus Kubernetes, è possibile assicurarsi che il cluster sia sicuro e che sia possibile accedere ai nodi quando è necessario risolvere i problemi.