Compartir a través de


Configuración y administración de claves SSH en nodos de clúster de Kubernetes de Azure Operator Nexus

En este artículo se describe cómo configurar y administrar la clave SSH en el grupo de agentes de Kubernetes de Nexus y los nodos del plano de control. Las claves SSH proporcionan un método seguro para acceder a estos nodos en el clúster.

Requisitos previos

Antes de continuar con esta guía paso a paso, se recomienda que:

  • Consulte la guía de inicio rápido del clúster de Kubernetes de Operator Nexus para obtener información general y pasos completos implicados.
  • Asegúrese de cumplir los requisitos previos descritos en el inicio rápido para garantizar una implementación fluida de la guía.

Nota:

En esta guía se da por supuesto que ya tiene un clúster de Kubernetes de Operator Nexus existente que se creó mediante la guía de inicio rápido y que tiene acceso a la CLI, la plantilla de ARM o Bicep que se usó en el inicio rápido para actualizar las claves SSH.

Configuración de las claves SSH del nodo de clúster de Kubernetes de Operator Nexus

Al configurar un clúster de Kubernetes de Operator Nexus, debe proporcionar claves SSH para los nodos del clúster. Las claves SSH proporcionan un método seguro para acceder a estos nodos en el clúster.

Hay varias maneras diferentes de proporcionar claves SSH para los nodos del clúster.

  • Si desea usar la misma clave SSH para todos los nodos del clúster, puede proporcionar una matriz de claves públicas al crear el clúster. Estas claves se insertan en todos los nodos del grupo de agentes y en los nodos del plano de control.
  • Si desea usar claves SSH diferentes para distintos grupos de agentes o nodos del plano de control, puede proporcionar una clave pública única para cada grupo; esto le permite administrar el acceso SSH de forma más granular, lo que invalida las claves para todo el clúster. Cualquier nuevo grupo de agentes que se agrega al clúster más adelante sin claves usa las claves para todo el clúster; si tiene una clave, usa la clave proporcionada.
  • Si no proporciona ninguna clave SSH al crear el clúster, no se insertan claves SSH en los nodos. Esto significa que los usuarios no pueden conectarse mediante SSH a los nodos. Puede agregar claves SSH más adelante actualizando la configuración del clúster, pero no puede quitar esas claves una vez agregadas.

A continuación se muestran las variables que debe establecer, junto con los valores predeterminados de la guía de inicio rápido que puede usar para determinadas variables.

  • SSH_PUBLIC_KEY: para las claves para todo el clúster. El uso de claves para todo el clúster con el grupo de agentes y las claves del plano de control no tiene ningún efecto, ya que se usan el plano de control y las claves del grupo de agentes en lugar de las claves para todo el clúster.
  • CONTROL_PLANE_SSH_PUBLIC_KEY: para el plano de control, puede proporcionar claves públicas que se insertan en los nodos del plano de control.
  • INITIAL_AGENT_POOL_SSH_PUBLIC_KEY: para cada grupo de agentes, puede proporcionar claves públicas que se insertan en los nodos de ese grupo.
    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}"

Administración de claves SSH del nodo de clúster de Kubernetes de Operator Nexus

Puede administrar las claves SSH de los nodos de clúster de Kubernetes de Operator Nexus una vez creado el clúster. Es posible actualizar las claves SSH, pero quitar todas las claves SSH del nodo de clúster no es una opción. Alternativamente, las claves nuevas proporcionadas reemplazarán todas las claves existentes.

Para actualizar las claves SSH, puede aplicar la misma configuración de Bicep/ARM que se usa durante la implementación inicial con nuevas claves o usar la CLI.

Limitaciones

  • No se pueden quitar claves SSH de los nodos del clúster. Solo puede actualizarlas con nuevas claves.
  • Si intenta actualizar claves para todo el clúster con una matriz vacía, la operación se realiza correctamente, pero las claves existentes permanecen sin cambios.
  • Si intenta actualizar las claves del grupo de agentes o el plano de control con una matriz vacía, la operación se realiza correctamente y se usan en su lugar las claves para todo el clúster.
  • Si intenta actualizar las claves de un clúster que se creó sin ninguna clave, se agrega la nueva clave, pero no se puede quitar.

Antes de empezar

  • Asegúrese de que tiene los permisos necesarios para actualizar la configuración del clúster.
  • Tiene las nuevas claves SSH que desea usar para los nodos del clúster.
  • Tiene el archivo de parámetros usado durante la implementación inicial o las variables usadas en el comando de la CLI.
  • Para usar esta guía, debe tener un clúster de Kubernetes de Operator Nexus existente que se creó mediante la guía de inicio rápido.

Actualización de claves SSH para todo el clúster

Use el siguiente comando para actualizar las claves SSH para todo el clúster, que se usan para todos los nodos del clúster. Las claves existentes se reemplazan por las nuevas claves.

Nota:

Esto solo funciona si el clúster se creó con claves para todo el clúster. Si el clúster se creó con claves de grupo de agentes o plano de control, esta operación no tiene ningún efecto. Consulte las secciones siguientes para actualizar el grupo de agentes o las claves del plano de control.

CLI de Azure para actualizar las claves SSH para todo el clúster

  1. Establezca la variable SSH_PUBLIC_KEY con la nueva clave SSH.
SSH_PUBLIC_KEY="ssh-rsa CCCCC...."
  1. Use el siguiente comando para actualizar las claves SSH para todo el clúster.
az networkcloud kubernetescluster update --name "$CLUSTER_NAME" --resource-group "$RESOURCE_GROUP" --subscription "$SUBSCRIPTION_ID" --ssh-key-values "$SSH_PUBLIC_KEY"

Azure Resource Manager (ARM) y Bicep para actualizar las claves SSH para todo el clúster

  1. Actualice el parámetro sshPublicKeys en kubernetes-deploy-parameters.json con la nueva clave SSH.
    "sshPublicKeys": {
      "value": [
        {
          "keyData": "ssh-rsa CCCCC...."
        }
      ]
    }
  1. Vuelva a implementar la plantilla.

Para la plantilla de ARM:

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

Para Bicep:

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

Actualización de las claves SSH del grupo de agentes

Use el comando siguiente para actualizar las claves SSH de un grupo de agentes específico.

  • Todos los nodos del grupo de agentes se actualizarán con las nuevas claves.
  • Si el grupo de agentes se creó con claves, las nuevas claves reemplazan las claves existentes.
  • Si el grupo de agentes se creó sin claves, se agregan las nuevas claves.
  • Si el grupo de agentes se creó con claves para todo el clúster, las nuevas claves reemplazan las claves existentes.
  • Si intenta actualizar las claves de un clúster que se creó sin ninguna clave, se agrega la nueva clave, pero no se puede quitar.
  • Si intenta actualizar las claves del grupo de agentes con una matriz vacía, la operación se realiza correctamente y se usan en su lugar las claves para todo el clúster.

CLI de Azure para actualizar las claves SSH del grupo de agentes

  1. Establezca la variable AGENT_POOL_KEY con la nueva clave SSH.
AGENT_POOL_KEY="ssh-rsa DDDDD...."
  1. Use el comando siguiente para actualizar las claves SSH del grupo 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"

Plantilla de Azure ARM y Bicep para actualizar las claves SSH del grupo de agentes

Nota:

La actualización de grupos de nodos creados a través de la configuración inicial del grupo de agentes no es posible con este método, ya que no hay ningún archivo de parámetros ni plantilla de grupo de agentes independiente. Solo se pueden actualizar las claves del grupo de agentes para los grupos creados después de la creación del clúster mediante este método. Para actualizar las claves del grupo de agentes inicial, consulte el comando de la CLI proporcionado en la sección anterior. Si el grupo de agentes inicial se creó con claves para todo el clúster y si desea actualizar las claves del grupo de agentes inicial, puede actualizar las claves para todo el clúster.

  1. Actualice el parámetro agentPoolSshKeys en kubernetes-nodepool-parameters.json con la nueva clave SSH.
    "agentPoolSshKeys": {
      "value": [
        {
          "keyData": "ssh-rsa DDDDD...."
        }
      ]
    }
  1. Vuelva a implementar la plantilla.

Para la plantilla de ARM:

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

Para Bicep:

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

Actualización de claves SSH del plano de control

Use el comando siguiente para actualizar las claves SSH del plano de control.

  • Todos los nodos del plano de control se actualizarán con las nuevas claves.
  • Si el plano de control se creó con claves, las claves nuevas reemplazan las claves existentes.
  • Si el plano de control se creó sin claves, se agregan las nuevas claves.
  • Si el plano de control se creó con claves para todo el clúster, las claves nuevas reemplazan las claves existentes.
  • Si intenta actualizar las claves de un clúster que se creó sin ninguna clave, se agrega la nueva clave, pero no se puede quitar.
  • Si intenta actualizar las claves del plano de control con una matriz vacía, la operación se realiza correctamente y se usan en su lugar las claves para todo el clúster.

Nota:

Las claves del plano de control se pueden actualizar mediante la plantilla de implementación inicial y el archivo de parámetros, ya que el plano de control forma parte del clúster. Sin embargo, las claves del grupo de agentes no se pueden actualizar de la misma manera, ya que el grupo de agentes es un subrecurso, a menos que el grupo de agentes use claves para todo el clúster.

CLI de Azure para actualizar las claves SSH del plano de control

  1. Establezca la variable CONTROL_PLANE_SSH_PUBLIC_KEY con la nueva clave SSH.
CONTROL_PLANE_SSH_PUBLIC_KEY="ssh-rsa EEEEE...."
  1. Use el comando siguiente para actualizar las claves SSH del plano de control.
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']"

Plantilla de Azure ARM y Bicep para actualizar las claves SSH del plano de control

  1. Actualice el parámetro controlPlaneSshKeys en kubernetes-deploy-parameters.json con la nueva clave SSH.
    "controlPlaneSshKeys": {
      "value": [
        {
          "keyData": "ssh-rsa EEEEE...."
        }
      ]
    }
  1. Vuelva a implementar la plantilla.

Para la plantilla de ARM:

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

Para Bicep:

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

Pasos siguientes

El conocimiento de cómo configurar y administrar claves SSH en los nodos de clúster de Kubernetes de Operator Nexus, le permite garantizar que el clúster es seguro y que puede acceder a los nodos cuando necesite solucionar problemas.