Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Le Azure Developer CLI (azd) fournit une fonctionnalité puissante appelée génération d’infrastructure qui vous permet de générer et de personnaliser le code d’infrastructure sous-jacent pour vos Aspire applications. Cette fonctionnalité est essentielle pour les scénarios de production où vous avez besoin d’un contrôle précis sur Azure les ressources, les configurations de sécurité et les modèles de déploiement.
Cet article explique comment utiliser azd infra gen :
- Générez des fichiers d’infrastructure Bicep à partir de votre Aspire modèle d’application.
- Personnaliser l’infrastructure générée pour les exigences de production.
- Appliquez les meilleures pratiques de sécurité aux ressources générées.
- Gérez l’infrastructure en tant que code avec un contrôle de version approprié.
Prerequisites
Pour travailler avec Aspire, vous avez besoin des éléments suivants installés localement :
-
.NET 8.0 ou .NET 9.0.
- Aspire À partir de la version 9.4, la préversion 10.5 ou ultérieure est prise en charge.
- Un runtime de conteneur conforme à OCI, tel que :
- Docker Ordinateur de bureau ou Podman. Pour plus d’informations, consultez le runtime de conteneur .
- Un environnement de développement intégré (IDE) ou un éditeur de code, par exemple :
- Visual Studio 2022 version 17.9 ou ultérieure (facultatif)
-
Visual Studio Code (facultatif)
- C# Dev Kit: Extension (facultatif)
- JetBrains Rider avec Aspire plug-in (facultatif)
Pour plus d’informations, consultez Aspire configuration et outils, et Aspire SDK.
Vous devez également avoir Azure Developer CLIinstallé localement.
Fonctionnement de la génération d’infrastructure
La génération d’infrastructure dans azd transforme votre modèle d’application Aspire en définitions concrètes d’infrastructure Azure à l’aide de modèles Bicep. Ce processus permet de combler le fossé entre l’orchestration au moment du développement dans Aspire et l’infrastructure de production requise dans Azure.
Lorsque vous exécutez azd infra gen, l’interface en ligne de commande (CLI) :
- Analyse votre Aspire projet AppHost.
- Identifie toutes les ressources et leurs dépendances.
- Génère les définitions de ressources correspondantes Azure dans Bicep.
- Crée des fichiers de configuration de prise en charge pour le déploiement.
Utiliser la génération d’infrastructure
Exécutez la commande pour générer l'infrastructure sur votre Aspire solution :
azd infra gen
Cette commande crée un infra dossier dans votre répertoire de projet AppHost avec la structure suivante :
└───📂 infra
├─── abbreviations.json # Azure resource naming conventions
├─── main.bicep # Main infrastructure entry point
├─── main.parameters.json # Parameter values for deployment
└─── resources.bicep # Resource definitions
Considérations relatives à la production
L’infrastructure générée fournit une base solide pour votre déploiement, mais les environnements de production nécessitent une configuration supplémentaire pour la sécurité, la scalabilité et la maintenance. Cette section traite des domaines clés que vous devez personnaliser lors de la préparation du déploiement de production.
Configurations de sécurité
Lors de la préparation des déploiements de production, passez en revue et améliorez l’infrastructure générée avec les contrôles de sécurité appropriés :
Isolation du réseau :
// 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'
}
]
}
}
Gestion des identités et des accès :
// 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'
}
}
Dimensionnement et mise à l’échelle des ressources
Passez en revue les configurations de ressources générées pour connaître les exigences de production :
// 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'
}
}
}
]
}
}
}
}
Configurations spécifiques à l’environnement
Utilisez des paramètres pour gérer les paramètres spécifiques à l’environnement :
@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]
Workflow de personnalisation itérative
Après avoir généré l’infrastructure initiale, établissez un flux de travail pour la personnalisation en cours :
- Apportez des modifications d’infrastructure aux fichiers Bicep générés.
- Testez les déploiements dans les environnements de développement.
- Contrôle de version des modifications apportées à votre infrastructure.
- Personnalisations de document pour la collaboration d’équipe.
Important
Lancer azd infra gen à nouveau régénérera les fichiers et pourrait remplacer vos personnalisations. Contrôlez toujours vos modifications et préparez-vous à réinscrire les personnalisations après la régénération.
Modèles de personnalisation avancés
Définitions de ressources personnalisées
Étendre l’infrastructure générée avec des ressources supplémentaires 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
}
]
}
]
}
}
}
Validation de l’infrastructure
Ajoutez des règles de validation pour garantir une configuration appropriée des ressources :
@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
Meilleures pratiques
- Contrôle de version : validez toujours les fichiers d’infrastructure générés dans le contrôle de code source.
- Séparation de l’environnement : utilisez des groupes de ressources distincts et des conventions d’affectation de noms pour différents environnements.
- Analyse de la sécurité : implémentez l’analyse automatisée de la sécurité des modèles Bicep.
- Surveillance des coûts : configurez des alertes budgétaires et des étiquettes de ressources pour le suivi des coûts.
- Documentation : conservez la documentation des personnalisations et leur logique.