Azure Stack HCI 클러스터의 Azure Kubernetes 서비스를 Kubernetes 용 Azure Arc에 연결Connect an Azure Kubernetes Service on Azure Stack HCI cluster to Azure Arc for Kubernetes

적용 대상: AKS on Azure Stack HCI, AKS runtime on Windows Server 2019 DatacenterApplies to: AKS on Azure Stack HCI, AKS runtime on Windows Server 2019 Datacenter

Azure Stack HCI 클러스터의 Azure Kubernetes 서비스를 Azure Arc에 연결 하면 Azure Portal에 표시 됩니다.When an Azure Kubernetes Service on Azure Stack HCI cluster is attached to Azure Arc, it will appear in the Azure portal. Azure Resource Manager ID와 관리 ID가 있습니다.It will have an Azure Resource Manager ID and a managed identity. 클러스터는 표준 Azure 구독에 연결되고, 리소스 그룹에 위치하며, 다른 Azure 리소스와 마찬가지로 태그를 받을 수 있습니다.Clusters are attached to standard Azure subscriptions, are located in a resource group, and can receive tags just like any other Azure resource.

Kubernetes 클러스터를 Azure에 연결하려면 클러스터 관리자가 에이전트를 배포해야 합니다.To connect a Kubernetes cluster to Azure, the cluster administrator needs to deploy agents. 이러한 에이전트는 azure-arc라는 Kubernetes 네임스페이스에서 실행되며 표준 Kubernetes 배포입니다.These agents run in a Kubernetes namespace named azure-arc and are standard Kubernetes deployments. 에이전트는 Azure에 대한 연결을 담당하고, Azure Arc 로그 및 메트릭을 수집하고, 구성 요청을 감시합니다.The agents are responsible for connectivity to Azure, collecting Azure Arc logs and metrics, and watching for configuration requests.

Azure Arc 지원 Kubernetes는 전송 중인 데이터를 보호하기 위해 업계 표준 SSL을 지원합니다.Azure Arc enabled Kubernetes supports industry-standard SSL to secure data in transit. 또한, 데이터는 기밀 유지를 위해 Azure Cosmos DB 데이터베이스에 암호화된 상태로 유지됩니다.Also, data is stored encrypted at rest in an Azure Cosmos DB database to ensure data confidentiality.

다음 단계는 Azure Stack HCI 클러스터에서 azure Arc에 Azure Kubernetes 서비스를 온 보 딩 하는 연습을 제공 합니다. Windows 관리 센터를 통해 Kubernetes 클러스터를 Azure Arc에 이미 등록 경우 이러한 단계를 건너뛸 수 있습니다.The following steps provide a walkthrough on onboarding Azure Kubernetes Service on Azure Stack HCI clusters to Azure Arc. You may skip these steps if you've already onboarded your Kubernetes cluster to Azure Arc through Windows Admin Center.

시작하기 전에Before you begin

다음 요구 사항이 준비 되었는지 확인 합니다.Verify you've the following requirements ready:

  • 실행 중인 Linux 작업자 노드가 하나 이상 있는 Azure Stack HCI 클러스터의 Azure Kubernetes 서비스입니다.An Azure Kubernetes Service on Azure Stack HCI cluster with at least one Linux worker node that is up and running.

  • Arc enabled Kubernetes 에이전트를 배포 하기 위해 클러스터의 클러스터 및 클러스터 관리자 역할에 액세스 하려면 kubeconfig 파일이 필요 합니다.You'll need a kubeconfig file to access the cluster and cluster-admin role on the cluster for deployment of Arc enabled Kubernetes agents.

  • Azure Kubernetes Service on Azure Stack HCI PowerShell 모듈이 설치 되어 있어야 합니다.Have the Azure Kubernetes Service on Azure Stack HCI PowerShell module installed.

  • Azure CLI 버전 2.3 +는 Azure Arc 사용 Kubernetes CLI 확장을 설치 하는 데 필요 합니다.Azure CLI version 2.3+ is required for installing the Azure Arc enabled Kubernetes CLI extensions. Azure CLI를 설치합니다.Install Azure CLI. 최신 버전으로 업데이트 하 여 Azure CLI 버전 2.3 이상이 있는지 확인할 수도 있습니다.You can also update to the latest version to ensure that you have Azure CLI version 2.3+.

  • 소유자 또는 참가자 인 Azure 구독.An Azure subscription on which you're an owner or contributor.

  • PowerShell 관리 창에서이 문서의 명령을 실행 합니다.Run the commands in this document in a PowerShell administrative window.

네트워크 요구 사항Network requirements

Azure Arc 에이전트는 다음 프로토콜/포트/아웃바운드 URL이 작동하도록 요구합니다.Azure Arc agents require the following protocols/ports/outbound URLs to function.

  • 포트 443의 TCP --> https://:443TCP on port 443 --> https://:443
  • 포트 9418의 TCP --> git://:9418TCP on port 9418 --> git://:9418
엔드포인트(DNS)Endpoint (DNS) DescriptionDescription
https://management.azure.com 에이전트가 Azure에 연결하고 클러스터를 등록하는 데 필요합니다.Required for the agent to connect to Azure and register the cluster
https://eastus.dp.kubernetesconfiguration.azure.com, https://westeurope.dp.kubernetesconfiguration.azure.comhttps://eastus.dp.kubernetesconfiguration.azure.com, https://westeurope.dp.kubernetesconfiguration.azure.com 상태를 푸시하고 구성 정보를 가져오는 에이전트의 데이터 평면 엔드포인트Data plane endpoint for the agent to push status and fetch configuration information
https://docker.io 컨테이너 이미지를 끌어오는 데 필요합니다.Required to pull container images
https://github.com, git://github.comhttps://github.com, git://github.com 예제 GitOps 리포지토리는 GitHub에서 호스트됩니다.Example GitOps repos are hosted on GitHub. 구성 에이전트를 사용하려면 지정한 git 엔드포인트에 연결해야 합니다.Configuration agent requires connectivity to whichever git endpoint you specify.
https://login.microsoftonline.com Azure Resource Manager 토큰을 가져오고 업데이트하는 데 필요합니다.Required to fetch and update Azure Resource Manager tokens
https://azurearcfork8s.azurecr.io Azure Arc 에이전트의 컨테이너 이미지를 끌어오는 데 필요합니다.Required to pull container images for Azure Arc agents
https://eus.his.arc.azure.com, https://weu.his.arc.azure.comhttps://eus.his.arc.azure.com, https://weu.his.arc.azure.com 시스템 할당 관리 id 인증서를 가져오는 데 필요 합니다.Required to pull system-assigned managed identity certificates

1 단계: Azure에 로그인Step 1: Log in to Azure

Azure에 로그인 하 고 로그인 한 후 소유자 또는 기여자 인 Azure 구독을 기본 구독으로 설정 합니다.Log in to Azure and after logging in, set an Azure subscription on which you're an owner or contributor as your default subscription.

az login
az account set --subscription "00000000-aaaa-bbbb-cccc-000000000000"

2 단계: Azure Arc 사용 Kubernetes의 두 공급자를 등록 합니다.Step 2: Register the two providers for Azure Arc enabled Kubernetes:

구독에서 Azure Arc enabled Kubernetes 서비스에 대 한 두 공급자를 이미 등록 한 경우이 단계를 건너뛸 수 있습니다.You can skip this step if you've already registered the two providers for Azure Arc enabled Kubernetes service on your subscription. 등록은 비동기 프로세스 이며 구독 당 한 번만 필요 합니다.Registration is an asynchronous process and needs to be once per subscription. 등록에 약 10분이 소요될 수 있습니다.Registration may take approximately 10 minutes.

az provider register --namespace Microsoft.Kubernetes
az provider register --namespace Microsoft.KubernetesConfiguration

다음 명령을 사용 하 여 등록 되었는지 확인할 수 있습니다.You can check if you're registered with the following commands:

az provider show -n Microsoft.Kubernetes -o table
az provider show -n Microsoft.KubernetesConfiguration -o table

3 단계: 리소스 그룹 만들기Step 3: Create a resource group

연결 된 클러스터 리소스를 보관할 리소스 그룹이 필요 합니다.You need a resource group to hold the connected cluster resource. 미국 동부 또는 유럽 서부 위치에서 기존 리소스 그룹을 사용할 수 있습니다.You can use an existing resource group in East US or West Europe locations. 미국 동부 또는 유럽 서부 위치에 기존 리소스 그룹이 없는 경우 다음 명령을 사용 하 여 새 리소스 그룹을 만듭니다.If you do not have an existing resource group in the East US or West Europe location, use the following command to create a new resource group:

az group create --name AzureArcTest -l EastUS -o table

4 단계: 새 서비스 주체 만들기Step 4: Create a new service principal

역할을 사용 하 여 서비스 주체를 이미 만들고 contributor 서비스 주체의 appID, 암호 및 테 넌 트 값을 알고 있는 경우이 단계를 건너뛸 수 있습니다.You can skip this step if you've already created a service principal with contributor role and know the service principal's appID, password, and tenant values.

정보 이름으로 새 서비스 주체를 만듭니다.Create a new service principal with an informative name. 이 이름은 Azure Active Directory 테 넌 트에 대해 고유 해야 합니다.This name must be unique for your Azure Active Directory tenant. 서비스 사용자의 기본 역할은 Contributor 입니다.The default role for a service principal is Contributor. 이 역할에는 Azure 계정에서 읽고 쓸 수 있는 모든 권한이 있습니다.This role has full permissions to read and write to an Azure account. 이 서비스 주체를 Azure Arc에 대 한 온보드 다중 클러스터에 다시 사용할 수도 있습니다. 서비스 사용자의 범위를 구독/리소스 그룹 으로 설정 합니다.You can also reuse this service principal to on-board multiple clusters to Azure Arc. Set the scope of your service principal to subscriptions/resource-group. 이후 단계에서 이러한 세부 정보를 필요로 하므로 서비스 주체의 appID, 암호 및 테 넌 트 값을 저장 해야 합니다.Make sure you save the service principal's appID, password, and tenant values as you will need these details in subsequent steps.

az ad sp create-for-RBAC --name "azure-arc-for-k8s" --scope /subscriptions/{Subscription ID}/resourceGroups/{Resource Group Name}

출력:Output:

{
  "appId": "00000000-0000-0000-0000-000000000000",
  "displayName": "azure-arc-for-k8s",
  "name": "https://azure-arc-for-k8s",
  "password": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
  "tenant": "ffffffff-gggg-hhhh-iiii-jjjjjjjjjjjj"
}

5 단계: 서비스 주체 세부 정보 저장Step 5: Save service principal details

만든 서비스 주체의 appId, 암호 및 테 넌 트 값, 클러스터 이름, Azure 구독 ID, 리소스 그룹 이름 및 위치를 PowerShell 변수에 저장 합니다.Save the created service principal's appId, password and tenant values, and cluster name, Azure subscription ID, resource group name, and location in PowerShell variables. 이렇게 하면 다른 자습서에서 세부 정보를 다시 사용할 수 있습니다.This will ensure you can reuse the details in other tutorials. PowerShell 세션을 종료 하려는 경우에도 메모장에 이러한 값을 저장 해야 합니다.Ensure that you also save these values in a notepad in case you want to close your PowerShell session.

$clusterName = #<name of your Kubernetes cluster>
$resourceGroup = #<Azure resource group to store your connected Kubernetes cluster in Azure Arc>
$location = #<Azure resource group location. This can only be eastus or westeurope for Azure Arc for Kubernetes>
$subscriptionId = #<Azure subscription Id>
$appId = #<appID from the service principal created above>
$password = #<password from the service principal created above>
$tenant = #<tenant from the service principal created above>

다음을 실행 하 여 변수에 올바른 값을 할당 했는지 확인 합니다.Ensure that you have assigned the right values to the variables by running:

echo $clusterName 
echo $resourceGroup
echo $location 
echo $subscriptionId 
echo $appId 
echo $password 
echo $tenant 

6 단계: 서비스 사용자 및 Aks-Hci PowerShell 모듈을 사용 하 여 Azure Arc에 연결Step 6: Connect to Azure Arc using service principal and the Aks-Hci PowerShell module

이제 서비스 주체 및 Aks-Hci PowerShell 모듈을 사용 하 여 Kubernetes 클러스터를 Azure에 연결 합니다.Next, we will connect our Kubernetes cluster to Azure using service principal and the Aks-Hci PowerShell module. 이 단계에서는 Kubernetes 용 Azure Arc 에이전트를 azure-arc 네임 스페이스에 배포 합니다.This step deploys Azure Arc agents for Kubernetes into the azure-arc namespace.

새로 만든 서비스 주체를 참조 하 고 Install-AksHciArcOnboarding Aks-Hci PowerShell 모듈에서 사용할 수 있는 명령을 실행 합니다.Reference the newly created service principal and run the Install-AksHciArcOnboarding command available in the Aks-Hci PowerShell module.

Install-AksHciArcOnboarding -clusterName $clusterName -resourcegroup $resourceGroup -location $location -subscriptionid $subscriptionId -clientid $appId -clientsecret $password -tenantid $tenant

연결된 클러스터 확인Verify connected cluster

Azure Portal에서 Kubernetes 클러스터 리소스를 볼 수 있습니다.You can view your Kubernetes cluster resource on the Azure portal. 브라우저에서 포털을 연 후에는 PowerShell 명령 앞부분에서 사용 된 리소스 이름 및 리소스 그룹 이름 입력을 기반으로 하는 Azure Arc 사용 Kubernetes 리소스와 리소스 그룹으로 이동 합니다 Install-AksHciArcOnboarding .Once you have the portal open in your browser, navigate to the resource group and the Azure Arc-enabled Kubernetes resource that's based on the resource name and resource group name inputs used earlier in the Install-AksHciArcOnboarding PowerShell command.

참고

클러스터를 등록 한 후 Azure Portal에서 Azure Arc enabled Kubernetes 리소스의 개요 페이지에 표시 되는 클러스터 메타 데이터 (클러스터 버전, 에이전트 버전, 노드 수)가 5 ~ 10 분 정도 소요 됩니다.After onboarding the cluster, it takes around 5 to 10 minutes for the cluster metadata (cluster version, agent version, number of nodes) to surface on the overview page of the Azure Arc enabled Kubernetes resource in Azure portal.

클러스터를 삭제 하거나 클러스터를 아웃 바운드 프록시 서버 뒤에 있는 경우 연결 하려면 Azure Arc 사용 Kubernetes 클러스터 연결을 참조 하세요.To delete your cluster, or to connect your cluster if it is behind an outbound proxy server, visit Connect an Azure Arc-enabled Kubernetes cluster.

Kubernetes용 Azure Arc 에이전트Azure Arc agents for Kubernetes

Azure Arc가 지원되는 Kubernetes는 azure-arc 네임스페이스에 소수의 연산자를 배포합니다.Azure Arc enabled Kubernetes deploys a few operators into the azure-arc namespace. 이러한 배포 및 Pod는 다음에서 확인할 수 있습니다.You can view these deployments and pods here:

kubectl -n azure-arc get deployments,pods

Azure Arc가 지원되는 Kubernetes는 azure-arc 네임스페이스에 배포된 클러스터에서 실행되는 소수의 에이전트(운영자)로 구성됩니다.Azure Arc enabled Kubernetes consists of a few agents (operators) that run in your cluster deployed to the azure-arc namespace.

  • deployment.apps/config-agent: 클러스터에 적용된 원본 제어 구성 리소스에 대해 연결된 클러스터를 감시하고 호환성 상태를 업데이트합니다.deployment.apps/config-agent: watches the connected cluster for source control configuration resources applied on the cluster and updates compliance state
  • deployment.apps/controller-manager: 연산자의 연산자이며 Azure Arc 구성 요소 간의 상호 작용을 조정합니다.deployment.apps/controller-manager: is an operator of operators and orchestrates interactions between Azure Arc components
  • deployment.apps/metrics-agent: 다른 Arc 에이전트의 메트릭을 수집하여 이러한 에이전트가 최적의 성능을 발휘하는지 확인합니다.deployment.apps/metrics-agent: collects metrics of other Arc agents to ensure that these agents are exhibiting optimal performance
  • deployment.apps/cluster-metadata-operator: 클러스터 메타 데이터를 수집 합니다. 클러스터 버전, 노드 수 및 Azure Arc 에이전트 버전deployment.apps/cluster-metadata-operator: gathers cluster metadata - cluster version, node count, and Azure Arc agent version
  • deployment.apps/resource-sync-agent: 위에서 언급한 클러스터 메타데이터를 Azure에 동기화합니다.deployment.apps/resource-sync-agent: syncs the above mentioned cluster metadata to Azure
  • deployment.apps/clusteridentityoperator: Azure Arc enabled Kubernetes는 현재 시스템 할당 id를 지원 합니다.deployment.apps/clusteridentityoperator: Azure Arc enabled Kubernetes currently supports system assigned identity. clusteridentityoperator는 다른 에이전트가 Azure와 통신 하기 위해 사용 하는 MSI (관리 서비스 id) 인증서를 유지 관리 합니다.clusteridentityoperator maintains the managed service identity (MSI) certificate used by other agents for communication with Azure.
  • deployment.apps/flux-logs-agent: 원본 제어 구성의 일부로 배포된 Flux 연산자에서 로그를 수집합니다.deployment.apps/flux-logs-agent: collects logs from the flux operators deployed as a part of source control configuration

다음 단계Next steps