Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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:
-
.NET 8,0 oder .NET 9,0.
- Aspire Ab 9.4 .NET wird 10 Preview 5 oder höher unterstützt.
- Eine OCI-kompatible Containerlaufzeit, z. B.:
- Docker Desktop oder Podman. Weitere Informationen finden Sie unter container runtime.
- Eine integrierte Entwicklerumgebung (Integrated Developer Environment, IDE) oder ein Code-Editor, z. B.:
- Visual Studio 2022 , Version 17.9 oder höher (optional)
-
Visual Studio Code (optional)
- C# Dev Kit: Erweiterung (Optional)
- JetBrains Rider mit Aspire Plug-In (Optional)
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:
- Analysiert Ihr Aspire AppHost-Projekt.
- Identifiziert alle Ressourcen und deren Abhängigkeiten.
- Generiert entsprechende Azure Ressourcendefinitionen in Bicep.
- 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:
- Nehmen Sie Infrastrukturänderungen an den generierten Bicep-Dateien vor.
- Testen Sie Bereitstellungen in Entwicklungsumgebungen.
- Versionskontrolle Ihrer Infrastrukturänderungen.
- 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.