Azure Container Apps의 Dapr 구성 요소
Dapr은 기능이 구성 요소로 제공되는 모듈식 디자인을 사용합니다. Dapr 구성 요소의 사용은 선택 사항이며 애플리케이션의 요구 사항에 의해서만 결정됩니다.
컨테이너 앱의 Dapr 구성 요소는 다음과 같은 환경 수준 리소스입니다.
- 지원되는 외부 서비스에 연결하기 위한 플러그형 추상화 모델을 제공할 수 있습니다.
- 컨테이너 앱 간에 공유하거나 특정 컨테이너 앱으로 범위를 지정할 수 있습니다.
- Dapr 비밀을 사용하여 구성 메타데이터를 안전하게 검색할 수 있습니다.
이 가이드에서는 Azure Container Apps 서비스에 Dapr 구성 요소를 구성하는 방법에 대해 알아봅니다.
구성 요소 스키마
Dapr 오픈 소스 프로젝트에서 모든 구성 요소는 다음과 같은 기본 스키마를 준수합니다.
apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
name: [COMPONENT-NAME]
namespace: [COMPONENT-NAMESPACE]
spec:
type: [COMPONENT-TYPE]
version: v1
initTimeout: [TIMEOUT-DURATION]
ignoreErrors: [BOOLEAN]
metadata:
- name: [METADATA-NAME]
value: [METADATA-VALUE]
Azure Container Apps에서 위의 스키마는 Dapr 구성 요소를 지원하고 apiVersion
, kind
, 중복 메타데이터 및 사양 속성을 비롯한 불필요한 필드를 제거하도록 약간 간소화되었습니다.
componentType: [COMPONENT-TYPE]
version: v1
initTimeout: [TIMEOUT-DURATION]
ignoreErrors: [BOOLEAN]
metadata:
- name: [METADATA-NAME]
value: [METADATA-VALUE]
구성 요소 범위
기본적으로 동일한 환경 내의 모든 Dapr 사용 컨테이너 앱은 배포된 구성 요소의 전체 세트를 로드합니다. 런타임에 적절한 컨테이너 앱만 구성 요소를 로드하도록 하려면 애플리케이션 범위를 사용해야 합니다. 다음 예제에서는 구성 요소가 Dapr 애플리케이션 ID가 APP-ID-1
및 APP-ID-2
인 두 개의 Dapr 지원 컨테이너 앱에서만 로드됩니다.
componentType: [COMPONENT-TYPE]
version: v1
initTimeout: [TIMEOUT-DURATION]
ignoreErrors: [BOOLEAN]
metadata:
- name: [METADATA-NAME]
value: [METADATA-VALUE]
scopes:
- [APP-ID-1]
- [APP-ID-2]
참고 항목
Dapr 구성 요소 범위는 더 나은 보안 조치를 제공하며 컨테이너 앱 이름이 아닌 컨테이너 앱의 Dapr 애플리케이션 ID에 해당합니다.
구성 요소 예제
Container Apps CLI를 통해 Dapr 구성 요소를 만들려면 컨테이너 앱 YAML 매니페스트를 사용하면 됩니다. 여러 구성 요소를 구성하는 경우 별도의 YAML 파일을 만들고 각 구성 요소에 적용해야 합니다.
az containerapp env dapr-component set --name ENVIRONMENT_NAME --resource-group RESOURCE_GROUP_NAME --dapr-component-name pubsub --yaml "./pubsub.yaml"
# pubsub.yaml for Azure Service Bus component
componentType: pubsub.azure.servicebus.queue
version: v1
secretStoreComponent: "my-secret-store"
metadata:
- name: namespaceName
# Required when using Azure Authentication.
# Must be a fully-qualified domain name
value: "[your_servicebus_namespace.servicebus.windows.net]"
- name: azureTenantId
value: "[your_tenant_id]"
- name: azureClientId
value: "[your_client_id]"
- name: azureClientSecret
secretRef: azClientSecret
scopes:
- publisher-app
- subscriber-app