Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Azure Developer CLI (azd) innehåller en kraftfull funktion som kallas infrastrukturgenerering som gör att du kan generera och anpassa den underliggande infrastrukturkoden för dina Aspire program. Den här funktionen är viktig för produktionsscenarier där du behöver detaljerad kontroll över Azure resurser, säkerhetskonfigurationer och distributionsmönster.
Den här artikeln beskriver hur du använder azd infra gen för att:
- Generera Bicep-infrastrukturfiler från din Aspire appmodell.
- Anpassa genererad infrastruktur för produktionsbehov.
- Tillämpa metodtips för säkerhet på genererade resurser.
- Hantera infrastruktur som kod med rätt versionskontroll.
Förutsättningar
För att arbeta med Aspirebehöver du följande installerat lokalt:
-
.NET 8.0 eller .NET 9.0.
- Från och med Aspire 9.4 .NET stöds 10 Förhandsversion 5 eller senare .
- En OCI-kompatibel containerkörmiljö, till exempel:
- Docker Desktop eller Podman. Mer information finns i Container Runtime.
- En IDE (Integrated Developer Environment) eller kodredigerare, till exempel:
- Visual Studio 2022 version 17.9 eller senare (valfritt)
-
Visual Studio Code (valfritt)
- C# Dev Kit: Tillägg (valfritt)
- JetBrains Rider med Aspire plugin (valfritt)
För mer information, se Aspire konfiguration och verktyg och Aspire SDK.
Du måste också ha Azure Developer CLI.
Så här fungerar infrastrukturgenerering
Infrastrukturgenerering i azd omvandlar din Aspire appmodell till konkreta Azure infrastrukturdefinitioner med hjälp av Bicep-mallar. Den här processen överbryggar klyftan mellan dirigering av utvecklingstid i Aspire och den produktionsinfrastruktur som krävs i Azure.
När du kör azd infra gen, CLI:
- Analyserar ditt Aspire AppHost-projekt.
- Identifierar alla resurser och deras beroenden.
- Genererar motsvarande Azure resursdefinitioner i Bicep.
- Skapar stödkonfigurationsfiler för distribution.
Använda infrastrukturgenerering
Anropa kommandot generera infrastruktur i din Aspire lösning:
azd infra gen
Det här kommandot skapar en infra mapp i din AppHost-projektkatalog med följande struktur:
└───📂 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överväganden
Den genererade infrastrukturen ger en stabil grund för distributionen, men produktionsmiljöer kräver ytterligare konfiguration för säkerhet, skalbarhet och underhåll. Det här avsnittet beskriver de viktiga områden som du bör anpassa när du förbereder för produktionsdistribution.
Säkerhetskonfigurationer
När du förbereder för produktionsdistributioner granskar och förbättrar du den genererade infrastrukturen med lämpliga säkerhetskontroller:
Nätverksisolering:
// 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'
}
]
}
}
Identitets- och åtkomsthantering:
// 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'
}
}
Resursstorlek och skalning
Granska genererade resurskonfigurationer för produktionskrav:
// 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'
}
}
}
]
}
}
}
}
Miljöspecifika konfigurationer
Använd parametrar för att hantera miljöspecifika inställningar:
@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]
Iterativt anpassningsarbetsflöde
När du har genererat den inledande infrastrukturen upprättar du ett arbetsflöde för löpande anpassning:
- Gör infrastrukturändringar i de genererade Bicep-filerna.
- Testa distributioner i utvecklingsmiljöer.
- Versionskontroll av infrastrukturändringar.
- Dokumentanpassningar för teamsamarbete.
Viktigt!
Om du kör azd infra gen igen återskapas filer och dina anpassningar kan skrivas över. Alltid versionskontroll dina ändringar och vara beredd att tillämpa anpassningar igen efter regenerering.
Avancerade anpassningsmönster
Anpassade resursdefinitioner
Utöka den genererade infrastrukturen med ytterligare Azure resurser:
// 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
}
]
}
]
}
}
}
Infrastrukturverifiering
Lägg till verifieringsregler för att säkerställa korrekt resurskonfiguration:
@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
Metodtips
- Versionskontroll: Begära alltid in genererade infrastrukturfiler till versionskontrollsystemet.
- Miljöavgränsning: Använd separata resursgrupper och namngivningskonventioner för olika miljöer.
- Säkerhetsgenomsökning: Implementera automatisk säkerhetsgenomsökning av Bicep-mallar.
- Kostnadsövervakning: Konfigurera budgetaviseringar och resurstaggar för kostnadsspårning.
- Dokumentation: Underhålla dokumentation om anpassningar och deras motivering.