Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
(Azure Developer CLIazd) udostępnia zaawansowaną funkcję nazywaną generowaniem infrastruktury, która umożliwia generowanie i dostosowywanie bazowego kodu infrastruktury dla aplikacjiAspire. Ta funkcja jest niezbędna w scenariuszach produkcyjnych, w których potrzebna jest precyzyjna kontrola nad Azure zasobami, konfiguracjami zabezpieczeń i wzorcami wdrażania.
W tym artykule opisano, jak używać azd infra gen:
- Wygeneruj pliki infrastruktury Bicep z modelu aplikacji Aspire.
- Dostosowywanie wygenerowanej infrastruktury pod kątem wymagań produkcyjnych.
- Stosowanie najlepszych rozwiązań w zakresie zabezpieczeń do wygenerowanych zasobów.
- Zarządzanie infrastrukturą jako kodem przy użyciu odpowiedniej kontroli wersji.
Wymagania wstępne
Do pracy z Aspireprogramem potrzebne są następujące elementy zainstalowane lokalnie:
-
.NET 8.0 lub .NET 9.0.
- Aspire Począwszy od wersji 9.4, .NET obsługiwana jest wersja 10 (zapoznawcza 5 lub nowsza).
- Środowisko uruchomieniowe kontenera zgodne ze standardem OCI, takie jak:
- Docker Desktop lub Podman. Aby uzyskać więcej informacji, zobacz Container Runtime.
- Zintegrowane środowisko deweloperskie (IDE) lub edytor kodu, takie jak:
- Visual Studio 2022 w wersji 17.9 lub nowszej (opcjonalnie)
-
Visual Studio Code (opcjonalnie)
- C# Dev Kit: rozszerzenie (opcjonalnie)
- JetBrains Rider z wtyczką Aspire (opcjonalnie)
Aby uzyskać więcej informacji, zobacz Aspire konfigurowanie i narzędzia oraz Aspire zestaw SDK.
Konieczne będzie również Azure Developer CLIzainstalowanie na lokalnym komputerze.
Jak działa generowanie infrastruktury
Generowanie infrastruktury w azd przekształca model aplikacji Aspire w konkretne definicje infrastruktury Azure przy użyciu szablonów Bicep. Ten proces łączy różnicę między orkiestracją w czasie programowania a Aspire infrastrukturą produkcyjną wymaganą w programie Azure.
Po uruchomieniu azd infra gen, interfejsu wiersza polecenia:
- Analizuje twój projekt AppHostAspire.
- Identyfikuje wszystkie zasoby i ich zależności.
- Generuje odpowiednie Azure definicje zasobów w Bicep.
- Tworzy pliki konfiguracji pomocnicze na potrzeby wdrożenia.
Korzystanie z generowania infrastruktury
Wywołaj polecenie generowania infrastruktury w rozwiązaniu Aspire :
azd infra gen
To polecenie tworzy infra folder w katalogu projektu AppHost o następującej strukturze:
└───📂 infra
├─── abbreviations.json # Azure resource naming conventions
├─── main.bicep # Main infrastructure entry point
├─── main.parameters.json # Parameter values for deployment
└─── resources.bicep # Resource definitions
Zagadnienia dotyczące środowiska produkcyjnego
Wygenerowana infrastruktura zapewnia solidną podstawę dla wdrożenia, ale środowiska produkcyjne wymagają dodatkowej konfiguracji pod kątem zabezpieczeń, skalowalności i możliwości konserwacji. W tej sekcji omówiono najważniejsze obszary, które należy dostosować podczas przygotowywania do wdrożenia produkcyjnego.
Konfiguracje zabezpieczeń
Podczas przygotowywania do wdrożeń produkcyjnych przejrzyj i rozszerz wygenerowaną infrastrukturę przy użyciu odpowiednich mechanizmów kontroli zabezpieczeń:
Izolacja sieci:
// 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'
}
]
}
}
Zarządzanie tożsamościami i dostępem:
// 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'
}
}
Ustalanie rozmiaru i skalowanie zasobów
Przejrzyj wygenerowane konfiguracje zasobów pod kątem wymagań produkcyjnych:
// 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'
}
}
}
]
}
}
}
}
Konfiguracje specyficzne dla środowiska
Użyj parametrów do zarządzania ustawieniami specyficznymi dla środowiska:
@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]
Przepływ pracy dostosowywania iteracyjnego
Po wygenerowaniu początkowej infrastruktury ustanów przepływ pracy na potrzeby ciągłego dostosowywania:
- Wprowadź zmiany w infrastrukturze w wygenerowanych plikach Bicep.
- Wdrożenia testowe w środowiskach deweloperskich.
- Kontroluj wersje zmian w swojej infrastrukturze.
- Dostosowania dokumentów na potrzeby współpracy zespołowej.
Ważne
Ponowne uruchomienie azd infra gen wygeneruje ponownie pliki i może nadpisać Twoje dostosowania. Zawsze należy kontrolować zmiany wersji i przygotować się do ponownego stosowania dostosowań po rewitalizacji.
Zaawansowane wzorce dostosowywania
Niestandardowe definicje zasobów
Rozszerzanie wygenerowanej infrastruktury przy użyciu dodatkowych Azure zasobów:
// 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
}
]
}
]
}
}
}
Walidacja infrastruktury
Dodaj reguły walidacji, aby zapewnić odpowiednią konfigurację zasobu:
@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
Najlepsze rozwiązania
- Kontrola wersji: zawsze zatwierdzaj wygenerowane pliki infrastruktury do kontroli źródła.
- Separacja środowiska: użyj oddzielnych grup zasobów i konwencji nazewnictwa dla różnych środowisk.
- Skanowanie zabezpieczeń: zaimplementuj automatyczne skanowanie zabezpieczeń szablonów Bicep.
- Monitorowanie kosztów: skonfiguruj alerty budżetowe i tagi zasobów na potrzeby śledzenia kosztów.
- Dokumentacja: zachowaj dokumentację dostosowań i ich uzasadnienie.