Dela via


Anpassa distributioner med Aspire

Aspire tillhandahåller API:er för att anpassa hur dina program distribueras. Den här artikeln visar hur du använder dessa API:er för att konfigurera distributionsspecifika inställningar, inklusive dynamisk bildtaggning, resurskonfiguration och distributionsbeteenden.

Förutsättningar

  • Aspire 9.5 eller senare
  • Ett befintligt Aspire projekt

Information om hur du skapar ett Aspire projekt finns i Skapa din första Aspire app.

Märkning av dynamisk containerbild

Använd WithDeploymentImageTag-metoden för att generera containerbildstaggar dynamiskt vid distributionstillfället. Detta möjliggör flexibla versionshanteringsstrategier baserat på distributionskontext, git-incheckningar, tidsstämplar eller externa system. AspireDen inbyggda Azure distribueraren använder taggen distributionsavbildning när avbildningar skickas till det fjärrcontainerregister som har etablerats för distributionen.

Grundläggande användning

Konfigurera statiska eller beräknade taggar för dina resurser:

var builder = DistributedApplication.CreateBuilder(args);

// Static tag
var api = builder.AddProject<Projects.Api>("api")
    .WithDeploymentImageTag(() => "v1.2.3-stable");

// Dynamic tag with timestamp
var worker = builder.AddProject<Projects.Worker>("worker")
    .WithDeploymentImageTag(() => $"build-{DateTime.UtcNow:yyyyMMdd-HHmm}");

builder.Build().Run();

Generering av asynkron tagg

Använd asynkrona callback-funktioner för komplexa taggenereringsscenarier.

var service = builder.AddProject<Projects.Service>("service")
    .WithDeploymentImageTag(async context =>
    {
        // Fetch version from external API
        var buildInfo = await GetBuildInfoFromApi();
        return $"service-{buildInfo.Version}";
    });

Använda taggar för alla resurser med eventing

Använd händelse-API:erna för att automatiskt tillämpa distributionsbildtaggar på alla resurser i ditt program. Den här metoden är användbar när du vill ha konsekvent taggning för alla containerbaserade resurser:

var builder = DistributedApplication.CreateBuilder(args);

// Subscribe to the BeforeStartEvent to configure all resources
builder.Eventing.Subscribe<BeforeStartEvent>(async (evt, ct) =>
{
    var timestamp = DateTime.UtcNow.ToString("yyyyMMdd-HHmmss");
    foreach (var resource in evt.Model.Resources)
    {
        builder.CreateResourceBuilder(resource).WithDeploymentImageTag((context) =>
        {
            var resourceName = resource.Name.ToLowerInvariant();
            return $"{resourceName}-{timestamp}";
        });
    }
});

builder.Build().Run();

Anpassa Azure Bicep-resurser

Använd ConfigureInfrastructure metoden för att anpassa de underliggande Azure Bicep-mallarna som genereras av Aspire under distributionen. På så sätt kan du ändra Azure resursegenskaper, lägga till anpassade konfigurationer eller integrera med befintlig Azure infrastruktur.

Grundläggande anpassning av infrastruktur

Anpassa Azure resurser genom att ändra deras Bicep-egenskaper:

var builder = DistributedApplication.CreateBuilder(args);

// Customize Azure Service Bus configuration
var serviceBus = builder.AddAzureServiceBus("servicebus");
serviceBus.AddServiceBusQueue("queue1");
serviceBus.ConfigureInfrastructure(infrastructure =>
{
    var queue = infrastructure.GetProvisionableResources().OfType<ServiceBusQueue>().Single(q => q.BicepIdentifier == "queue1");
    queue.MaxDeliveryCount = 5;
    queue.LockDuration = TimeSpan.FromMinutes(5);
});