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
SSH_PUBLIC_KEY
새 SSH 키를 사용하여 변수를 설정합니다.
SSH_PUBLIC_KEY="ssh-rsa CCCCC...."
- 다음 명령을 사용하여 클러스터 전체 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
- 매개 변수
kubernetes-deploy-parameters.json
를sshPublicKeys
새 SSH 키로 업데이트합니다.
"sshPublicKeys": {
"value": [
{
"keyData": "ssh-rsa CCCCC...."
}
]
}
- 템플릿을 다시 배포합니다.
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
AGENT_POOL_KEY
새 SSH 키를 사용하여 변수를 설정합니다.
AGENT_POOL_KEY="ssh-rsa DDDDD...."
- 다음 명령을 사용하여 에이전트 풀 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 명령을 참조하세요. 초기 에이전트 풀이 클러스터 와이드 키를 사용하여 만들어졌으며 초기 에이전트 풀의 키를 업데이트하려는 경우 클러스터 와이드 키를 업데이트할 수 있습니다.
- 매개 변수
kubernetes-nodepool-parameters.json
를agentPoolSshKeys
새 SSH 키로 업데이트합니다.
"agentPoolSshKeys": {
"value": [
{
"keyData": "ssh-rsa DDDDD...."
}
]
}
- 템플릿을 다시 배포합니다.
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
CONTROL_PLANE_SSH_PUBLIC_KEY
새 SSH 키를 사용하여 변수를 설정합니다.
CONTROL_PLANE_SSH_PUBLIC_KEY="ssh-rsa EEEEE...."
- 다음 명령을 사용하여 컨트롤 플레인 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
- 매개 변수
kubernetes-deploy-parameters.json
를controlPlaneSshKeys
새 SSH 키로 업데이트합니다.
"controlPlaneSshKeys": {
"value": [
{
"keyData": "ssh-rsa EEEEE...."
}
]
}
- 템플릿을 다시 배포합니다.
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 키를 구성하고 관리하는 방법을 이해하면 클러스터가 안전하고 문제를 해결해야 할 때 노드에 액세스할 수 있는지 확인할 수 있습니다.