Azure Stack Edge Pro GPU 디바이스의 Kubernetes 클러스터에 Azure Arc 사용
적용 대상: Azure Stack Edge Pro - GPUAzure Stack Edge Pro 2Azure Stack Edge Pro RAzure Stack Edge Mini R
이 문서에서는 Azure Stack Edge Pro 디바이스의 기존 Kubernetes 클러스터에서 Azure Arc를 사용하도록 설정하는 방법을 보여 줍니다.
이 절차에서는 다음 문서를 읽고 이해한 것으로 가정합니다.
필수 조건
Azure Stack Edge Pro 디바이스 및 디바이스에 액세스하는 데 사용할 클라이언트에 대해 다음과 같은 필수 구성 요소를 완료했는지 확인합니다.
디바이스의 경우
1노드 Azure Stack Edge Pro 디바이스에 대한 로그인 자격 증명이 있어야 합니다.
구독에 대한 소유자 액세스 권한이 있습니다. 서비스 주체에 대한 역할 할당 단계 중에 이 액세스 권한이 필요합니다.
디바이스에 액세스하는 클라이언트의 경우
Azure Stack Edge Pro 디바이스에 액세스하는 데 사용되는 Windows 클라이언트 시스템이 있습니다.
클라이언트에서 Windows PowerShell 5.0 이상을 실행하고 있습니다. 최신 버전의 Windows PowerShell을 다운로드하려면 Windows Powershell 설치로 이동합니다.
지원되는 운영 체제를 사용하는 다른 클라이언트도 있을 수 있습니다. 이 문서에서는 Windows 클라이언트를 사용하는 절차에 대해 설명합니다.
Azure Stack Edge Pro 디바이스에서 Kubernetes 클러스터에 액세스에 설명된 절차를 완료했습니다. 수행한 작업은 다음과 같습니다.
- 클라이언트에
kubectl
을 설치했습니다. kubectl
클라이언트 버전이 Azure Stack Edge Pro 디바이스에서 실행되는 Kubernetes 마스터 버전보다 두 버전 이상 차이 나지 않는지 확인합니다.kubectl version
을 사용하여 클라이언트에서 실행되는 kubectl의 버전을 확인합니다. 전체 버전을 기록해 둡니다.Azure Stack Edge Pro 디바이스의 로컬 UI에서 소프트웨어 업데이트로 이동한 후 Kubernetes 서버 버전 번호를 기록해 둡니다.
이러한 두 버전이 호환되는지 확인합니다.
- 클라이언트에
Kubernetes 리소스 공급자 등록
Kubernetes 클러스터에서 Azure Arc를 사용하도록 설정하기 전에 구독에 대해 Microsoft.Kubernetes
및 Microsoft.KubernetesConfiguration
을 사용하도록 설정하고 등록해야 합니다.
리소스 공급자를 사용하도록 설정하려면 Azure Portal에서 배포에 사용할 구독으로 이동합니다. 리소스 공급자로 이동합니다.
오른쪽 창에서 추가하려는 공급자를 검색합니다. 이 예제에서는
Microsoft.Kubernetes
및Microsoft.KubernetesConfiguration
입니다.리소스 공급자를 선택하고 명령 모음 맨 위에서 등록을 선택합니다. 등록은 몇 분 정도 걸립니다.
리소스 공급자가 등록되어 있는지 확인하기 전까지 UI를 새로 고칩니다. 두 리소스 공급자에 대해 이 프로세스를 반복합니다.
az cli
를 통해 리소스 공급자를 등록할 수도 있습니다. 자세한 내용은 Azure Arc 지원 Kubernetes에 두 공급자 등록을 참조하세요.
서비스 주체 만들기, 역할 할당
Azure Stack Edge 서비스의 리소스 배포에 사용한 리소스 그룹의
Subscription ID
및 이름이 있는지 확인합니다. 구독 ID를 가져오려면 Azure Portal에서 Azure Stack Edge 리소스로 이동합니다. 개요 > 기본 정보로 이동합니다.리소스 그룹 이름을 가져오려면 속성으로 이동합니다.
서비스 주체를 만들려면
az cli
를 통해 다음 명령을 사용합니다.az ad sp create-for-rbac --name "<Informative name for service principal>"
az cli
에 로그인하는 방법에 대한 내용을 보려면 Azure Portal에서 Cloud Shell을 시작하세요. 로컬 클라이언트에서az cli
를 사용하여 서비스 주체를 만드는 경우 버전 2.25 이상을 실행하고 있는지 확인합니다.다음은 예입니다.
PS /home/user> az ad sp create-for-rbac --name "https://azure-arc-for-ase-k8s" { "appId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "displayName": "azure-arc-for-ase-k8s", "name": "https://azure-arc-for-ase-k8s", "password": "<password>", "tenant": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" } PS /home/user>
appID
,name
,password
및tenantID
는 다음 명령에서 입력으로 이러한 값을 사용하기 때문에 기록해 둡니다.새 서비스 주체를 만든 후 새로 만든 보안 주체에
Kubernetes Cluster - Azure Arc Onboarding
역할을 할당합니다. 이 역할은 제한된 권한의 기본 제공 Azure 역할(명령에서 역할 ID 사용)입니다. 다음 명령을 사용합니다.az role assignment create --role 34e09817-6cbe-4d01-b1a2-e0eac5743d41 --assignee <appId-from-service-principal> --scope /subscriptions/<SubscriptionID>/resourceGroups/<Resource-group-name>
다음은 예입니다.
PS /home/user> az role assignment create --role 34e09817-6cbe-4d01-b1a2-e0eac5743d41 --assignee xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx --scope /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myaserg1 { "canDelegate": null, "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myaserg1/providers/Microsoft.Authorization/roleAssignments/00000000-0000-0000-0000-000000000000", "name": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "principalId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "principalType": "ServicePrincipal", "resourceGroup": "myaserg1", "roleDefinitionId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/providers/Microsoft.Authorization/roleDefinitions/34e09817-6cbe-4d01-b1a2-e0eac5743d41", "scope": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myaserg1", "type": "Microsoft.Authorization/roleAssignments" } PS /home/user>
Kubernetes 클러스터에서 Arc 사용
Azure Arc 관리를 위해 Kubernetes 클러스터를 구성하려면 다음 단계를 수행합니다.
유형:
Set-HcsKubernetesAzureArcAgent -SubscriptionId "<Your Azure Subscription Id>" -ResourceGroupName "<Resource Group Name>" -ResourceName "<Azure Arc resource name (shouldn't exist already)>" -Location "<Region associated with resource group>" -TenantId "<Tenant Id of service principal>" -ClientId "<App id of service principal>"
이 명령을 실행하면
ClientSecret
을 입력하라는 후속 프롬프트가 표시됩니다. 서비스 주체 암호를 제공합니다.Azure 퍼블릭이 아닌 다른 클라우드를 사용하는 경우
CloudEnvironment
매개 변수를 추가합니다. 이 매개 변수를AZUREPUBLICCLOUD
,AZURECHINACLOUD
,AZUREGERMANCLOUD
및AZUREUSGOVERNMENTCLOUD
로 설정할 수 있습니다.참고 항목
- 디바이스에 Azure Arc를 배포하려면 Azure Arc의 지원되는 지역을 사용해야 합니다.
az account list-locations
명령을 사용하여Set-HcsKubernetesAzureArcAgent
cmdlet에 전달할 정확한 위치 이름을 파악합니다. 위치 이름 형식은 일반적으로 공백이 없습니다.ClientId
및ClientSecret
가 필요합니다.
예를 들면 다음과 같습니다.
[10.100.10.10]: PS>Set-HcsKubernetesAzureArcAgent -SubscriptionId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -ResourceGroupName "myaserg1" -ResourceName "myasetestresarc" -Location "westeurope" -TenantId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -ClientId "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" WARNING: A script or application on the remote computer 10.126.76.0 is sending a prompt request. When you are prompted, enter sensitive information, such as credentials or passwords, only if you trust the remote computer and the application or script that is requesting the data. cmdlet Set-HcsKubernetesAzureArcAgent at command pipeline position 1 Supply values for the following parameters: ClientSecret: ********************************** [10.100.10.10]: PS>
Azure Portal에서는 이전 명령에 제공했던 이름으로 리소스를 만들어야 합니다.
Azure Arc가 사용하도록 설정되었는지 확인하려면 PowerShell 인터페이스에서 다음 명령을 실행합니다.
kubectl get deployments,pods -n azure-arc
다음은
azure-arc
네임스페이스의 Kubernetes 클러스터에 배포된 Azure Arc 에이전트를 보여 주는 샘플 출력입니다.[10.128.44.240]: PS>kubectl get deployments,pods -n azure-arc NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/cluster-metadata-operator 1/1 1 1 13d deployment.apps/clusterconnect-agent 1/1 1 1 13d deployment.apps/clusteridentityoperator 1/1 1 1 13d deployment.apps/config-agent 1/1 1 1 13d deployment.apps/controller-manager 1/1 1 1 13d deployment.apps/extension-manager 1/1 1 1 13d deployment.apps/flux-logs-agent 1/1 1 1 13d deployment.apps/kube-aad-proxy 1/1 1 1 13d deployment.apps/metrics-agent 1/1 1 1 13d deployment.apps/resource-sync-agent 1/1 1 1 13d NAME READY STATUS RESTARTS AGE pod/cluster-metadata-operator-9568b899c-2stjn 2/2 Running 0 13d pod/clusterconnect-agent-576758886d-vggmv 3/3 Running 0 13d pod/clusteridentityoperator-6f59466c87-mm96j 2/2 Running 0 13d pod/config-agent-7cbd6cb89f-9fdnt 2/2 Running 0 13d pod/controller-manager-df6d56db5-kxmfj 2/2 Running 0 13d pod/extension-manager-58c94c5b89-c6q72 2/2 Running 0 13d pod/flux-logs-agent-6db9687fcb-rmxww 1/1 Running 0 13d pod/kube-aad-proxy-67b87b9f55-bthqv 2/2 Running 0 13d pod/metrics-agent-575c565fd9-k5j2t 2/2 Running 0 13d pod/resource-sync-agent-6bbd8bcd86-x5bk5 2/2 Running 0 13d [10.128.44.240]: PS>
이러한 에이전트에 대한 개념적 개요는 여기에서 확인할 수 있습니다.
Kubernetes 클러스터에서 Arc 제거
Azure Arc 관리를 제거하려면 다음 단계를 수행합니다.
유형:
Remove-HcsKubernetesAzureArcAgent
참고 항목
기본적으로 Git 리포지토리에서 리소스 yamls
가 삭제되면 해당 리소스가 Kubernetes 클러스터에서 삭제되지 않습니다. git 리포지토리에서 삭제될 때 리소스 삭제를 허용하도록 Arc OperatorParams에서 --sync-garbage-collection
을 설정해야 합니다. 자세한 내용은 구성 삭제를 참조하세요.
다음 단계
Azure Arc 배포를 실행하는 방법을 이해하려면 Azure Stack Edge Pro 디바이스에서 GitOps를 통해 Redis를 사용하여 상태 비저장 PHP Guestbook
애플리케이션 배포를 참조하세요.