Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается настройка приложений Aspire , развернутых в Службе приложений Azure. Aspire предоставляет упрощенный и рекомендуемый способ создания наблюдаемых, готовых к работе облачных нативных приложений, а интеграция с App Service позволяет настраивать базовую инфраструктуру Azure с помощью кода.
Если вы еще не развернули приложение Aspire в Службе приложений, ознакомьтесь с кратким руководством .
Предпосылки
- Существующее приложение Aspire с интеграцией хостинга Azure App Service. См. краткое руководство. Развертывание приложения Aspire в Службе приложений Azure.
- Пакет Aspire.Hosting.Azure.AppService , добавленный в проект AppHost.
Понять, что предоставляется
При вызове AddAzureAppServiceEnvironment Aspire подготавливает следующие ресурсы Azure по умолчанию:
| Resource | Description |
|---|---|
| План службы приложений | План хостинга класса Premium P0V3 на базе Linux |
| Реестр контейнеров Azure | Базовый реестр SKU для хранения образов контейнеров |
| Управляемое удостоверение, назначаемое пользователем | Безопасный доступ между службой приложений и реестром контейнеров |
| Назначение ролей | Роль ACR Pull, назначенная управляемому удостоверению |
Эти ресурсы предоставляют инфраструктуру, необходимую для развертывания контейнерных приложений Aspire в Службе приложений Azure.
Подключение к существующему плану службы приложений
Если у вас есть существующий план службы приложений Azure, вы можете подключиться к нему вместо подготовки нового. Используйте метод AsExisting, чтобы ссылаться на существующие ресурсы.
var builder = DistributedApplication.CreateBuilder(args);
var existingAppServicePlanName = builder.AddParameter("existingAppServicePlanName");
var existingResourceGroup = builder.AddParameter("existingResourceGroup");
var appServiceEnv = builder.AddAzureAppServiceEnvironment("app-service-env")
.AsExisting(existingAppServicePlanName, existingResourceGroup);
builder.AddProject<Projects.WebApi>("api")
.PublishAsAzureAppServiceWebsite((infra, website) =>
{
// Optional: customize the Azure App Service website here
});
builder.Build().Run();
Этот подход полезен при желании:
- Совместное использование плана службы приложений в нескольких приложениях
- Использование плана службы приложений, подготовленного за пределами Aspire
- Подключение к ресурсам в другой группе ресурсов
Публикуйте проекты в виде веб-сайтов App Service
PublishAsAzureAppServiceWebsite Используйте метод для развертывания вычислительных ресурсов в качестве веб-сайтов службы приложений Azure:
var builder = DistributedApplication.CreateBuilder(args);
var appServiceEnv = builder.AddAzureAppServiceEnvironment("app-service-env");
builder.AddProject<Projects.WebApi>("api")
.PublishAsAzureAppServiceWebsite((infra, website) =>
{
// Optional: customize the Azure App Service website here
});
builder.Build().Run();
Во время локальной разработки (при запуске с F5 или dotnet run) проект выполняется локально. При публикации приложения с помощью azd up проект развертывается как веб-сайт Службы приложений Azure в подготовленной среде.
Конфигурация SKU и уровня для плана App Service
Вы можете настроить номер SKU плана службы приложений, уровень и емкость с помощью ConfigureInfrastructure метода. Этот подход позволяет получить доступ к базовым ресурсам Azure, которые предоставляет Aspire, и изменять их.
В файле AppHost.cs настройте среду службы приложений с настраиваемыми параметрами плана:
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();
Обратный ConfigureInfrastructure вызов предоставляет прямой доступ к ресурсам развертывания Azure. В этом примере:
-
GetProvisionableResources()возвращает все подготовленные ресурсы Azure. -
OfType<AppServicePlan>()фильтры для получения плана службы приложений. - Затем можно изменить такие свойства, как
Sku.Name,Sku.TierиSku.Capacity(число экземпляров).
Настройка панели мониторинга Aspire
Панель мониторинга Aspire включена по умолчанию при развертывании в Службе приложений Azure, обеспечивая видимость развернутых приложений:
builder.AddAzureAppServiceEnvironment("app-service-env");
// Dashboard is included by default at https://[prefix]-aspiredashboard-[unique string].azurewebsites.net
Развернутая панель мониторинга обеспечивает тот же интерфейс, что и локальная разработка: просмотр журналов, трассировок, метрик и топологии приложений для рабочей среды.
Чтобы отключить панель мониторинга, выполните следующие действия.
builder.AddAzureAppServiceEnvironment("app-service-env")
.WithDashboard(enable: false);
Настройка Azure Application Insights
Включите Azure Application Insights для комплексного мониторинга и телеметрии:
builder.AddAzureAppServiceEnvironment("app-service-env")
.WithAzureApplicationInsights();
Когда включено, Aspire автоматически:
- Создает рабочую область Log Analytics.
- Создает ресурс Application Insights.
- Настраивает все веб-приложения службы App Service с использованием строки подключения.
- Внедряет
APPLICATIONINSIGHTS_CONNECTION_STRINGв ваши приложения.
Вы также можете ссылаться на существующий ресурс Application Insights:
var insights = builder.AddAzureApplicationInsights("insights");
builder.AddAzureAppServiceEnvironment("app-service-env")
.WithAzureApplicationInsights(insights);
Настройка параметров приложения
Пользовательские параметры приложения можно добавить в приложения "Службы приложений" с помощью метода PublishAsAzureAppServiceWebsite и конфигурации инфраструктуры.
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"
});
});
Вы можете добавить любые параметры приложения службы приложений через коллекцию SiteConfig.AppSettings .
Добавление тегов в ресурсы
Теги помогают упорядочивать ресурсы Azure и управлять ими. Теги можно добавлять как на веб-сайты, так и в план службы приложений.
Добавление тегов на веб-сайт:
builder.AddProject<Projects.aspire_starter_Web>("webfrontend")
.PublishAsAzureAppServiceWebsite((infra, website) =>
{
website.Tags.Add("Environment", "Production");
website.Tags.Add("Team", "Engineering");
});
Добавьте теги в план службы приложений:
builder.AddAzureAppServiceEnvironment("app-service-env")
.ConfigureInfrastructure(infra =>
{
var plan = infra.GetProvisionableResources().OfType<AppServicePlan>().Single();
plan.Tags.Add("Environment", "Production");
plan.Tags.Add("CostCenter", "Engineering");
});
Настройка проб работоспособности
Пробы работоспособности позволяют службе приложений Azure отслеживать работоспособность приложения и принимать решения по маршрутизации. С помощью WithHttpProbe метода можно настроить различные типы проб.
#pragma warning disable ASPIREPROBES001
builder.AddProject<Projects.aspire_starter_Web>("webfrontend")
.WithHttpProbe(ProbeType.Liveness, "/healthz")
// ... other configuration
#pragma warning restore ASPIREPROBES001
Замечание
Использование WithHttpProbe может потребовать подавления предупреждения диагностики, так как эта функция находится в предварительной ASPIREPROBES001 версии.
Убедитесь, что приложение предоставляет конечные точки проверки работоспособности. Для приложений ASP.NET Core можно использовать встроенное ПО промежуточного слоя проверки работоспособности:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddHealthChecks();
var app = builder.Build();
app.MapHealthChecks("/healthz");
app.Run();
Настройка внешних конечных точек
При развертывании приложений Aspire в Службе приложений обмен данными между службами требует внешних конечных точек HTTP. В отличие от контейнерных приложений, служба приложений в настоящее время не управляет трафиком между приложениями через внутренние конечные точки.
var apiService = builder.AddProject<Projects.aspire_starter_ApiService>("apiservice")
.WithExternalHttpEndpoints()
.WithHttpHealthCheck("/health");
builder.AddProject<Projects.aspire_starter_Web>("webfrontend")
.WithExternalHttpEndpoints()
.WithReference(apiService)
.WaitFor(apiService);
Метод WithExternalHttpEndpoints() настраивает проект для доступа через общедоступные конечные точки HTTP. Это необходимо для:
- Серверные службы, которые необходимо вызывать другими службами в приложении Aspire.
- Интерфейсные приложения, к которым пользователи обращаются напрямую