Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo descrive come configurare le app Aspire distribuite su Servizio app di Azure. L'integrazione con Aspire Servizio app di Azure ti permette di modellare e personalizzare l'infrastruttura Azure sottostante nel tuo AppHost.
Importante
L'integrazione con Aspire Servizio app di Azure è attualmente in anteprima.
Se non hai ancora distribuito un'app Aspire su App Service, consulta la guida quickstart.
Prerequisiti
- Un'app Aspire esistente con l'integrazione dell'hosting del servizio app di Azure. Vedere Avvio rapido: Distribuire un'app Aspire nel servizio app di Azure.
- Il pacchetto Aspire.Hosting.Azure.AppService aggiunto al progetto AppHost.
Per le attuali linee guida sull'installazione e sull'installazione di AppHost, consulta Servizio app di Azure Hosting Integration.
Comprendere cosa viene provisionato
Quando chiami AddAzureAppServiceEnvironment, Aspire effettua il provisioning delle seguenti risorse di Azure per impostazione predefinita:
| Resource | Descrizione |
|---|---|
| Piano di servizio app | Piano di hosting basato su Linux P0V3 Premium |
| Registro dei contenitori di Azure | Registro SKU basic per l'archiviazione di immagini del contenitore |
| Identità gestita assegnata dall'utente | Per l'accesso sicuro tra il Servizio app e il registro dei contenitori |
| Assegnazioni di ruoli | Ruolo di accesso "pull" di Registro Azure Container assegnato all'identità gestita |
Queste risorse forniscono l'infrastruttura necessaria per distribuire app Aspirate in contenitori nel servizio app di Azure.
Connettersi a un piano di servizio app esistente
Se disponi già di un piano App Service di Azure, puoi connetterti a quello esistente invece di crearne uno nuovo. Usare il AsExisting metodo per fare riferimento alle risorse esistenti:
var builder = DistributedApplication.CreateBuilder(args);
var existingAppServicePlanName = builder.AddParameter("existingAppServicePlanName");
var existingResourceGroup = builder.AddParameter("existingResourceGroup");
builder.AddAzureAppServiceEnvironment("app-service-env")
.AsExisting(existingAppServicePlanName, existingResourceGroup);
builder.AddProject<Projects.WebApi>("api")
.WithExternalHttpEndpoints();
builder.Build().Run();
Questo approccio è utile quando si vuole:
- Condividere un piano di servizio app tra più applicazioni
- Usare un piano di servizio di app che è stato configurato all'esterno di Aspire
- Connettersi alle risorse in un gruppo di risorse diverso
Per maggiori informazioni, vedi Usa risorse Azure esistenti.
Personalizza siti web di App Service generati
Quando è presente un ambiente App Service, Aspire indirizza automaticamente le risorse idonee del progetto e i container web supportati da Dockerfile verso App Service. Usa PublishAsAzureAppServiceWebsite solo quando devi personalizzare il sito web o lo slot di distribuzione generato:
var builder = DistributedApplication.CreateBuilder(args);
var appServiceEnv = builder.AddAzureAppServiceEnvironment("app-service-env");
builder.AddProject<Projects.WebApi>("api")
.WithExternalHttpEndpoints()
.PublishAsAzureAppServiceWebsite((infra, website) =>
{
website.Tags.Add("Environment", "Production");
});
builder.Build().Run();
Durante lo sviluppo locale con aspire run o il supporto di avvio dell'IDE, il progetto viene eseguito localmente. Quando esegui aspire deploy, il progetto viene distribuito come sito web Servizio app di Azure all'interno dell'ambiente provisionato.
Per ulteriori informazioni, consulta Deploy to Servizio app di Azure e aspire run.
Configurare lo SKU e il livello del piano di servizio app
È possibile personalizzare lo SKU, il livello e la capacità del piano di servizio app usando il ConfigureInfrastructure metodo . Questo approccio consente di accedere e modificare le risorse di Azure sottostanti fornite da Aspire.
Nel file AppHost.cs configurare l'ambiente di App Service con le impostazioni del piano personalizzato.
using Azure.Provisioning.AppService;
var builder = DistributedApplication.CreateBuilder(args);
builder.AddAzureAppServiceEnvironment("app-service-env")
.ConfigureInfrastructure((infra) =>
{
var plan = infra.GetProvisionableResources().OfType<AppServicePlan>().Single();
plan.Sku = new AppServiceSkuDescription
{
Name = "P1V3",
Tier = "Premium"
};
});
builder.Build().Run();
Il ConfigureInfrastructure callback consente di accedere direttamente alle risorse di provisioning di Azure. In questo esempio:
-
GetProvisionableResources()restituisce tutte le risorse di Azure di cui è in corso il provisioning. -
OfType<AppServicePlan>()filtri per ottenere il piano di servizio app. - È quindi possibile modificare proprietà come
Sku.Name,Sku.TiereSku.Capacity(numero di istanze).
Configurare la Dashboard Aspire
Il Dashboard di Aspire è incluso per impostazione predefinita durante la distribuzione su Servizio app di Azure, fornendo visibilità sulle tue applicazioni distribuite.
builder.AddAzureAppServiceEnvironment("app-service-env");
// Dashboard is included by default at https://[prefix]-aspiredashboard-[unique string].azurewebsites.net
Il dashboard distribuito offre la stessa esperienza di sviluppo locale: visualizzare log, tracce, metriche e topologia dell'applicazione per l'ambiente di produzione.
Per maggiori informazioni sulle capacità della dashboard, consulta la panoramica della dashboard di Aspire.
Per disabilitare il dashboard:
builder.AddAzureAppServiceEnvironment("app-service-env")
.WithDashboard(enable: false);
Configurare applicazione Azure Insights
Abilitare applicazione Azure Insights per il monitoraggio e la telemetria completi:
builder.AddAzureAppServiceEnvironment("app-service-env")
.WithAzureApplicationInsights();
Se abilitato, Aspire si attiva automaticamente per:
- Crea un'area di lavoro Log Analytics.
- Crea una risorsa di Application Insights.
- Configura tutte le app Web di App Service con la stringa di connessione.
- Inserisce
APPLICATIONINSIGHTS_CONNECTION_STRINGnelle applicazioni.
È anche possibile fare riferimento a una risorsa di Application Insights esistente:
var insights = builder.AddAzureApplicationInsights("insights");
builder.AddAzureAppServiceEnvironment("app-service-env")
.WithAzureApplicationInsights(insights);
Configurare le impostazioni applicazione
Puoi aggiungere impostazioni personalizzate alle app App Service usando il PublishAsAzureAppServiceWebsite callback di personalizzazione.
using Azure.Provisioning.AppService;
builder.AddProject<Projects.aspire_starter_Web>("webfrontend")
.WithExternalHttpEndpoints()
.WithReference(apiService)
.WaitFor(apiService)
.PublishAsAzureAppServiceWebsite((infra, website) =>
{
website.SiteConfig.AppSettings.Add(new AppServiceNameValuePair
{
Name = "WEBSITE_LOAD_CERTIFICATES",
Value = "*"
});
website.SiteConfig.AppSettings.Add(new AppServiceNameValuePair
{
Name = "MyCustomSetting",
Value = "MyCustomValue"
});
});
Puoi aggiungere le impostazioni dell'applicazione di App Service tramite la raccolta SiteConfig.AppSettings. I nomi delle impostazioni dei servizi App possono contenere solo lettere, numeri e sottolinee. Per ulteriori informazioni, vedi Servizio app di Azure Hosting integration.
Aggiungere tag alle risorse
I tag consentono di organizzare e gestire le risorse di Azure. È possibile aggiungere tag sia ai siti Web che al piano di servizio app.
Aggiungere tag a un sito Web:
builder.AddProject<Projects.aspire_starter_Web>("webfrontend")
.PublishAsAzureAppServiceWebsite((infra, website) =>
{
website.Tags.Add("Environment", "Production");
website.Tags.Add("Team", "Engineering");
});
Aggiungere tag al piano di servizio app:
builder.AddAzureAppServiceEnvironment("app-service-env")
.ConfigureInfrastructure(infra =>
{
var plan = infra.GetProvisionableResources().OfType<AppServicePlan>().Single();
plan.Tags.Add("Environment", "Production");
plan.Tags.Add("CostCenter", "Engineering");
});
Configurare probe di integrità
Le probe di integrità consentono al Servizio App di Azure di monitorare l'integrità dell'applicazione e effettuare decisioni di instradamento. È possibile configurare diversi tipi di probe usando il WithHttpProbe metodo .
#pragma warning disable ASPIREPROBES001
builder.AddProject<Projects.aspire_starter_Web>("webfrontend")
.WithHttpProbe(ProbeType.Liveness, "/healthz")
// ... other configuration
#pragma warning restore ASPIREPROBES001
Note
L'uso di WithHttpProbe può richiedere la soppressione dell'avviso diagnostico ASPIREPROBES001, poiché questa funzionalità è in anteprima.
Assicurare che l'applicazione esponga gli endpoint di controllo integrità. Per le app ASP.NET Core, è possibile usare il middleware dei controlli di integrità predefiniti:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddHealthChecks();
var app = builder.Build();
app.MapHealthChecks("/healthz");
app.Run();
Configurare endpoint esterni
Quando si distribuiscono app Aspire nel Servizio App, la comunicazione servizio-servizio richiede endpoint HTTP esterni. A differenza delle app contenitore, il servizio app attualmente non gestisce il traffico tra le app tramite endpoint interni.
var apiService = builder.AddProject<Projects.aspire_starter_ApiService>("apiservice")
.WithExternalHttpEndpoints()
.WithHttpHealthCheck("/health");
builder.AddProject<Projects.aspire_starter_Web>("webfrontend")
.WithExternalHttpEndpoints()
.WithReference(apiService)
.WaitFor(apiService);
Il WithExternalHttpEndpoints() metodo configura il progetto in modo che sia accessibile tramite endpoint HTTP pubblici. Questa operazione è necessaria per:
- Servizi di back-end che altri servizi nell'app Aspire devono chiamare
- Applicazioni front-end a cui gli utenti accedono direttamente
App Service supporta solo endpoint esterni HTTP e HTTPS e una porta di destinazione esterna distinta per ogni app distribuita. Aspire converte per impostazione predefinita in HTTPS gli URL generati degli endpoint HTTP esterni e le stringhe di connessione per il service discovery. Per ulteriori informazioni, vedi Deploy to Servizio app di Azure.