Freigeben über


Aspire Azure Bereitstellungen anpassen

Der Azure Developer CLI (azd) bietet ein leistungsfähiges Feature namens "Infrastrukturgenerierung", mit dem Sie den zugrunde liegenden Infrastrukturcode für Ihre Aspire Anwendungen generieren und anpassen können. Diese Funktion ist für Produktionsszenarien unerlässlich, in denen Sie eine differenzierte Kontrolle über Azure Ressourcen, Sicherheitskonfigurationen und Bereitstellungsmuster benötigen.

In diesem Artikel wird beschrieben, wie Sie Folgendes verwenden azd infra gen :

  • Generieren Sie Bicep-Infrastrukturdateien aus Ihrem Aspire App-Modell.
  • Anpassen der generierten Infrastruktur für Produktionsanforderungen.
  • Wenden Sie bewährte Methoden für die Sicherheit auf generierte Ressourcen an.
  • Verwalten Sie die Infrastruktur als Code mit der richtigen Versionsverwaltung.

Voraussetzungen

Um mit Aspire zu arbeiten, müssen Sie Folgendes lokal installiert haben:

Weitere Informationen finden Sie unter Aspire Setup und Tooling und Aspire SDK.

Außerdem müssen Sie die Azure Developer CLIinstallation lokal ausführen.

Funktionsweise der Infrastrukturgenerierung

Die Infrastrukturgenerierung wandelt Ihr azd App-Modell in konkrete Aspire Infrastrukturdefinitionen mithilfe von Bicep-Vorlagen um. Dieser Prozess schlägt die Brücke zwischen der Orchestrierung zur Entwicklungszeit in Aspire und der in Azure benötigten Produktionsinfrastruktur.

Wenn Sie ausführen azd infra gen, führt die CLI folgendes aus:

  1. Analysiert Ihr Aspire AppHost-Projekt.
  2. Identifiziert alle Ressourcen und deren Abhängigkeiten.
  3. Generiert entsprechende Azure Ressourcendefinitionen in Bicep.
  4. Erstellt unterstützende Konfigurationsdateien für die Bereitstellung.

Verwenden der Infrastrukturgenerierung

Rufen Sie den Befehl "Infrastruktur generieren" für Ihre Aspire Lösung auf:

azd infra gen

Mit diesem Befehl wird ein infra Ordner in Ihrem AppHost-Projektverzeichnis mit der folgenden Struktur erstellt:

└───📂 infra
     ├─── abbreviations.json   # Azure resource naming conventions  
     ├─── main.bicep           # Main infrastructure entry point
     ├─── main.parameters.json # Parameter values for deployment
     └─── resources.bicep      # Resource definitions    

Produktionsüberlegungen

Die generierte Infrastruktur bietet eine solide Grundlage für Ihre Bereitstellung, aber Produktionsumgebungen erfordern zusätzliche Konfigurationen für Sicherheit, Skalierbarkeit und Wartung. In diesem Abschnitt werden die wichtigsten Bereiche behandelt, die Sie beim Vorbereiten der Produktionsbereitstellung anpassen sollten.

Sicherheitskonfigurationen

Überprüfen und verbessern Sie bei der Vorbereitung auf Produktionsbereitstellungen die generierte Infrastruktur mit entsprechenden Sicherheitskontrollen:

Netzwerkisolation:

// Example: Configure Container Apps Environment with network restrictions
resource containerAppsEnvironment 'Microsoft.App/managedEnvironments@2023-05-01' = {
  name: environmentName
  location: location
  properties: {
    vnetConfiguration: {
      infrastructureSubnetId: subnetId
      internal: true
    }
    workloadProfiles: [
      {
        name: 'Consumption'
        workloadProfileType: 'Consumption'
      }
    ]
  }
}

Identitäts- und Zugriffsverwaltung:

// Example: Configure managed identity with least privilege access
resource managedIdentity 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' = {
  name: identityName
  location: location
}

// Assign specific roles rather than broad permissions
resource acrPullRoleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
  scope: containerRegistry
  name: guid(containerRegistry.id, managedIdentity.id, 'AcrPull')
  properties: {
    roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '7f951dda-4ed3-4680-a7ca-43fe172d538d') // AcrPull
    principalId: managedIdentity.properties.principalId
    principalType: 'ServicePrincipal'
  }
}

Größenanpassung und Skalierung von Ressourcen

Überprüfen Sie generierte Ressourcenkonfigurationen für Produktionsanforderungen:

// Example: Configure appropriate resource limits
resource containerApp 'Microsoft.App/containerApps@2023-05-01' = {
  name: appName
  location: location
  properties: {
    configuration: {
      ingress: {
        external: true
        targetPort: 8080
        allowInsecure: false // Ensure HTTPS only
      }
    }
    template: {
      containers: [
        {
          name: containerName
          image: image
          resources: {
            cpu: json('1.0')      // Adjust based on load requirements
            memory: '2.0Gi'       // Adjust based on memory needs
          }
        }
      ]
      scale: {
        minReplicas: 2          // Ensure availability
        maxReplicas: 10         // Control costs
        rules: [
          {
            name: 'http-requests'
            http: {
              metadata: {
                concurrentRequests: '100'
              }
            }
          }
        ]
      }
    }
  }
}

Umgebungsspezifische Konfigurationen

Verwenden Sie Parameter zum Verwalten von umgebungsspezifischen Einstellungen:

@description('Environment name (dev, staging, prod)')
param environmentType string = 'dev'

@description('Application tier configuration')
var tierConfigurations = {
  dev: {
    skuName: 'Consumption'
    replicas: 1
  }
  staging: {
    skuName: 'Dedicated'
    replicas: 2
  }
  prod: {
    skuName: 'Dedicated'
    replicas: 3
  }
}

var currentTier = tierConfigurations[environmentType]

Iterativer Anpassungsworkflow

Richten Sie nach dem Generieren der anfänglichen Infrastruktur einen Workflow für die fortlaufende Anpassung ein:

  1. Nehmen Sie Infrastrukturänderungen an den generierten Bicep-Dateien vor.
  2. Testen Sie Bereitstellungen in Entwicklungsumgebungen.
  3. Versionskontrolle Ihrer Infrastrukturänderungen.
  4. Dokumentanpassungen für die Teamzusammenarbeit.

Von Bedeutung

Durch erneutes Ausführen von azd infra gen werden die Dateien neu generiert und können Ihre Benutzeranpassungen überschreiben. Verwenden Sie immer Versionskontrolle für Ihre Änderungen und seien Sie bereit, Anpassungen nach der Regeneration erneut anzuwenden.

Erweiterte Anpassungsmuster

Benutzerdefinierte Ressourcendefinitionen

Erweitern Sie die generierte Infrastruktur mit zusätzlichen Azure Ressourcen.

// Add Application Insights for monitoring
resource applicationInsights 'Microsoft.Insights/components@2020-02-02' = {
  name: '${resourceBaseName}-ai'
  location: location
  kind: 'web'
  properties: {
    Application_Type: 'web'
    Flow_Type: 'Redfield'
    Request_Source: 'IbizaWebAppExtensionCreate'
    WorkspaceResourceId: logAnalyticsWorkspace.id
  }
}

// Configure container apps to use Application Insights
resource containerApp 'Microsoft.App/containerApps@2023-05-01' = {
  // ... other properties
  properties: {
    template: {
      containers: [
        {
          // ... other container properties
          env: [
            {
              name: 'APPLICATIONINSIGHTS_CONNECTION_STRING'
              value: applicationInsights.properties.ConnectionString
            }
          ]
        }
      ]
    }
  }
}

Infrastrukturüberprüfung

Fügen Sie Gültigkeitsprüfungsregeln hinzu, um die richtige Ressourcenkonfiguration sicherzustellen:

@description('Validates that environment type is supported')
@allowed(['dev', 'staging', 'prod'])
param environmentType string

@description('Validates location is in allowed regions')
@allowed(['eastus', 'westus2', 'northeurope'])
param location string

Bewährte Methoden

  • Versionsverwaltung: Immer generierte Infrastrukturdateien in die Quellcodeverwaltung übernehmen.
  • Umgebungstrennung: Verwenden Sie separate Ressourcengruppen und Benennungskonventionen für verschiedene Umgebungen.
  • Sicherheitsüberprüfung: Implementieren sie die automatisierte Sicherheitsüberprüfung von Bicep-Vorlagen.
  • Kostenüberwachung: Richten Sie Budgetwarnungen und Ressourcentags für die Kostennachverfolgung ein.
  • Dokumentation: Verwalten der Dokumentation von Anpassungen und deren Begründung.

Nächste Schritte