Partilhar via


Configurar e gerenciar chaves SSH em nós de cluster do Azure Operator Nexus Kubernetes

Este artigo descreve como configurar e gerenciar a chave SSH no pool de agentes do Nexus Kubernetes e nos nós do plano de controle. As chaves SSH fornecem um método seguro de acessar esses nós em seu cluster.

Pré-requisitos

Antes de prosseguir com este guia de instruções, é recomendável que você:

  • Consulte o guia de início rápido do cluster Operator Nexus Kubernetes para obter uma visão geral abrangente e as etapas envolvidas.
  • Certifique-se de atender aos pré-requisitos descritos no início rápido para garantir a implementação suave do guia.

Nota

Este guia pressupõe que você já tenha um cluster Operator Nexus Kubernetes existente que foi criado usando o guia de início rápido e que tenha acesso à CLI, modelo ARM ou Bicep usado no início rápido para atualizar as chaves SSH.

Configurar chaves SSH do nó de cluster do Operador Nexus Kubernetes

Ao configurar um cluster Kubernetes do Operator Nexus, você precisa fornecer chaves SSH para os nós no cluster. As chaves SSH fornecem um método seguro de acessar esses nós em seu cluster.

Há algumas maneiras diferentes de fornecer chaves SSH para os nós do cluster.

  • Se quiser usar a mesma chave SSH para todos os nós do cluster, você pode fornecer uma matriz de chaves públicas ao criar o cluster. Essas chaves são inseridas em todos os nós do pool de agentes e nos nós do plano de controle.
  • Se você quiser usar chaves SSH diferentes para diferentes pools de agentes ou nós de plano de controle, você pode fornecer uma chave pública exclusiva para cada pool, permite que você gerencie o acesso SSH de forma mais granular, isso substitui as chaves amplas do cluster. Qualquer novo pool de agentes é adicionado ao cluster mais tarde sem chaves use as chaves wide do cluster, se tiver chave, então ele usa a chave fornecida.
  • Se você não fornecer nenhuma chave SSH ao criar seu cluster, nenhuma chave SSH será inserida nos nós. Isso significa que os usuários não podem SSH nos nós. Você pode adicionar chaves SSH posteriormente atualizando a configuração do cluster, mas não pode remover essas chaves depois de adicionadas.

A seguir estão as variáveis que você precisa definir, juntamente com os valores padrão do guia QuickStart que você pode usar para determinadas variáveis.

  • SSH_PUBLIC_KEY - Para as teclas largas do cluster. O uso da chave ampla do cluster com o pool de agentes e as chaves do plano de controle não tem nenhum efeito, pois as chaves do plano de controle e do pool de agentes são usadas em vez das chaves amplas do cluster.
  • CONTROL_PLANE_SSH_PUBLIC_KEY - Para o plano de controle, você pode fornecer chaves públicas que são inseridas nos nós do plano de controle.
  • INITIAL_AGENT_POOL_SSH_PUBLIC_KEY - Para cada pool de agentes, você pode fornecer chaves públicas que são inseridas nos nós desse 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}"

Gerenciar chaves SSH do nó do cluster Nexus Kubernetes do operador

Você pode gerenciar as chaves SSH para os nós em seu cluster Operator Nexus Kubernetes após a criação do cluster. Atualizar as chaves SSH é possível, mas remover todas as chaves SSH do nó do cluster não é uma opção. Em vez disso, quaisquer novas chaves fornecidas substituirão todas as chaves existentes.

Para atualizar as chaves SSH, você pode aplicar a mesma configuração Bicep/ARM usada durante a implantação inicial com novas chaves ou usar a CLI.

Limitações

  • Não é possível remover chaves SSH dos nós do cluster. Você só pode atualizá-los com novas chaves.
  • Se você tentar atualizar a chave ampla do cluster com uma matriz vazia, a operação será bem-sucedida, mas as chaves existentes permanecerão inalteradas.
  • Se você tentar atualizar as chaves do pool de agentes ou o plano de controle com uma matriz vazia, a operação será bem-sucedida e as chaves amplas do cluster serão usadas.
  • Se você tentar atualizar as chaves de um cluster que foi criado sem nenhuma chave, a nova chave será adicionada, mas não será possível removê-la.

Antes de começar

  • Verifique se você tem as permissões necessárias para atualizar a configuração do cluster.
  • Você tem as novas chaves SSH que deseja usar para os nós do cluster.
  • Você tem o arquivo de parâmetros usado durante a implantação inicial ou as variáveis usadas no comando CLI.
  • Para usar este guia, você deve ter um cluster Operator Nexus Kubernetes existente que foi criado usando o guia de início rápido.

Atualizar chaves SSH em todo o cluster

Use o comando a seguir para atualizar as chaves SSH de todo o cluster, que são usadas para todos os nós no cluster. As chaves existentes são substituídas pelas novas chaves.

Nota

Isso funciona somente se o cluster foi criado com teclas amplas do cluster. Se o cluster foi criado com pool de agentes ou chaves de plano de controle, essa operação não terá efeito. Consulte as próximas seções para atualizar o pool de agentes ou as chaves do plano de controle.

CLI do Azure para atualizar chaves SSH em todo o cluster

  1. Defina a SSH_PUBLIC_KEY variável com a nova chave SSH.
SSH_PUBLIC_KEY="ssh-rsa CCCCC...."
  1. Use o comando a seguir para atualizar as chaves SSH de todo o 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 para atualizar chaves SSH em todo o cluster

  1. Atualize o sshPublicKeys parâmetro com kubernetes-deploy-parameters.json a nova chave SSH.
    "sshPublicKeys": {
      "value": [
        {
          "keyData": "ssh-rsa CCCCC...."
        }
      ]
    }
  1. Reimplante o modelo.

Para o modelo ARM:

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

Para o bíceps:

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

Atualizar chaves SSH do pool de agentes

Use o comando a seguir para atualizar as chaves SSH para um pool de agentes específico.

  • Todos os nós no pool de agentes serão atualizados com as novas chaves.
  • Se o pool de agentes foi criado com chaves, as novas chaves substituem as chaves existentes.
  • Se o pool de agentes foi criado sem chaves, as novas chaves são adicionadas.
  • Se o pool de agentes foi criado com chaves amplas do cluster, as novas chaves substituem as chaves existentes.
  • Se você tentar atualizar as chaves de um cluster que foi criado sem nenhuma chave, a nova chave será adicionada, mas não será possível removê-la.
  • Se você tentar atualizar as chaves do pool de agentes com uma matriz vazia, a operação será bem-sucedida e as chaves amplas do cluster serão usadas.

CLI do Azure para atualizar chaves SSH do pool de agentes

  1. Defina a AGENT_POOL_KEY variável com a nova chave SSH.
AGENT_POOL_KEY="ssh-rsa DDDDD...."
  1. Use o comando a seguir para atualizar as chaves SSH do pool de agentes.
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"

Modelo ARM do Azure e Bicep para atualizar chaves SSH do pool de agentes

Nota

A atualização de pools de nós criados por meio da configuração inicial do pool de agentes não é possível com esse método, pois não há nenhum modelo de pool de agentes e arquivo de parâmetro separados. Somente as chaves do pool de agentes para pools criados após a criação do cluster podem ser atualizadas usando esse método. Para atualizar as chaves do pool de agentes inicial, consulte o comando CLI fornecido na seção anterior. Se o pool de agentes inicial tiver sido criado com chaves amplas de cluster e se você quiser atualizar as chaves para o pool de agentes inicial, poderá atualizar as chaves amplas de cluster.

  1. Atualize o agentPoolSshKeys parâmetro com kubernetes-nodepool-parameters.json a nova chave SSH.
    "agentPoolSshKeys": {
      "value": [
        {
          "keyData": "ssh-rsa DDDDD...."
        }
      ]
    }
  1. Reimplante o modelo.

Para o modelo ARM:

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

Para o bíceps:

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

Atualizar chaves SSH do plano de controle

Use o comando a seguir para atualizar as teclas SSH para o plano de controle.

  • Todos os nós no plano de controle serão atualizados com as novas chaves.
  • Se o plano de controle foi criado com chaves, as novas chaves substituem as chaves existentes.
  • Se o plano de controle foi criado sem chaves, as novas chaves são adicionadas.
  • Se o plano de controle foi criado com teclas amplas do cluster, as novas teclas substituem as chaves existentes.
  • Se você tentar atualizar as chaves de um cluster que foi criado sem nenhuma chave, a nova chave será adicionada, mas não será possível removê-la.
  • Se você tentar atualizar as chaves do plano de controle com uma matriz vazia, a operação será bem-sucedida e as teclas amplas do cluster serão usadas em vez disso.

Nota

As chaves do plano de controle podem ser atualizadas usando o modelo de implantação inicial e o arquivo de parâmetros, pois o plano de controle faz parte do cluster. No entanto, as chaves do pool de agentes não podem ser atualizadas da mesma maneira, pois o pool de agentes é um subrecurso, a menos que o pool de agentes use chaves amplas de cluster.

CLI do Azure para atualizar chaves SSH do plano de controle

  1. Defina a CONTROL_PLANE_SSH_PUBLIC_KEY variável com a nova chave SSH.
CONTROL_PLANE_SSH_PUBLIC_KEY="ssh-rsa EEEEE...."
  1. Use o seguinte comando para atualizar as chaves SSH do plano de controle.
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']"

Modelo ARM do Azure e Bicep para atualizar chaves SSH do plano de controle

  1. Atualize o controlPlaneSshKeys parâmetro com kubernetes-deploy-parameters.json a nova chave SSH.
    "controlPlaneSshKeys": {
      "value": [
        {
          "keyData": "ssh-rsa EEEEE...."
        }
      ]
    }
  1. Reimplante o modelo.

Para o modelo ARM:

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

Para o bíceps:

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

Próximos passos

Ao entender como configurar e gerenciar chaves SSH nos nós de cluster do Operator Nexus Kubernetes, você pode garantir que o cluster seja seguro e que possa acessar os nós quando precisar solucionar problemas.