Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De Azure Developer CLI (azd) ondersteunt twee implementatiestrategieën voor Azure Container Apps:
- Strategie op basis van afbeeldingen. Scheiding van container-app-configuratie-updates en image-implementaties.
- Op revisie gebaseerde strategie. Combineert beide in één implementatie en ondersteunt geavanceerde implementatiepatronen.
In de volgende secties worden beide strategieën uitgelegd.
Implementatiestrategie op basis van schijfkopieën
In deze strategie wordt de configuratie van de container-app gemaakt en bijgewerkt tijdens azd provision, terwijl de containerinstallatiekopieën worden bijgewerkt tijdens azd deploy.
- De definitie van de container-app (resources, omgevingsvariabelen, statustests, enzovoort) bevindt zich in een Bicep-module die tijdens het inrichten wordt toegepast.
- Alleen de verwijzing naar het containerimage (
containers[0].image) verandert tijdens de uitrol.
Revisiegedrag
Elke wijziging in de app-configuratie of afbeelding leidt tot een nieuwe revisie.
| Step | Command | Past wijzigingen toe op | Opmerkingen |
|---|---|---|---|
| 1 | azd provision |
Omgevingsvariabelen, bronnen, koppelingen, probes, load balancers | Hiermee maakt u een nieuwe revisie |
| 2 | azd deploy |
Containerinstallatiekopie | Hiermee maakt u een andere revisie |
Elke revisie wijst extra replica's toe in de Container Apps-omgeving, wat het resourcegebruik en de kosten tijdelijk kan verhogen.
Opmerking
Geavanceerde implementatiepatronen, zoals blauwgroen of kanarie, worden niet ondersteund in deze strategie.
Implementaties op basis van installatiekopieën configureren
Voer een azd provision uit om ervoor te zorgen dat een bestaande container-app wordt bijgewerkt zonder de meest recente geïmplementeerde installatiekopie te overschrijven. Dit patroon wordt geïmplementeerd door de AVM-module container-app-upsert en bestaat uit twee stappen:
Definieer een parameter in uw
main.parameters.jsondie verwijst naar de door azd verstrekte variabeleSERVICE_{NAME}_RESOURCE_EXISTS. Deze variabele wordt bij het inrichtingsproces automatisch ingesteld doorazdom aan te geven of de resource al bestaat.{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#", "contentVersion": "1.0.0.0", "parameters": { "environmentName": { "value": "${AZURE_ENV_NAME}" }, "location": { "value": "${AZURE_LOCATION}" }, // ... other parameters "apiExists": { "value": "${SERVICE_API_RESOURCE_EXISTS}" } } }Verwijs in uw Bicep-bestand naar de
existsparameter om te bepalen of de container-app moet worden gemaakt of bijgewerkt. Decontainer-app-upsertmodule bevat deze logica intern.@description('Indicates whether the container app resource already exists.') param apiExists bool module api 'br/public:avm/ptn/azd/container-app-upsert:0.1.2' = { name: 'api' params: { name: 'my-api' location: location containerAppsEnvironmentName: containerAppsEnvironment.name containerRegistryName: containerRegistry.name imageName: !empty(apiImageName) ? apiImageName : '' exists: apiExists env: [ { name: 'MONGODB_CONNECTION_STRING' value: mongodb.outputs.connectionString } ] targetPort: 3100 } }Met deze methode kan
azd provisionde container-app-resource veilig bijwerken en aanmaken (bijwerken indien aanwezig, aanmaken indien niet) zonder handmatige controles.Aanbeveling
Houd de
apiVersioninazure.yamluitgelijnd met de Bicep-module'sapiVersionvoorMicrosoft.App/containerAppsom mismatches te voorkomen.
Implementatiestrategie op basis van revisie
In deze strategie worden zowel de definitie van de container-app als de installatiekopie samen geïmplementeerd tijdens azd deploy.
De configuratie van de container-app bevindt zich in een toegewezen Bicep-module die tijdens de implementatie is toegepast.
Wijzigingen in omgevingsvariabelen, installatiekopieën, resources en taakverdelingsinstellingen worden geïmplementeerd als één revisie.
Aanbeveling
Deze strategie ondersteunt blauwgroene, kanarie en andere geavanceerde implementatiepatronen.
Implementaties op basis van revisies configureren
Definieer de implementatie van de container-app door een infrabestand voor uw service te maken, zoals
infra/api.bicep. U kunt uw container-app definiëren met behulp van de AVM-module of door de resource rechtstreeks te definiëren:@description('Unique environment name used for resource naming.') param environmentName string @description('Primary location for all resources.') param location string param containerRegistryName string param containerAppsEnvironmentName string param imageName string param identityId string resource containerRegistry 'Microsoft.ContainerRegistry/registries@2023-01-01-preview' existing = { name: containerRegistryName } resource containerAppsEnvironment 'Microsoft.App/managedEnvironments@2022-03-01' existing = { name: containerAppsEnvironmentName } module api 'br/public:avm/res/app/container-app:0.8.0' = { name: 'api' params: { name: 'api' ingressTargetPort: 80 scaleMinReplicas: 1 scaleMaxReplicas: 10 containers: [ { name: 'main' image: imageName resources: { cpu: json('0.5') memory: '1.0Gi' } } ] managedIdentities: { systemAssigned: false userAssignedResourceIds: [identityId] } registries: [ { server: containerRegistry.properties.loginServer identity: identityId } ] environmentResourceId: containerAppsEnvironment.id location: location tags: { 'azd-env-name': environmentName 'azd-service-name': 'api' } } }Geef parameters op tijdens de implementatie door een parameterbestand te maken (bijvoorbeeld
api.parameters.json):{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#", "contentVersion": "1.0.0.0", "parameters": { "environmentName": { "value": "${AZURE_ENV_NAME}" }, "location": { "value": "${AZURE_LOCATION}" }, "containerRegistryName": { "value": "${AZURE_CONTAINER_REGISTRY_NAME}" }, "containerAppsEnvironmentName": { "value": "${AZURE_CONTAINER_ENVIRONMENT_NAME}" }, "imageName": { "value": "${SERVICE_API_IMAGE_NAME}" }, "identityId": { "value": "${SERVICE_API_IDENTITY_ID}" } } }Opmerking
SERVICE_API_IMAGE_NAMEwordt dynamisch ingesteld tijdens de uitrol en maakt geen deel uit van de uitvoer van de voorzieningen.Wanneer u uitvoert
azd deploy, wordt de revisie van de container-app toegepast met behulp van de bovenstaande resourcedefinitie.Aanbeveling
Geef eventuele extra uitvoer van
azd provisiondoor als parameters aanazd deployals uw container-applicatie naar andere ingerichte bronnen verwijst.
Vergelijkingsoverzicht
| Kenmerk | Op afbeeldingen gebaseerd | Op basis van revisie |
|---|---|---|
| Opdracht Bijwerken | azd provision + azd deploy |
azd deploy alleen |
| Implementatietype | Twee revisies | Eén revisie |
| Uitrolbeheer | Beheerd door azd |
Configureerbaar (blauw-groen, kanarie) |
| Gebruiksituatie | Eenvoudige omgevingen | Geavanceerde implementaties |
| Locatie van container-app-definitie | Inrichtingstijd Bicep | Bicep-implementatietijd |
Aanvullende bronnen
- Overzicht van Azure Container Apps
- Azure Container Apps Bicep-referentie
- Overzicht van .NET Aspire
- Takenlijstsjablonen (gebruikmakend van afbeeldingsuitvoering)