Поделиться через


Настройка ключей SSH и управление ими на узлах кластера Nexus Kubernetes оператора Azure

В этой статье описывается настройка и управление ключом SSH в пуле агентов Nexus Kubernetes и узлах плоскости управления. Ключи SSH предоставляют безопасный метод доступа к этим узлам в кластере.

Необходимые компоненты

Прежде чем продолжить работу с этим руководством, рекомендуется:

  • Ознакомьтесь с кратким руководством по кластеру Nexus Kubernetes, чтобы получить полный обзор и шаги, связанные с этим.
  • Убедитесь, что в кратком руководстве выполнены указанные предварительные требования, чтобы обеспечить плавную реализацию руководства.

Примечание.

В этом руководстве предполагается, что у вас уже есть существующий кластер Operator Nexus Kubernetes, созданный с помощью краткого руководства, и у вас есть доступ к интерфейсу командной строки, шаблону ARM или Bicep, используемому в кратком руководстве по обновлению ключей SSH.

Настройка ключей SSH узла кластера Nexus Kubernetes

При настройке кластера Operator Nexus Kubernetes необходимо предоставить ключи SSH для узлов в кластере. Ключи SSH предоставляют безопасный метод доступа к этим узлам в кластере.

Существует несколько различных способов предоставления ключей SSH для узлов кластера.

  • Если вы хотите использовать один и тот же ключ SSH для всех узлов в кластере, вы можете предоставить массив открытых ключей при создании кластера. Эти ключи вставляются во все узлы пула агентов и узлы плоскости управления.
  • Если вы хотите использовать разные ключи SSH для разных пулов агентов или узлов плоскости управления, вы можете предоставить уникальный открытый ключ для каждого пула, что позволяет более детально управлять доступом SSH, переопределяя широкие ключи кластера. Любой новый пул агентов добавляется в кластер позже без ключей, использующих широкие ключи кластера, если он имеет ключ, он использует предоставленный ключ.
  • Если при создании кластера нет ключей SSH, ключи SSH не вставляются в узлы. Это означает, что пользователи не могут использовать протокол SSH на узлах. Вы можете добавить ключи SSH позже, обновив конфигурацию кластера, но не удается удалить эти ключи после добавления.

Ниже приведены переменные, которые необходимо задать, а также значения по умолчанию в руководстве по краткому руководству, которые можно использовать для определенных переменных.

  • SSH_PUBLIC_KEY — для широких ключей кластера. Использование широкого ключа кластера с ключами пула агентов и ключей уровня управления не оказывает никакого влияния, так как ключи уровня управления и пула агентов используются вместо ключей широкого кластера.
  • CONTROL_PLANE_SSH_PUBLIC_KEY — Для плоскости управления можно указать открытые ключи, вставляемые в узлы плоскости управления.
  • INITIAL_AGENT_POOL_SSH_PUBLIC_KEY — Для каждого пула агентов можно указать открытые ключи, вставляемые в узлы в этом пуле.
    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}"

Управление ключами SSH узла кластера Nexus Kubernetes

Вы можете управлять ключами SSH для узлов в кластере Operator Nexus Kubernetes после создания кластера. Обновление ключей SSH возможно, но удаление всех ключей SSH из узла кластера не является вариантом. Вместо этого все новые ключи, предоставленные, заменят все существующие ключи.

Чтобы обновить ключи SSH, можно применить ту же конфигурацию Bicep/ARM, используемую во время первоначального развертывания с новыми ключами или использовать CLI.

Ограничения

  • Невозможно удалить ключи SSH из узлов кластера. Их можно обновить только с помощью новых ключей.
  • При попытке обновить широкий ключ кластера с пустым массивом операция завершается успешно, но существующие ключи остаются неизменными.
  • Если вы пытаетесь обновить ключи пула агентов или плоскость управления с пустым массивом, операция завершается успешно, а вместо этого используются широкие ключи кластера.
  • Если вы попытаетесь обновить ключи для кластера, созданного без каких-либо ключей, добавляется новый ключ, но его нельзя удалить.

Подготовка к работе

  • Убедитесь, что у вас есть необходимые разрешения для обновления конфигурации кластера.
  • У вас есть новые ключи SSH, которые вы хотите использовать для узлов кластера.
  • У вас есть файл параметров, используемый во время первоначального развертывания или переменные, используемые в команде CLI.
  • Чтобы использовать это руководство, необходимо создать существующий кластер Operator Nexus Kubernetes, созданный с помощью краткого руководства.

Обновление ключей SSH для кластера

Используйте следующую команду, чтобы обновить ключи SSH для кластера, которые используются для всех узлов в кластере. Существующие ключи заменяются новыми ключами.

Примечание.

Это работает только в том случае, если кластер был создан с широкими ключами кластера. Если кластер был создан с помощью пула агентов или ключей плоскости управления, эта операция не действует. Ознакомьтесь со следующими разделами, чтобы обновить пул агентов или ключи уровня управления.

Azure CLI для обновления ключей SSH для кластера

  1. SSH_PUBLIC_KEY Задайте переменную с новым ключом SSH.
SSH_PUBLIC_KEY="ssh-rsa CCCCC...."
  1. Используйте следующую команду, чтобы обновить ключи SSH для кластера.
az networkcloud kubernetescluster update --name "$CLUSTER_NAME" --resource-group "$RESOURCE_GROUP" --subscription "$SUBSCRIPTION_ID" --ssh-key-values "$SSH_PUBLIC_KEY"

Azure Resource Manager (ARM) и Bicep для обновления ключей SSH кластера

  1. sshPublicKeys Обновите параметр с kubernetes-deploy-parameters.json помощью нового ключа SSH.
    "sshPublicKeys": {
      "value": [
        {
          "keyData": "ssh-rsa CCCCC...."
        }
      ]
    }
  1. Повторно разверните шаблон.

Для шаблона ARM:

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

Для Bicep:

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

Обновление ключей SSH пула агентов

Используйте следующую команду, чтобы обновить ключи SSH для определенного пула агентов.

  • Все узлы в пуле агентов будут обновлены новыми ключами.
  • Если пул агентов был создан с ключами, новые ключи заменяют существующие ключи.
  • Если пул агентов был создан без ключей, добавляются новые ключи.
  • Если пул агентов был создан с широкими ключами кластера, новые ключи заменяют существующие ключи.
  • Если вы попытаетесь обновить ключи для кластера, созданного без каких-либо ключей, добавляется новый ключ, но его нельзя удалить.
  • При попытке обновить ключи пула агентов с пустым массивом, операция завершается успешно, а вместо этого используются широкие ключи кластера.

Azure CLI для обновления ключей SSH пула агентов

  1. AGENT_POOL_KEY Задайте переменную с новым ключом SSH.
AGENT_POOL_KEY="ssh-rsa DDDDD...."
  1. Используйте следующую команду, чтобы обновить ключи SSH пула агентов.
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 и Bicep для обновления ключей SSH пула агентов

Примечание.

Обновление пулов узлов, созданных с помощью начальной конфигурации пула агентов, невозможно с помощью этого метода, так как отсутствует отдельный шаблон пула агентов и файл параметров. С помощью этого метода можно обновить только ключи пула агентов, созданные после создания кластера. Чтобы обновить ключи для начального пула агентов, обратитесь к команде CLI, предоставленной в предыдущем разделе. Если начальный пул агентов был создан с помощью ключей с широким кластером, а также если вы хотите обновить ключи для начального пула агентов, можно обновить широкие ключи кластера.

  1. agentPoolSshKeys Обновите параметр с kubernetes-nodepool-parameters.json помощью нового ключа SSH.
    "agentPoolSshKeys": {
      "value": [
        {
          "keyData": "ssh-rsa DDDDD...."
        }
      ]
    }
  1. Повторно разверните шаблон.

Для шаблона ARM:

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

Для Bicep:

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

Обновление ключей SSH уровня управления

Используйте следующую команду, чтобы обновить ключи SSH для плоскости управления.

  • Все узлы в плоскости управления будут обновлены новыми ключами.
  • Если уровень управления был создан с ключами, новые ключи заменяют существующие ключи.
  • Если уровень управления был создан без ключей, добавляются новые ключи.
  • Если уровень управления был создан с широкими ключами кластера, новые ключи заменяют существующие ключи.
  • Если вы попытаетесь обновить ключи для кластера, созданного без каких-либо ключей, добавляется новый ключ, но его нельзя удалить.
  • Если вы попытаетесь обновить ключи плоскости управления пустым массивом, операция завершается успешно, а вместо этого используются широкие ключи кластера.

Примечание.

Ключи плоскости управления можно обновить с помощью исходного шаблона развертывания и файла параметров, так как плоскость управления является частью кластера. Однако ключи пула агентов нельзя обновлять так же, как пул агентов является вложенным ресурсом, если пул агентов не использует широкие ключи кластера.

Azure CLI для обновления ключей SSH уровня управления

  1. CONTROL_PLANE_SSH_PUBLIC_KEY Задайте переменную с новым ключом SSH.
CONTROL_PLANE_SSH_PUBLIC_KEY="ssh-rsa EEEEE...."
  1. Используйте следующую команду, чтобы обновить ключи SSH уровня управления.
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 и Bicep для обновления ключей SSH уровня управления

  1. controlPlaneSshKeys Обновите параметр с kubernetes-deploy-parameters.json помощью нового ключа SSH.
    "controlPlaneSshKeys": {
      "value": [
        {
          "keyData": "ssh-rsa EEEEE...."
        }
      ]
    }
  1. Повторно разверните шаблон.

Для шаблона ARM:

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

Для Bicep:

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

Следующие шаги

Понимая, как настроить ключи SSH и управлять ими на узлах кластера Operator Nexus Kubernetes, вы можете обеспечить безопасность кластера и получить доступ к узлам при необходимости устранения неполадок.