Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O Azure Developer CLI (azd) fornece um recurso poderoso chamado geração de infraestrutura que permite que você gere e personalize o código de infraestrutura subjacente para seus Aspire aplicativos. Essa funcionalidade é essencial para cenários de produção em que você precisa de controle refinado sobre Azure recursos, configurações de segurança e padrões de implantação.
Este artigo aborda como usar azd infra gen para:
- Gere arquivos de infraestrutura Bicep a partir do modelo de aplicativo Aspire.
- Personalize a infraestrutura gerada para os requisitos de produção.
- Aplique as práticas recomendadas de segurança aos recursos gerados.
- Gerenciar a infraestrutura como código com controle de versão adequado.
Pré-requisitos
Para trabalhar com Aspire, você precisa do seguinte instalado localmente:
-
.NET 8.0 ou .NET 9.0.
- Aspire A partir da versão 9.4, .NET há suporte para 10 Versão Prévia 5 ou posterior.
- Um runtime de contêiner compatível com OCI, como:
- Docker Desktop ou Podman. Para obter mais informações, consulte Tempo de execução do contêiner.
- Um IDE (Ambiente de Desenvolvedor Integrado) ou um editor de código, como:
- Visual Studio 2022 versão 17.9 ou superior (opcional)
-
Visual Studio Code (opcional)
- C# Dev Kit: Extensão (opcional)
- JetBrains Rider com Aspire plug-in (opcional)
Para obter mais informações, consulte Aspire configuração e ferramentas e Aspire SDK.
Você também precisará ter o Azure Developer CLIinstalado localmente.
Como funciona a geração de infraestrutura
A geração de infraestrutura em azd transforma o modelo de aplicativo Aspire em definições de infraestrutura concretas Azure, usando modelos Bicep. Esse processo faz a ponte entre a orquestração no tempo de desenvolvimento em Aspire e a infraestrutura de produção que é necessária em Azure.
Quando você executa azd infra gen, a CLI:
- Analisa seu Aspire projeto AppHost.
- Identifica todos os recursos e suas dependências.
- Gera definições de recurso correspondentes Azure no Bicep.
- Cria arquivos de configuração de suporte para implantação.
Usar a geração de infraestrutura
Chame o comando gerar infraestrutura em sua Aspire solução:
azd infra gen
Esse comando cria uma infra pasta no diretório do projeto AppHost com a seguinte estrutura:
└───📂 infra
├─── abbreviations.json # Azure resource naming conventions
├─── main.bicep # Main infrastructure entry point
├─── main.parameters.json # Parameter values for deployment
└─── resources.bicep # Resource definitions
Considerações sobre produção
A infraestrutura gerada fornece uma base sólida para sua implantação, mas os ambientes de produção exigem configuração adicional para segurança, escalabilidade e manutenção. Esta seção aborda as principais áreas que você deve personalizar ao se preparar para a implantação de produção.
Configurações de segurança
Ao se preparar para implantações de produção, examine e aprimore a infraestrutura gerada com os controles de segurança apropriados:
Isolamento de rede:
// 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'
}
]
}
}
Gerenciamento de identidade e acesso:
// 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'
}
}
Dimensionamento e escalonamento de recursos
Examine as configurações de recursos gerados para requisitos de produção:
// 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'
}
}
}
]
}
}
}
}
Configurações específicas do ambiente
Use parâmetros para gerenciar configurações específicas do ambiente:
@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]
Fluxo de trabalho de personalização iterativa
Depois de gerar a infraestrutura inicial, estabeleça um fluxo de trabalho para personalização contínua:
- Faça alterações de infraestrutura nos arquivos Bicep gerados.
- Testar implantações em ambientes de desenvolvimento.
- Controle de versão das alterações de infraestrutura.
- Personalizações de documentos para colaboração em equipe.
Importante
Executar azd infra gen novamente irá regenerar os arquivos e poderá sobrescrever suas personalizações. Sempre controle as alterações e esteja preparado para aplicar novamente as personalizações após a regeneração.
Padrões avançados de personalização
Definições de recursos personalizados
Estender a infraestrutura gerada com recursos adicionais Azure :
// 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
}
]
}
]
}
}
}
Validação de infraestrutura
Adicione regras de validação para garantir a configuração adequada de recursos:
@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
Práticas recomendadas
- Controle de versão: sempre confirme arquivos de infraestrutura gerados no controle do código-fonte.
- Separação de ambiente: use grupos de recursos separados e convenções de nomenclatura para ambientes diferentes.
- Verificação de segurança: implemente a verificação automatizada de segurança de modelos Bicep.
- Monitoramento de custos: configure alertas de orçamento e marcas de recurso para acompanhamento de custos.
- Documentação: manter a documentação das personalizações e sua lógica.