Compartilhar via


Configurar e gerenciar chaves SSH nos nós de cluster do Kubernetes do Nexus do Operador do Azure

Este artigo descreve como configurar e gerenciar a chave SSH no pool de agentes do Nexus do Kubernetes e nos nós do painel 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 do Nexus do Operador do Kubernetes para obter uma visão geral abrangente e as etapas envolvidas.
  • Certifique-se de que você atenda aos pré-requisitos descritos no guia de início rápido para garantir uma implementação tranquila do guia.

Observação

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

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

Ao configurar um cluster do Nexus do Operador do Kubernetes, você precisa fornecer chaves SSH para os nós do 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ê poderá 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 do painel de controle.
  • Se quiser usar chaves SSH diferentes para pools de agentes ou nós de painel de controle diferentes, você pode fornecer uma chave pública exclusiva para cada pool, o que permite gerenciar o acesso SSH de forma mais granular, substituindo as chaves de todo o cluster. Qualquer novo pool de agentes que for adicionado ao cluster posteriormente sem chaves usará as chaves de todo o cluster; se tiver a chave, usará a chave fornecida.
  • Se você não fornecer nenhuma chave SSH ao criar o cluster, nenhuma chave SSH será inserida nos nós. Isso significa que os usuários não podem fazer 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.

Veja a seguir as variáveis que você precisa definir, juntamente com os valores padrão do guia de Início Rápido que você pode usar para determinadas variáveis.

  • SSH_PUBLIC_KEY - Para as chaves de todo o cluster. O uso da chave de todo o cluster com chaves do pool de agentes e do painel de controle não tem efeito, pois as chaves do painel de controle e do pool de agentes são usadas em vez das chaves de todo o cluster.
  • CONTROL_PLANE_SSH_PUBLIC_KEY - Para o painel de controle, é possível fornecer chaves públicas que são inseridas nos nós do painel 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 do Nexus do Operador do Kubernetes

Você pode gerenciar as chaves SSH dos nós do cluster do Nexus do Operador do Kubernetes depois que o cluster tiver sido criado. É possível atualizar as chaves SSH, mas remover todas as chaves SSH do nó do cluster não é uma opção. Em vez disso, todas as novas chaves fornecidas substituirão todas as chaves existentes.

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

Limitações

  • Não é possível remover as chaves SSH dos nós do cluster. Só é possível atualizá-las com novas chaves.
  • Se você tentar atualizar a chave de todo o 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 painel de controle com uma matriz vazia, a operação será bem-sucedida e as chaves de todo o cluster serão usadas em seu lugar.
  • 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

  • Certifique-se de que você tenha 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 da CLI.
  • Para usar este guia, você deve ter um cluster do Nexus do Operador do Kubernetes existente que tenha sido criado usando o guia de início rápido.

Atualizar as chaves SSH de todo o cluster

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

Observação

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

CLI do Azure para atualizar as chaves SSH de todo o cluster

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

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

Para o modelo do ARM:

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

Para o Bicep:

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

Atualizar as chaves SSH do pool de agentes

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

  • Todos os nós do pool de agentes serão atualizados com as novas chaves.
  • Se o pool de agentes tiver sido criado com chaves, as novas chaves substituirão as chaves existentes.
  • Se o pool de agentes tiver sido criado sem chaves, as novas chaves serão adicionadas.
  • Se o pool de agentes tiver sido criado com chaves de todo o cluster, as novas chaves substituirão 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 de todo o cluster serão usadas em seu lugar.

CLI do Azure para atualizar as chaves SSH do pool de agentes

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

Observação

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á um modelo de pool de agentes e um arquivo de parâmetros separados. Somente as chaves do pool de agentes para pools criados após a criação do cluster podem ser atualizadas com 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 de todo o cluster e se você quiser atualizar as chaves do pool de agentes inicial, poderá atualizar as chaves de todo o cluster.

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

Para o modelo do ARM:

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

Para o Bicep:

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

Atualizar as chaves SSH do painel de controle

Use o comando a seguir para atualizar as chaves SSH do painel de controle.

  • Todos os nós do painel de controle serão atualizados com as novas chaves.
  • Se o painel de controle tiver sido criado com chaves, as novas chaves substituirão as existentes.
  • Se o painel de controle tiver sido criado sem chaves, as novas chaves serão adicionadas.
  • Se o painel de controle tiver sido criado com chaves de todo o cluster, as novas chaves substituirão as 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 painel de controle com uma matriz vazia, a operação será bem-sucedida e as chaves de todo o cluster serão usadas em seu lugar.

Observação

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

CLI do Azure para atualizar as chaves SSH do painel de controle

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

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

Para o modelo do ARM:

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

Para o Bicep:

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

Próximas etapas

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