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.
Interfejs wiersza polecenia dla deweloperów platformy Azure (azd) obsługuje dwie strategie wdrażania dla usługi Azure Container Apps:
- Strategia oparta na obrazach. Oddziela aktualizacje konfiguracji aplikacji kontenera od wdrożeń obrazów.
- Strategia oparta na poprawkach. Łączy oba w jedno wdrożenie i obsługuje zaawansowane wzorce wdrażania.
W poniższych sekcjach opisano obie strategie.
Strategia wdrażania oparta na obrazach
W tej strategii konfiguracja aplikacji kontenera jest tworzona i aktualizowana podczas azd provision, podczas gdy obraz kontenera jest aktualizowany podczas azd deploy.
- Definicja aplikacji kontenera (zasoby, zmienne środowiskowe, sondy kondycji itd.) znajduje się w module Bicep zastosowanym podczas aprowizacji.
- Podczas wdrażania zmienia się tylko odwołanie do obrazu kontenera (
containers[0].image).
Zachowanie rewizji
Każda zmiana konfiguracji aplikacji lub obrazu wyzwala nową poprawkę:
| Step | Command | Wprowadza zmiany do | Notatki |
|---|---|---|---|
| 1 | azd provision |
Zmienne środowiskowe, zasoby, instalacja, sondy, moduły równoważenia obciążenia | Tworzy nową poprawkę |
| 2 | azd deploy |
Obraz kontenera | Tworzy kolejną poprawkę |
Każda poprawka przydziela dodatkowe repliki w środowisku Container Apps, co może tymczasowo zwiększyć użycie zasobów i koszty.
Uwaga / Notatka
Zaawansowane wzorce wdrażania, takie jak niebieski-zielony lub kanary, nie są obsługiwane w tej strategii.
Konfigurowanie wdrożeń opartych na obrazach
Aby upewnić się, że azd provision aktualizuje istniejącą aplikację kontenera bez zastępowania najnowszego wdrożonego obrazu, wykonaj operację upsert . Ten wzorzec jest implementowany przez moduł AVM container-app-upsert i składa się z dwóch kroków:
W pliku
main.parameters.jsonzdefiniuj parametr, który odwołuje się do zmiennejSERVICE_{NAME}_RESOURCE_EXISTSudostępnionej przez azd. Ta zmienna jest automatycznie ustawiana w momencie aprowizacji przezazd, aby wskazać, czy zasób już istnieje.{ "$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}" } } }W pliku Bicep odwołaj się do parametru
existsw celu kontrolowania, czy aplikacja kontenera powinna zostać utworzona, czy zaktualizowana. Modułcontainer-app-upserthermetyzuje tę logikę wewnętrznie.@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 } }To podejście pozwala na
azd provisionwstawienie/aktualizację (aktualizacja, jeśli istnieje; utworzenie, jeśli nie) zasobu aplikacji kontenera bezpiecznie, bez ręcznych kontroli.Wskazówka
Zachowaj
apiVersionazure.yamlwyrównanie elementu do modułuapiVersionMicrosoft.App/containerAppsBicep, aby uniknąć niezgodności.
Strategia wdrażania oparta na poprawkach
W tej strategii zarówno definicja aplikacji kontenera, jak i obraz są wdrażane razem podczas .azd deploy
Konfiguracja aplikacji kontenera znajduje się w dedykowanym module Bicep zastosowanym podczas wdrażania.
Zmiany zmiennych środowiskowych, obrazów, zasobów i ustawień równoważenia obciążenia są wdrażane jako pojedyncza poprawka.
Wskazówka
Ta strategia obsługuje blue-green, canary i inne zaawansowane wzorce wdrażania.
Konfigurowanie wdrożeń opartych na poprawkach
Zdefiniuj wdrożenie aplikacji kontenera, tworząc plik infra dla usługi, na przykład
infra/api.bicep. Aplikację kontenera można zdefiniować przy użyciu modułu avM lub bezpośrednio definiując zasób:@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' } } }Podaj parametry w czasie wdrażania, tworząc plik parametrów (np.
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}" } } }Uwaga / Notatka
SERVICE_API_IMAGE_NAMEparametr jest dynamicznie ustawiany podczas wdrażania i nie stanowi części wyników aprowizacji.Po uruchomieniu
azd deployrewizja aplikacji kontenera zostanie zastosowana z wykorzystaniem powyższej definicji zasobu.Wskazówka
Przekaż wszelkie dodatkowe dane wyjściowe z
azd provisionjako parametry doazd deploy, jeśli twoja aplikacja kontenerowa odwołuje się do innych przydzielonych zasobów.
Podsumowanie porównania
| Aspekt | Oparte na obrazach | Oparte na poprawkach |
|---|---|---|
| Aktualizuj polecenie | azd provision + azd deploy |
azd deploy tylko |
| Typ wdrożenia | Dwie poprawki | Pojedyncza poprawka |
| Kontrola wdrażania | Zarządzane przez azd |
Konfigurowalne (niebiesko-zielone, kanary) |
| Przypadek użycia | Proste środowiska | Wdrożenia zaawansowane |
| Lokalizacja definicji kontenera aplikacji | Czas Provisioningu dla Bicep | Wdrażanie Bicep w czasie wdrożenia |