формат манифеста .NET.NET Aspire для построителей средств развертывания
Статья
В этой статье вы узнаете о формате манифеста .NET.NET Aspire. Эта статья служит справочным руководством по построителям средств развертывания, помогая в создании инструментов для развертывания .NET.NET Aspire проектов на конкретных платформах размещения, в локальной среде или в облаке.
.NET
.NET Aspire
упрощает локальной разработки, помогая управлять взаимозависимостями между интеграцией приложений. Чтобы упростить развертывание приложений, .NET Aspire проекты могут создать манифест всех ресурсов, определенных как JSON форматированный файл.
Создание манифеста
Для создания манифеста требуется допустимый проект .NET.NET Aspire. Чтобы приступить к работе, создайте проект .NET.NET Aspire с помощью шаблона aspire-starter.NET:
Интерфейс командной строки.NET
dotnetnew aspire-starter --use-redis-cache `
-o AspireApp && `
cd AspireApp
Создание манифеста достигается путем выполнения dotnet build с особым целевым объектом:
--output-path поддерживает относительные пути. Предыдущая команда использует ../aspire-manifest.json для размещения файла манифеста в корне каталога проекта.
Дополнительные сведения см. в разделе dotnet run. Предыдущая команда выдает следующие выходные данные:
Output
Building...
info: Aspire.Hosting.Publishing.ManifestPublisher[0]
Published manifest to: .\AspireApp.AppHost\aspire-manifest.json
Созданный файл представляет собой манифест .NET.NET Aspire и используется средствами для поддержки развертывания в целевых облачных средах.
Примечание
Вы также можете создать манифест в рамках профиля запуска. Рассмотрим следующие launchSettings.json:
Формат манифеста JSON состоит из одного объекта с именем resources, который содержит свойство для каждого ресурса, указанного в Program.cs (аргумент name для каждого имени используется в качестве свойства для каждого из дочерних объектов ресурсов в JSON).
Ссылки на строку подключения и привязки
В предыдущем примере существует два ресурса проекта и один ресурс кэша Redis. веб-интерфейс зависит от ресурсов apiservice (project) и кэша ().
Эта зависимость известна, так как переменные среды для веб-интерфейсной содержат заполнители, ссылающиеся на два других ресурса:
JSON
"env": {
// ... other environment variables omitted for clarity
"ConnectionStrings__cache": "{cache.connectionString}",
"services__apiservice__0": "{apiservice.bindings.http.url}",
"services__apiservice__1": "{apiservice.bindings.https.url}"
},
Ресурс apiservice ссылается на webfrontend с помощью вызова WithReference(apiservice) в файле Program.cs узла приложения и redis ссылается с помощью вызова WithReference(cache):
C#
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddRedis("cache");
var apiService = builder.AddProject<Projects.AspireApp_ApiService>("apiservice");
builder.AddProject<Projects.AspireApp_Web>("webfrontend")
.WithReference(cache)
.WithReference(apiService);
builder.Build().Run();
Ссылки между типами ресурсов проекта приводят к обнаружению служб переменным, внедренным в проект ссылки. Ссылки на известные ссылочные типы, такие как Redis приводят к внедрению строк подключения.
Строки заполнителей ссылались на структуру манифеста .NET.NET Aspire:
Окончательный сегмент строки заполнителя (url в данном случае) создается средством обработки манифеста. Существует несколько суффиксов, которые можно использовать в строке заполнителя:
connectionString: для известных типов ресурсов, таких как Redis. Средства развертывания преобразуют ресурс в наиболее подходящую инфраструктуру для целевой облачной среды, а затем создайте .NET.NET Aspire совместимую строку подключения для используемого приложения. В container.v0 ресурсах поле connectionString может присутствовать и явно указано. Это позволяет поддерживать сценарии, в которых тип ресурса контейнера ссылается с помощью расширения WithReference, но требуется явно размещать в качестве контейнера.
url. Для ссылок между службами, где требуется хорошо сформированный URL-адрес. Средство развертывания создает url на основе схемы, протокола и транспорта, определенного в манифесте, и базовой топологии вычислений и сетей, развернутой.
host: сегмент узла URL-адреса.
port: сегмент порта URL-адреса.
Типы ресурсов
Каждый ресурс имеет поле type. Когда средство развертывания считывает манифест, он должен прочитать тип, чтобы проверить, может ли он правильно обрабатывать манифест. В течение периода предварительной версии .NET.NET Aspire все типы ресурсов имеют суффикс v0, чтобы указать, что они подвергаются изменению. Так как .NET.NET Aspire подходы к выпуску суффикса v1 будут использоваться для обозначения того, что структура манифеста для этого типа ресурсов должна считаться стабильной (последующие обновления увеличивают номер версии соответствующим образом).
Общие поля ресурсов
Поле type — это единственное поле, которое является общим для всех типов ресурсов, однако project.v0, container.v0и executable.v0 типы ресурсов также используют env и bindings поля.
Примечание
Тип ресурса executable.v0 не полностью реализован в манифесте из-за отсутствия служебной программы в сценариях развертывания. Дополнительные сведения о контейнеризации исполняемых файлов см. в Dockerfile типах ресурсов.
Тип поля env — это базовое сопоставление ключей и значений, где значения могут содержать строки заполнителя .
Привязки указываются в поле bindings с каждой привязкой, содержащейся в собственном поле под объектом bindingsJSON. Поля, опущенные манифестом .NET.NET Aspire в узле bindings, включают:
scheme: одно из следующих значений tcp, udp, httpили https.
protocol: одно из следующих значений tcp или udp
transport: то же, что и scheme, но используется для диамбигуации между http и http2.
containerPort: необязательно, если значение по умолчанию не задано для порта 80.
Поле inputs
Некоторые ресурсы создают поле inputs. Это поле используется для указания входных параметров ресурса. Поле inputs — это объект JSON, где каждое свойство является входным параметром, используемым в разрешении структуры заполнителей. Ресурсы с connectionString, например, могут использовать поле inputs для указания password строки подключения:
В приведенном выше фрагменте кода JSON показано поле inputs ресурса с полем connectionString.
password входной параметр является строковым типом и помечается как секрет. Поле default используется для указания значения по умолчанию для входного параметра. В этом случае значение по умолчанию создается с помощью поля generate с случайной строкой минимальной длины.
Встроенные ресурсы
В следующей таблице приведен список типов ресурсов, которые явно создаются .NET Aspire и расширениями, разработанными командой .NET Aspire:
Вызов PublishAsDockerFile требуется для создания типа ресурса Dockerfile в манифесте, и этот метод расширения доступен только в типе ExecutableResource.
Типы ресурсов, поддерживаемые в Azure Developer CLI
Azure Developer CLI (azd) — это средство, которое можно использовать для развертывания проектов .NET Aspire в Azure Container Apps. При использовании типа ресурсов azure.bicep.v0 типы контейнеров ресурсов, не зависящих от облака, можно сопоставить с Azureресурсами. В следующей таблице перечислены типы ресурсов, поддерживаемые в Azure Developer CLI:
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Отзыв о .NET Aspire
.NET Aspire — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв:
Присоединитесь к серии встреч для создания масштабируемых решений искусственного интеллекта на основе реальных вариантов использования с другими разработчиками и экспертами.