Komponenty Dapr v Azure Container Apps
Dapr používá modulární návrh, ve kterém se funkce dodává jako součást. Použití komponent Dapr je volitelné a diktuje výhradně požadavky vaší aplikace.
Komponenty Dapr v kontejnerových aplikacích jsou prostředky na úrovni prostředí, které:
- Může poskytnout připojitelný abstrakce model pro připojení k podpůrným externím službám.
- Dají se sdílet napříč kontejnerovými aplikacemi nebo se dají vymezit na konkrétní kontejnerové aplikace.
- Pomocí tajných kódů Dapr můžete bezpečně načíst metadata konfigurace.
V této příručce se dozvíte, jak nakonfigurovat komponenty Dapr pro služby Azure Container Apps.
Schéma komponent
V opensourcovém projektu Dapr odpovídají všechny komponenty následujícímu základnímu schématu.
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]
Ve službě Azure Container Apps je výše uvedené schéma mírně zjednodušené, aby podporovalo komponenty Dapr a odebralo nepotřebná pole, včetně apiVersion
, kind
a redundantních metadat a vlastností specifikace.
componentType: [COMPONENT-TYPE]
version: v1
initTimeout: [TIMEOUT-DURATION]
ignoreErrors: [BOOLEAN]
metadata:
- name: [METADATA-NAME]
value: [METADATA-VALUE]
Obory komponent
Ve výchozím nastavení všechny kontejnerové aplikace s podporou Dapr ve stejném prostředí načítají úplnou sadu nasazených komponent. Aby se zajistilo, že za běhu načítají pouze příslušné komponenty kontejnerových aplikací, měly by se použít obory aplikací. V následujícím příkladu je komponenta načtena pouze dvěma aplikacemi kontejnerů s podporou Dapr s ID APP-ID-1
aplikací Dapr a APP-ID-2
:
componentType: [COMPONENT-TYPE]
version: v1
initTimeout: [TIMEOUT-DURATION]
ignoreErrors: [BOOLEAN]
metadata:
- name: [METADATA-NAME]
value: [METADATA-VALUE]
scopes:
- [APP-ID-1]
- [APP-ID-2]
Poznámka:
Obory komponent Dapr odpovídají ID aplikace kontejneru Dapr, nikoli názvu aplikace kontejneru.
Připojení k externím službám přes Dapr
V aplikacích kontejnerů se podporuje několik přístupů k bezpečnému navázání připojení k externím službám pro komponenty Dapr.
- Použití spravované identity
- Vytvořením odkazu na komponentu úložiště tajných kódů Dapr vytvoříte následující:
- Úložiště tajných kódů služby Azure Key Vault, které používá spravovanou identitu nebo
- Tajné kódy Kubernetes spravované platformou
Použití spravované identity
U služeb hostovaných v Azure může Dapr použít spravovanou identitu aplikací kontejnerů s vymezeným oborem k ověření u poskytovatele back-endových služeb. Při použití spravované identity nemusíte do manifestu komponenty zahrnout tajné informace. Použití spravované identity se upřednostňuje, protože eliminuje ukládání citlivých vstupů do komponent a nevyžaduje správu úložiště tajných kódů.
Poznámka:
Pole azureClientId
metadat (ID klienta spravované identity) se vyžaduje pro všechny komponenty, které se ověřují pomocí spravované identity přiřazené uživatelem.
Použití odkazu na komponentu úložiště tajných kódů Dapr
Při vytváření komponent Dapr pro služby s povolenými id mimo Entra vyžadují určitá pole metadat citlivé vstupní hodnoty. Doporučeným přístupem k načtení těchto tajných kódů je odkazování na existující komponentu úložiště tajných kódů Dapr, která bezpečně přistupuje k tajným informacím.
Nastavení odkazu:
- Vytvořte komponentu úložiště tajných kódů Dapr pomocí schématu Azure Container Apps. Typ komponenty pro všechna podporovaná úložiště tajných kódů Dapr začíná
secretstores.
na . - Vytvořte další komponenty (podle potřeby), které odkazují na komponentu úložiště tajných kódů Dapr, kterou jste vytvořili pro načtení vstupu citlivých metadat.
Vytvoření komponenty úložiště tajných kódů Dapr
Při vytváření komponenty úložiště tajných kódů ve službě Azure Container Apps můžete v části metadat zadat citlivé informace jedním z následujících způsobů:
- Pro úložiště tajných kódů azure Key Vault použijte spravovanou identitu k navázání připojení.
- V případě úložišť tajných kódů mimo Azure použijte tajné kódy Kubernetes spravované platformou, které jsou definované přímo jako součást manifestu komponenty.
Úložiště tajných kódů služby Azure Key Vault
Následující komponenta představuje nejjednodušší možnou konfiguraci úložiště tajných kódů pomocí úložiště tajných kódů služby Azure Key Vault. V tomto příkladu jsou aplikace vydavatele a odběratele nakonfigurované tak, aby měly spravovanou identitu přiřazenou systémem nebo uživatelem s příslušnými oprávněními k instanci služby Azure Key Vault.
componentType: secretstores.azure.keyvault
version: v1
metadata:
- name: vaultName
value: [your_keyvault_name]
- name: azureEnvironment
value: "AZUREPUBLICCLOUD"
- name: azureClientId # Only required for authenticating user-assigned managed identity
value: [your_managed_identity_client_id]
scopes:
- publisher-app
- subscriber-app
Tajné kódy Kubernetes spravované platformou
Tajné kódy Kubernetes, místní proměnné prostředí a úložiště tajných kódů Dapr místního souboru se v Azure Container Apps nepodporují. Jako alternativu pro upstreamové úložiště tajných kódů Kubernetes nabízí Azure Container Apps přístup spravovaný platformou pro vytváření a využívání tajných kódů Kubernetes.
Tato konfigurace komponenty definuje citlivou hodnotu jako parametr tajného kódu, na který lze odkazovat v části metadat. Tento přístup se dá použít k připojení ke službám mimo Azure nebo ve scénářích vývoje/testování pro rychlé nasazování komponent prostřednictvím rozhraní příkazového řádku bez nastavení úložiště tajných kódů nebo spravované identity.
componentType: secretstores.azure.keyvault
version: v1
metadata:
- name: vaultName
value: [your_keyvault_name]
- name: azureEnvironment
value: "AZUREPUBLICCLOUD"
- name: azureTenantId
value: "[your_tenant_id]"
- name: azureClientId
value: "[your_client_id]"
- name: azureClientSecret
secretRef: azClientSecret
secrets:
- name: azClientSecret
value: "[your_client_secret]"
scopes:
- publisher-app
- subscriber-app
Odkazování na komponenty úložiště tajných kódů Dapr
Jakmile vytvoříte úložiště tajných kódů Dapr pomocí některého z předchozích přístupů, můžete na toto úložiště tajných kódů odkazovat z jiných komponent Dapr ve stejném prostředí. Následující příklad ukazuje použití ověřování Entra ID.
componentType: pubsub.azure.servicebus.queue
version: v1
secretStoreComponent: "[your_secret_store_name]"
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
Příklady komponent
Pokud chcete vytvořit komponentu Dapr prostřednictvím rozhraní příkazového řádku Container Apps, můžete použít manifest YAML pro aplikace kontejnerů. Při konfiguraci více komponent musíte vytvořit a použít samostatný soubor YAML pro každou komponentu.
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