Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Es ist einfach, Ressourcen mithilfe einer der unterstützten APIs als Azure Container Apps (ACA) zu veröffentlichen :
- AzureContainerAppProjectExtensions.PublishAsAzureContainerApp
- AzureContainerAppContainerExtensions.PublishAsAzureContainerApp
- AzureContainerAppExecutableExtensions.PublishAsAzureContainerApp
Diese APIs erstellen automatisch eine Standard-ACA-Umgebung, wenn Sie Ihre App veröffentlichen. Obwohl diese Standardeinrichtung für die meisten Szenarien gut funktioniert, müssen Sie die ACA-Umgebung möglicherweise an bestimmte Anforderungen anpassen. Verwenden Sie die AddAzureContainerAppEnvironment
Methode, um dies zu erreichen.
Der .NET.NET Aspire App-Host vereinfacht die Infrastrukturbereitstellung, indem Code generiert wird, um Ressourcen für Ihre Anwendungen zu erstellen Azure . Mit diesem Ansatz können Sie bereitstellungsbezogene Aspekte direkt in C# modellieren und konfigurieren, wodurch die Notwendigkeit reduziert wird, sich auf Tools wie Bicep zu verlassen. Diese Aspekte umfassen das Konfigurieren von ACA-Umgebungen, die eine serverlose Plattform für die Ausführung von containerisierten Anwendungen bieten.
Mithilfe der APIs (erläutert in Customize Azure resourcesAzure.Provisioning) können Sie ACA-Umgebungen zusammen mit verwandten Ressourcen konfigurieren und anpassen, z. B. Containerregistrierungen und Dateifreigabevolumes. Jede verfügbare Bereitstellungseinstellung kann konfiguriert werden. Weitere Informationen zu den verfügbaren Einstellungen finden Sie unter Microsoft.App managedEnvironments.
Dieser Artikel führt Sie durch den Prozess der Anpassung von ACA-Umgebungen für Ihre .NET.NET Aspire Lösungen.
Eine ACA-Umgebung hinzufügen
Der AzureContainerAppEnvironmentResource
Typ modelliert eine ACA-Umgebungsressource. Wenn Sie die AddAzureContainerAppEnvironment
Methode aufrufen, wird eine Instanz dieses Typs erstellt (umschlossen in der IResourceBuilder<T>).
var builder = DistributedApplication.CreateBuilder(args);
var acaEnv = builder.AddAzureContainerAppEnvironment("aca-env");
// Omitted for brevity...
builder.Build().Run();
Standardmäßig generiert der Aufruf dieser API zum Hinzufügen einer ACA-Umgebung das folgende Bicep-Bereitstellungsmodul:
@description('The location for the resource(s) to be deployed.')
param location string = resourceGroup().location
param userPrincipalId string
param tags object = { }
resource aca_env_mi 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' = {
name: take('aca_env_mi-${uniqueString(resourceGroup().id)}', 128)
location: location
tags: tags
}
resource aca_env_acr 'Microsoft.ContainerRegistry/registries@2023-07-01' = {
name: take('acaenvacr${uniqueString(resourceGroup().id)}', 50)
location: location
sku: {
name: 'Basic'
}
tags: tags
}
resource aca_env_acr_aca_env_mi_AcrPull 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
name: guid(aca_env_acr.id, aca_env_mi.id, subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '7f951dda-4ed3-4680-a7ca-43fe172d538d'))
properties: {
principalId: aca_env_mi.properties.principalId
roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '7f951dda-4ed3-4680-a7ca-43fe172d538d')
principalType: 'ServicePrincipal'
}
scope: aca_env_acr
}
resource aca_env_law 'Microsoft.OperationalInsights/workspaces@2023-09-01' = {
name: take('acaenvlaw-${uniqueString(resourceGroup().id)}', 63)
location: location
properties: {
sku: {
name: 'PerGB2018'
}
}
tags: tags
}
resource aca_env 'Microsoft.App/managedEnvironments@2024-03-01' = {
name: take('acaenv${uniqueString(resourceGroup().id)}', 24)
location: location
properties: {
appLogsConfiguration: {
destination: 'log-analytics'
logAnalyticsConfiguration: {
customerId: aca_env_law.properties.customerId
sharedKey: aca_env_law.listKeys().primarySharedKey
}
}
workloadProfiles: [
{
name: 'consumption'
workloadProfileType: 'Consumption'
}
]
}
tags: tags
}
resource aspireDashboard 'Microsoft.App/managedEnvironments/dotNetComponents@2024-10-02-preview' = {
name: 'aspire-dashboard'
properties: {
componentType: 'AspireDashboard'
}
parent: aca_env
}
resource aca_env_Contributor 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
name: guid(aca_env.id, userPrincipalId, subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'b24988ac-6180-42a0-ab88-20f7382dd24c'))
properties: {
principalId: userPrincipalId
roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'b24988ac-6180-42a0-ab88-20f7382dd24c')
}
scope: aca_env
}
output MANAGED_IDENTITY_NAME string = aca_env_mi.name
output MANAGED_IDENTITY_PRINCIPAL_ID string = aca_env_mi.properties.principalId
output AZURE_LOG_ANALYTICS_WORKSPACE_NAME string = aca_env_law.name
output AZURE_LOG_ANALYTICS_WORKSPACE_ID string = aca_env_law.id
output AZURE_CONTAINER_REGISTRY_NAME string = aca_env_acr.name
output AZURE_CONTAINER_REGISTRY_ENDPOINT string = aca_env_acr.properties.loginServer
output AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID string = aca_env_mi.id
output AZURE_CONTAINER_APPS_ENVIRONMENT_NAME string = aca_env.name
output AZURE_CONTAINER_APPS_ENVIRONMENT_ID string = aca_env.id
output AZURE_CONTAINER_APPS_ENVIRONMENT_DEFAULT_DOMAIN string = aca_env.properties.defaultDomain
Dieses Modul konfiguriert:
- Eine vom Benutzer zugewiesene verwaltete Identität für die ACA-Umgebung.
- Eine Azure Container Registry (ACR) für die ACA-Umgebung.
- Ein Log Analytics-Arbeitsbereich für die ACA-Umgebung.
- Eine Azure Container Apps-Umgebung.
- Das .NET.NET Aspire Dashboard für die ACA-Umgebung.
- Eine Rollenzuweisung für die Benutzerprinzipal-ID in der ACA-Umgebung.
- Verschiedene Ausgaben für die ACA-Umgebung.
Mithilfe der acaEnv
Variablen können Sie einen Aufruf der ConfigureInfrastructure API verketten, um die ACA-Umgebung nach Ihren Wünschen anzupassen. Weitere Informationen finden Sie unter Konfigurieren der Infrastruktur.
Umgang mit Benennungskonventionen
Verwendet standardmäßig AddAzureContainerAppEnvironment
ein anderes Azure Ressourcenbenennungsschema als das Azure Developer CLI (azd
). Wenn Sie eine vorhandene Bereitstellung aktualisieren, die zuvor azd
verwendet hat, werden möglicherweise doppelte Azure Ressourcen angezeigt. Um dieses Problem zu vermeiden, rufen Sie die WithAzdResourceNaming
-Methode auf, um zur von azd
verwendeten Benennungskonvention zurückzukehren.
var builder = DistributionApplicationBuilder.Create(args);
var acaEnv = builder.AddAzureContainerAppEnvironment("aca-env")
.WithAzdResourceNaming();
// Omitted for brevity...
builder.Build().Run();
Durch Aufrufen dieser API wird sichergestellt, dass Ihre vorhandenen Azure Ressourcen konsistent bleiben und Duplizierungen verhindert werden.
Bereitstellungsinfrastruktur anpassen
Alle .NET AspireAzure Ressourcen sind Unterklassen des AzureProvisioningResource Typs. Dadurch wird die Anpassung des generierten Bicep ermöglicht, indem eine Fluent-API bereitgestellt wird, die es ermöglicht, die Azure-Ressourcen mithilfe der ConfigureInfrastructure<T>(IResourceBuilder<T>, Action<AzureResourceInfrastructure>)-API zu konfigurieren.
var builder = DistributionApplicationBuilder.Create(args);
var acaEnv = builder.AddAzureContainerAppEnvironment(Config.ContainEnvironmentName);
acaEnv.ConfigureInfrastructure(config =>
{
var resources = config.GetProvisionableResources();
var containerEnvironment = resources.OfType<ContainerAppManagedEnvironment>().FirstOrDefault();
containerEnvironment.Tags.Add("ExampleKey", "Example value");
});
Der vorherige Code:
- Verkettet einen Aufruf an die ConfigureInfrastructure-API.
- Der
infra
-Parameter ist eine Instanz des typs AzureResourceInfrastructure. - Die bereitstellbaren Ressourcen werden durch Aufrufen der GetProvisionableResources()-Methode abgerufen.
- Die einzige ContainerAppManagedEnvironment-Ressource wird abgerufen.
- Ein Tag wird der Umgebungsressource Azure Container Apps mit dem Schlüssel
ExampleKey
und dem WertExample value
hinzugefügt.
- Der