중요합니다
이 페이지에는 미리 보기 상태인 Kubernetes 배포 매니페스트를 사용하여 Azure IoT Operations 구성 요소를 관리하기 위한 지침이 포함되어 있습니다. 이 기능은 몇 가지 제한 사항을 제공하며 프로덕션 워크로드에 사용하면 안 됩니다.
베타, 미리 보기로 제공되거나 아직 일반 공급으로 릴리스되지 않은 Azure 기능에 적용되는 약관은 Microsoft Azure 미리 보기에 대한 추가 사용 약관을 참조하세요.
데이터 흐름 그래프는 레지스트리 엔드포인트를 사용하여 컨테이너 레지스트리에서 WASM(WebAssembly) 모듈 및 그래프 정의를 가져옵니다. ACR(Azure Container Registry) 또는 기타 OCI 호환 레지스트리에 연결하도록 엔드포인트 설정, 인증 및 기타 설정을 구성할 수 있습니다.
필수 조건
- Azure IoT Operations의 인스턴스, 버전 1.2 이상
- Azure Container Registry와 같은 컨테이너 레지스트리에 대한 액세스
레지스트리 엔드포인트 개요
레지스트리 엔드포인트는 컨테이너 레지스트리에 액세스하기 위한 연결 세부 정보 및 인증 방법을 정의합니다. 레지스트리 엔드포인트는 다음에서 사용됩니다.
- 데이터 흐름 그래프: WASM 모듈 및 그래프 정의 가져오기
- Akri 커넥터: 사용자 지정 커넥터 템플릿을 끌어오려면
레지스트리 엔드포인트는 다음을 통해 인증을 지원합니다.
- 시스템 할당 관리 ID
- 사용자가 할당한 관리 ID
- 아티팩트 풀 비밀(사용자 이름 및 암호)
- 익명 액세스(공용 레지스트리의 경우)
레지스트리 엔드포인트 만들기
Bicep 또는 Kubernetes를 사용하여 레지스트리 엔드포인트를 만들 수 있습니다.
중요합니다
현재 Akri 커넥터에서 레지스트리 엔드포인트 리소스를 사용할 때 알려진 문제가 있습니다. 자세한 내용은 Akri 커넥터가 레지스트리 엔드포인트 리소스에서 작동하지 않음을 참조하세요.
다음 콘텐츠를 사용하여 Bicep .bicep 파일을 만듭니다.
param aioInstanceName string = '<AIO_INSTANCE_NAME>'
param customLocationName string = '<CUSTOM_LOCATION_NAME>'
param registryEndpointName string = '<REGISTRY_ENDPOINT_NAME>'
param registryHost string = '<REGISTRY_HOST>' // For example, myregistry.azurecr.io
resource aioInstance 'Microsoft.IoTOperations/instances@2024-11-01' existing = {
name: aioInstanceName
}
resource customLocation 'Microsoft.ExtendedLocation/customLocations@2021-08-31-preview' existing = {
name: customLocationName
}
resource registryEndpoint 'Microsoft.IoTOperations/instances/registryEndpoints@2025-07-01-preview' = {
parent: aioInstance
name: registryEndpointName
extendedLocation: {
name: customLocation.id
type: 'CustomLocation'
}
properties: {
host: registryHost
authentication: {
method: 'SystemAssignedManagedIdentity'
systemAssignedManagedIdentitySettings: {
audience: 'https://management.azure.com/'
}
}
}
}
Azure CLI를 사용하여 Bicep 파일을 배포합니다.
az deployment group create --resource-group <RESOURCE_GROUP> --template-file <FILE>.bicep
구성 옵션
이 섹션에서는 레지스트리 엔드포인트에 사용할 수 있는 구성 옵션에 대해 설명합니다.
호스트
이 host 속성은 컨테이너 레지스트리 호스트 이름을 지정합니다. Azure Container Registry의 경우 <registry-name>.azurecr.io 형식을 사용합니다. 호스트 속성은 HTTPS URL 또는 호스트 이름만 지원합니다.
예시들:
myregistry.azurecr.iohttps://myregistry.azurecr.io
패턴: Azure Container Registry의 패턴 ^(https:\/\/)?[a-zA-Z0-9\-]+\.azurecr\.io$와(과) 일치해야 합니다.
인증 방법
레지스트리 엔드포인트는 컨테이너 레지스트리에 안전하게 액세스하는 몇 가지 인증 방법을 지원합니다.
시스템 할당 관리 ID
시스템이 할당한 관리 ID는 Azure IoT 작업 인스턴스의 기본 제공 ID를 사용하여 레지스트리로 인증합니다. 자격 증명을 관리할 필요가 없으므로 Azure Container Registry에 권장되는 방법입니다.
레지스트리 엔드포인트를 구성하기 전에 Azure IoT 작업 시스템이 할당한 관리 ID에 필요한 권한이 있는지 확인합니다.
- Azure Portal에서 Azure IoT Operations 인스턴스로 이동하여 개요를 선택합니다.
- Azure IoT Operations Arc 확장 후에 나열된 확장의 이름을 복사합니다. 예를 들어, azure-iot-operations-xxxx7입니다.
- 컨테이너 레지스트리 >액세스 제어(IAM)>역할 할당 추가로 이동합니다.
-
역할 탭에서
AcrPull역할을 선택합니다. - 구성원 탭에서 다음에 대한 액세스 권한 할당을 위해 사용자, 그룹 또는 서비스 주체를 선택한 다음 +구성원 선택을 선택하고 Azure IoT 작업 Arc 확장 이름을 검색합니다. 확장을 선택하고 선택을 선택합니다.
- 검토 + 할당을 선택하여 역할 할당을 완료합니다.
authentication: {
method: 'SystemAssignedManagedIdentity'
systemAssignedManagedIdentitySettings: {
audience: 'https://management.azure.com/'
extensionName: null // Optional: specific extension name
tenantId: null // Optional: specific tenant ID
}
}
시스템이 할당한 관리 ID 설정:
| 재산 | 설명 | 필수 | 유형 |
|---|---|---|---|
audience |
인증할 서비스의 대상 그룹입니다. | 아니오 | String |
extensionName |
사용할 특정 확장 이름입니다. | 아니오 | String |
tenantId |
인증을 위한 테넌트 ID입니다. | 아니오 | String |
연산자는 제공되지 않은 경우 엔드포인트에서 대상 그룹을 유추하려고 시도합니다. Azure Container Registry의 경우 대상 그룹은 일반적으로 https://management.azure.com/입니다.
사용자가 할당한 관리 ID
사용자가 할당한 관리 ID를 사용하면 필요한 권한으로 만들고 구성한 특정 관리 ID를 사용할 수 있습니다.
레지스트리 엔드포인트를 구성하기 전에 사용자가 할당한 관리 ID에 컨테이너 레지스트리에 대한 AcrPull 역할이 있는지 확인합니다.
authentication: {
method: 'UserAssignedManagedIdentity'
userAssignedManagedIdentitySettings: {
clientId: '<CLIENT_ID>'
tenantId: '<TENANT_ID>'
scope: null // Optional: specific scope
}
}
사용자가 할당한 관리 ID 설정:
| 재산 | 설명 | 필수 | 유형 |
|---|---|---|---|
clientId |
사용자가 할당한 관리 ID에 대한 클라이언트 ID입니다. | 예 | String |
tenantId |
관리 ID가 있는 테넌트 ID입니다. | 예 | String |
scope |
.default 접미사가 있는 리소스의 범위입니다. |
아니오 | String |
연산자는 제공되지 않은 경우 엔드포인트에서 범위를 유추하려고 시도합니다.
아티팩트 끌어오기 비밀
아티팩트 끌어오기 비밀을 사용하면 관리 ID 인증을 지원하지 않는 레지스트리에 사용자 이름 및 암호 인증을 사용할 수 있습니다.
먼저 레지스트리 자격 증명을 포함하는 Kubernetes 비밀을 만듭니다.
kubectl create secret docker-registry my-registry-secret \
--docker-server=myregistry.azurecr.io \
--docker-username=<USERNAME> \
--docker-password=<PASSWORD> \
-n azure-iot-operations
authentication: {
method: 'ArtifactPullSecret'
artifactPullSecretSettings: {
secretRef: 'my-registry-secret'
}
}
익명 인증
익명 인증은 인증이 필요하지 않은 공용 레지스트리에 사용됩니다.
authentication: {
method: 'Anonymous'
anonymousSettings: {}
}
Azure Container Registry 통합
ACR(Azure Container Registry)은 Azure IoT 작업에 권장되는 컨테이너 레지스트리입니다. ACR은 Microsoft Entra ID를 통해한 통합 인증을 통해 안전한 프라이빗 Docker 컨테이너 레지스트리를 제공합니다.
ACR에 대한 필수 구성 요소
- ACR 인스턴스 만들기: 인스턴스가 없는 경우 구독에 Azure Container Registry 인스턴스를 만듭니다.
-
권한 구성:Azure IoT 작업 관리 ID에 레지스트리에 대한
AcrPull권한이 있는지 확인합니다. - 아티팩트 푸시: ORAS CLI와 같은 도구를 사용하여 WASM 모듈 및 그래프 정의를 레지스트리에 업로드합니다.
ACR 구성 예제
ACR 레지스트리 엔드포인트를 구성하는 전체 예제는 다음과 같습니다.
param aioInstanceName string = 'my-aio-instance'
param customLocationName string = 'my-custom-location'
param acrName string = 'myregistry'
resource aioInstance 'Microsoft.IoTOperations/instances@2024-11-01' existing = {
name: aioInstanceName
}
resource customLocation 'Microsoft.ExtendedLocation/customLocations@2021-08-31-preview' existing = {
name: customLocationName
}
resource acrRegistryEndpoint 'Microsoft.IoTOperations/instances/registryEndpoints@2025-07-01-preview' = {
parent: aioInstance
name: 'acr-endpoint'
extendedLocation: {
name: customLocation.id
type: 'CustomLocation'
}
properties: {
host: '${acrName}.azurecr.io'
authentication: {
method: 'SystemAssignedManagedIdentity'
systemAssignedManagedIdentitySettings: {
audience: 'https://management.azure.com/'
}
}
}
}
기타 컨테이너 레지스트리
레지스트리 엔드포인트는 다음과 같은 다른 OCI 호환 컨테이너 레지스트리도 지원합니다.
- Docker 허브
- Harbor
- AWS ECR(Elastic Container Registry)
- GCR(Google Container Registry)
이러한 레지스트리의 경우 일반적으로 Azure 관리 ID를 지원하지 않는 한 인증에 아티팩트 끌어오기 비밀을 사용합니다.