다음을 통해 공유


Azure IoT 작업을 실행할 수 있는 AKS Edge Essentials 클러스터 만들기 및 구성

AKS(Azure Kubernetes Service) Edge Essentials는 Azure IoT Operations에 지원되는 클러스터 플랫폼 중 하나입니다. AKS Edge Essentials를 사용하여 Microsoft 관리 Kubernetes 클러스터를 만들고 Azure IoT Operations를 워크로드로 배포할 수 있습니다. 이 문서에서는 Azure IoT Operations에 필요한 구성을 사용하여 AKS Edge Essentials Kubernetes 클러스터를 만든 다음, 해당 클러스터를 Azure Arc에 연결하는 스크립트를 실행하는 단계를 설명합니다.

참고 항목

Azure IoT Operations는 단일 머신 클러스터에 배포될 때 AKS Edge Essentials를 지원합니다. 여러 컴퓨터에 클러스터를 배포하는 것은 실험적 기능입니다.

스크립트를 실행하기 위한 필수 구성 요소

스크립트를 실행하려면 다음 필수 구성 요소가 필요합니다.

  • 소유자 역할 또는 기여자사용자 액세스 관리자 역할의 조합이 있는 Azure 구독입니다. 구독으로 이동하고, Azure Portal의 왼쪽에서 액세스 제어(IAM)를 선택한 다음, 내 액세스 보기를 선택하여 액세스 수준을 확인할 수 있습니다. Azure 구독이 아직 없는 경우 시작하기 전에 무료 구독을 만듭니다.

  • 개발 머신에 설치된 Azure CLI 버전 2.64.0 이상. az --version을 사용하여 버전을 확인하고 필요한 경우 az upgrade를 사용하여 업데이트합니다. 자세한 내용은 Azure CLI 설치 방법을 참조하세요.

  • Azure CLI용 Connectedk8s 확장의 최신 버전을 설치합니다.

    az extension add --upgrade --name connectedk8s 
    
  • 하드웨어 요구 사항: 컴퓨터에 Azure IoT Operations용으로 예약된 최소 16GB RAM, 4개의 사용 가능한 vCPU 및 52GB의 사용 가능한 디스크 공간이 있는지 확인합니다.

Arc 지원 클러스터 만들기

AksEdgeQuickStartForAio.ps1 스크립트는 클러스터를 만들고 연결하는 프로세스를 자동화하며 AKS Edge Essentials에서 Azure IoT 작업을 배포하는 데 권장되는 경로입니다. 스크립트는 다음 작업을 수행합니다.

  • 이 리포지토리에서 최신 AKS Edge Essentials MSI를 다운로드합니다.
  • AKS Edge Essentials를 설치하고 Windows 머신에 단일 컴퓨터 Kubernetes 클러스터를 배포하고 만듭니다.
  • Azure 구독에 연결하고, 리소스 그룹이 아직 없는 경우 리소스 그룹을 만들고, Arc에 연결하여 Arc 지원 Kubernetes 클러스터를 만듭니다.
  • Arc 지원 Kubernetes 클러스터에서 사용자 지정 위치 기능을 사용하도록 설정합니다.
  • Arc 지원 Kubernetes 클러스터에서 워크로드 ID 페더레이션 기능을 사용하도록 설정합니다.
  • 로컬 경로 프로비저닝을 배포합니다.
  • MQTT 브로커에 대한 호스트 Windows 머신에서 방화벽 규칙을 구성합니다.
  • Kubernetes 컨트롤 플레인 노드 역할을 하는 Linux VM에서 다음을 수행합니다.
    • Kubernetes 서비스 기본 IP 범위 10.96.0.0/28에 대한 포트 프록시를 구성합니다.
    • IP 테이블 규칙을 구성합니다.
      • sudo iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 9110 -j ACCEPT
      • sudo iptables -A INPUT -p tcp --dport (10124, 8420, 2379, 50051) -j ACCEPT

빠른 시작 스크립트를 실행하려면 다음 단계를 수행합니다.

  1. 관리자 권한으로 PowerShell 창을 열고 디렉터리를 작업 폴더로 변경합니다.

  2. objectId Azure Arc 서비스가 테넌트에서 사용하는 Microsoft Entra ID 애플리케이션을 가져옵니다. GUID 값을 변경하지 않고 기록된 대로 정확하게 다음 명령을 실행합니다.

    az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query id -o tsv
    
  3. 자리 표시자 값을 사용자의 정보로 바꾸어 다음 명령을 실행합니다.

    $url = "https://raw.githubusercontent.com/Azure/AKS-Edge/main/tools/scripts/AksEdgeQuickStart/AksEdgeQuickStartForAio.ps1"
    Invoke-WebRequest -Uri $url -OutFile .\AksEdgeQuickStartForAio.ps1
    Unblock-File .\AksEdgeQuickStartForAio.ps1
    Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force
    .\AksEdgeQuickStartForAio.ps1 -SubscriptionId "<SUBSCRIPTION_ID>" -TenantId "<TENANT_ID>" -ResourceGroupName "<RESOURCE_GROUP_NAME>"  -Location "<LOCATION>"  -ClusterName "<CLUSTER_NAME>" -CustomLocationOid "<ARC_APP_OBJECT_ID>"
    
    자리 표시자
    SUBSCRIPTION_ID Azure 구독의 ID입니다. 구독 ID를 모르는 경우 Azure 구독 찾기를 참조하세요.
    TENANT_ID Microsoft Entra 테넌트의 ID 테넌트 ID를 모르는 경우 Microsoft Entra 테넌트 찾기를 참조하세요.
    RESOURCE_GROUP_NAME 기존 리소스 그룹의 이름 또는 만들 새 리소스 그룹의 이름 리소스 그룹당 하나의 Azure IoT Operations 인스턴스만 지원됩니다.
    위치 가까운 Azure 지역입니다. Azure IoT Operations의 지원되는 Azure 지역 목록은 지원되는 지역을 참조 하세요.
    CLUSTER_NAME 새로 생성될 클러스터의 이름
    ARC_APP_OBJECT_ID 2단계에서 검색한 개체 ID 값입니다.

    이 프로세스의 일부로 컴퓨터를 다시 부팅하는 경우와 같이 배포 중에 문제가 있는 경우 명령 집합을 다시 실행합니다.

  4. 다음 명령을 실행하여 배포가 성공했는지 확인합니다.

    Import-Module AksEdge
    Get-AksEdgeDeploymentInfo
    

    명령의 Get-AksEdgeDeploymentInfo 출력에서 클러스터의 Arc 상태가 연결됨을 확인해야 합니다.

클러스터 확인

Kubernetes 클러스터가 Azure Arc 지원인지 확인하려면 다음 명령을 실행합니다.

kubectl get deployments,pods -n azure-arc

출력은 다음 예제와 유사합니다.

NAME                                         READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/clusterconnect-agent         1/1     1            1           10m
deployment.apps/extension-manager            1/1     1            1           10m
deployment.apps/clusteridentityoperator      1/1     1            1           10m
deployment.apps/controller-manager           1/1     1            1           10m
deployment.apps/flux-logs-agent              1/1     1            1           10m
deployment.apps/cluster-metadata-operator    1/1     1            1           10m
deployment.apps/extension-events-collector   1/1     1            1           10m
deployment.apps/config-agent                 1/1     1            1           10m
deployment.apps/kube-aad-proxy               1/1     1            1           10m
deployment.apps/resource-sync-agent          1/1     1            1           10m
deployment.apps/metrics-agent                1/1     1            1           10m

NAME                                              READY   STATUS    RESTARTS        AGE
pod/clusterconnect-agent-5948cdfb4c-vzfst         3/3     Running   0               10m
pod/extension-manager-65b8f7f4cb-tp7pp            3/3     Running   0               10m
pod/clusteridentityoperator-6d64fdb886-p5m25      2/2     Running   0               10m
pod/controller-manager-567c9647db-qkprs           2/2     Running   0               10m
pod/flux-logs-agent-7bf6f4bf8c-mr5df              1/1     Running   0               10m
pod/cluster-metadata-operator-7cc4c554d4-nck9z    2/2     Running   0               10m
pod/extension-events-collector-58dfb78cb5-vxbzq   2/2     Running   0               10m
pod/config-agent-7579f558d9-5jnwq                 2/2     Running   0               10m
pod/kube-aad-proxy-56d9f754d8-9gthm               2/2     Running   0               10m
pod/resource-sync-agent-769bb66b79-z9n46          2/2     Running   0               10m
pod/metrics-agent-6588f97dc-455j8                 2/2     Running   0               10m

다음 단계