다음을 통해 공유


Azure Operator Nexus Kubernetes 클러스터 노드에서 SSH 키 구성 및 관리

이 문서에서는 Nexus Kubernetes 에이전트 풀 및 컨트롤 플레인 노드에서 SSH 키를 구성하고 관리하는 방법을 설명합니다. SSH 키는 클러스터에서 이러한 노드에 액세스하는 안전한 방법을 제공합니다.

필수 조건

이 방법 가이드를 진행하기 전에 다음을 수행하는 것이 좋습니다.

  • 관련된 포괄적인 개요 및 단계는 운영자 Nexus Kubernetes 클러스터 빠른 시작 가이드 를 참조하세요.
  • 가이드의 원활한 구현을 보장하기 위해 빠른 시작에서 설명된 필수 구성 요소를 충족하는지 확인합니다.

참고 항목

이 가이드에서는 빠른 시작 가이드를 사용하여 만든 기존 연산자 Nexus Kubernetes 클러스터가 이미 있으며, 빠른 시작에서 SSH 키를 업데이트하는 데 사용되는 CLI, ARM 템플릿 또는 Bicep에 액세스할 수 있다고 가정합니다.

운영자 Nexus Kubernetes 클러스터 노드 SSH 키 구성

운영자 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}"

운영자 Nexus Kubernetes 클러스터 노드 SSH 키 관리

클러스터를 만든 후 운영자 Nexus Kubernetes 클러스터의 노드에 대한 SSH 키를 관리할 수 있습니다. SSH 키를 업데이트할 수 있지만 클러스터 노드에서 모든 SSH 키를 제거하는 것은 옵션이 아닙니다. 대신 제공된 새 키는 모든 기존 키를 대체합니다.

SSH 키를 업데이트하려면 새 키를 사용하여 초기 배포 중에 사용된 것과 동일한 Bicep/ARM 구성을 적용하거나 CLI를 사용할 수 있습니다.

제한 사항

  • 클러스터 노드에서 SSH 키를 제거할 수 없습니다. 새 키로만 업데이트할 수 있습니다.
  • 빈 배열로 클러스터 와이드 키를 업데이트하려고 하면 작업이 성공하지만 기존 키는 변경되지 않은 상태로 유지됩니다.
  • 에이전트 풀 키 또는 컨트롤 플레인을 빈 배열로 업데이트하려고 하면 작업이 성공하고 클러스터 와이드 키가 대신 사용됩니다.
  • 키 없이 만든 클러스터의 키를 업데이트하려고 하면 새 키가 추가되지만 제거할 수는 없습니다.

시작하기 전에

  • 클러스터 구성을 업데이트하는 데 필요한 권한이 있는지 확인합니다.
  • 클러스터 노드에 사용할 새 SSH 키가 있습니다.
  • 초기 배포 중에 사용되는 매개 변수 파일이나 CLI 명령에 사용되는 변수가 있습니다.
  • 이 가이드를 사용하려면 빠른 시작 가이드를 사용하여 만든 기존 연산자 Nexus Kubernetes 클러스터가 있어야 합니다.

클러스터 전체 SSH 키 업데이트

다음 명령을 사용하여 클러스터의 모든 노드에 사용되는 클러스터 전체 SSH 키를 업데이트합니다. 기존 키가 새 키로 대체됩니다.

참고 항목

클러스터 와이드 키를 사용하여 클러스터를 만든 경우에만 작동합니다. 에이전트 풀 또는 컨트롤 플레인 키를 사용하여 클러스터를 만든 경우에는 이 작업이 적용되지 않습니다. 에이전트 풀 또는 컨트롤 플레인 키를 업데이트하려면 다음 섹션을 참조하세요.

클러스터 전체 SSH 키를 업데이트하는 Azure CLI

  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"

클러스터 전체 SSH 키를 업데이트하기 위한 ARM(Azure Resource Manager) 및 Bicep

  1. 매개 변수 kubernetes-deploy-parameters.jsonsshPublicKeys 새 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 키를 업데이트합니다.

  • 에이전트 풀의 모든 노드가 새 키로 업데이트됩니다.
  • 에이전트 풀을 키로 만든 경우 새 키는 기존 키를 대체합니다.
  • 키 없이 에이전트 풀을 만든 경우 새 키가 추가됩니다.
  • 클러스터 와이드 키로 에이전트 풀을 만든 경우 새 키는 기존 키를 대체합니다.
  • 키 없이 만든 클러스터의 키를 업데이트하려고 하면 새 키가 추가되지만 제거할 수는 없습니다.
  • 에이전트 풀 키를 빈 배열로 업데이트하려고 하면 작업이 성공하고 클러스터 와이드 키가 대신 사용됩니다.

에이전트 풀 SSH 키를 업데이트하는 Azure CLI

  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"

에이전트 풀 SSH 키를 업데이트하는 Azure ARM 템플릿 및 Bicep

참고 항목

별도의 에이전트 풀 템플릿 및 매개 변수 파일이 없으므로 이 메서드에서는 초기 에이전트 풀 구성을 통해 만든 노드 풀을 업데이트할 수 없습니다. 클러스터를 만든 후에 만든 풀에 대한 에이전트 풀 키만 이 메서드를 사용하여 업데이트할 수 있습니다. 초기 에이전트 풀에 대한 키를 업데이트하려면 이전 섹션에서 제공한 CLI 명령을 참조하세요. 초기 에이전트 풀이 클러스터 와이드 키를 사용하여 만들어졌으며 초기 에이전트 풀의 키를 업데이트하려는 경우 클러스터 와이드 키를 업데이트할 수 있습니다.

  1. 매개 변수 kubernetes-nodepool-parameters.jsonagentPoolSshKeys 새 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 키를 업데이트합니다.

  • 컨트롤 플레인의 모든 노드는 새 키로 업데이트됩니다.
  • 컨트롤 플레인을 키로 만든 경우 새 키는 기존 키를 대체합니다.
  • 컨트롤 플레인을 키 없이 만든 경우 새 키가 추가됩니다.
  • 클러스터 와이드 키로 컨트롤 플레인을 만든 경우 새 키는 기존 키를 대체합니다.
  • 키 없이 만든 클러스터의 키를 업데이트하려고 하면 새 키가 추가되지만 제거할 수는 없습니다.
  • 빈 배열로 컨트롤 플레인 키를 업데이트하려고 하면 작업이 성공하고 클러스터 와이드 키가 대신 사용됩니다.

참고 항목

컨트롤 플레인은 클러스터의 일부이므로 초기 배포 템플릿 및 매개 변수 파일을 사용하여 컨트롤 플레인 키를 업데이트할 수 있습니다. 그러나 에이전트 풀이 클러스터 와이드 키를 사용하지 않는 한 에이전트 풀은 하위 리소스이므로 에이전트 풀 키를 동일한 방식으로 업데이트할 수 없습니다.

제어 평면 SSH 키를 업데이트하는 Azure CLI

  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']"

제어 평면 SSH 키를 업데이트하는 Azure ARM 템플릿 및 Bicep

  1. 매개 변수 kubernetes-deploy-parameters.jsoncontrolPlaneSshKeys 새 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

다음 단계

운영자 Nexus Kubernetes 클러스터 노드에서 SSH 키를 구성하고 관리하는 방법을 이해하면 클러스터가 안전하고 문제를 해결해야 할 때 노드에 액세스할 수 있는지 확인할 수 있습니다.