Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Interfejs wiersza polecenia dla deweloperów platformy Azure (azd) obsługuje miejsca wdrożenia usługi Azure App Service dla aplikacji hostowanych w usłudze App Service. Możesz zdefiniować miejsca w infrastrukturze, wdrożyć kod w określonym miejscu i zamienić miejsca, gdy wszystko będzie gotowe do podwyższenia poziomu wydania.
Użyj tego podejścia do etapowania, wdrożeń typu blue-green, testów wstępnych i wycofywania bez dodawania niestandardowych skryptów do wdrażania.
Wymagania wstępne
- Projekt
azdwdrażający usługę do Azure App Service. - Infrastruktura jako kod definiujący zasoby usługi App Service w środowisku Bicep.
- Plan usługi App Service w warstwie Standard (
S1) lub wyższej. Warstwy Free, Shared oraz Basic nie obsługują slotów wdrożeniowych.
Definiowanie miejsca wdrożenia w środowisku Bicep
Zdefiniuj lokację produkcyjną Microsoft.Web/sites/slots jak zwykle, a następnie dodaj zasób dla każdego miejsca docelowego azd .
resource appServicePlan 'Microsoft.Web/serverfarms@2021-03-01' = {
name: 'my-appservice-plan'
location: resourceGroup().location
sku: {
name: 'S1'
tier: 'Standard'
}
}
resource webApp 'Microsoft.Web/sites@2021-03-01' = {
name: 'my-appservice'
location: resourceGroup().location
kind: 'app'
properties: {
serverFarmId: appServicePlan.id
}
}
resource stagingSlot 'Microsoft.Web/sites/slots@2021-03-01' = {
name: '${webApp.name}/staging'
location: webApp.location
properties: {}
}
Jeśli używasz modułów Azure Verified Modules (AVM), zdefiniuj moduły aplikacji internetowej i slotu wdrożeniowego w tym samym wdrożeniu i przekaż nazwę aplikacji do modułu slotu.
Wdrażanie do gniazda za pomocą azd
Uruchom azd up albo azd provision oraz azd deploy tak jak zwykle.
azd up
Przy pierwszym wdrożeniu azd wdraża się na lokację produkcyjną oraz wszystkie sloty zdefiniowane w infrastrukturze. To pierwsze wdrożenie ustanawia ten sam punkt odniesienia w głównej aplikacji i każdym slocie.
Po pierwszym wdrożeniu azd deploy zmienia sposób wybierania docelowego miejsca wdrożenia, gdy dostępne są sloty.
azd nie kontynuuje wdrażania bezpośrednio do aplikacji produkcyjnej, gdy są dostępne sloty. Zamiast tego wdrażasz do slotu, weryfikujesz wydanie, a następnie zamieniasz je ze środowiskiem produkcyjnym.
Jak azd wybiera cel wdrożenia
Gdy azd deploy działa dla usługi App Service, która ma miejsca wdrożeniowe, wybiera cel, sprawdzając historię wdrożeń w głównej aplikacji, a następnie ocenia dostępne miejsca.
Zachowanie działa w następujący sposób:
- Jeśli nie istnieją żadne poprzednie wdrożenia,
azdwdraża się do głównej aplikacji i wszystkich slotów. - Jeśli istnieją poprzednie wdrożenia i nie ma żadnych slotów,
azdwdrożenia są dokonywane tylko w głównej aplikacji. - Jeżeli istnieją poprzednie wdrożenia i istnieje dokładnie jeden slot,
azdwdraża się tylko w tym slocie. - Jeśli poprzednie wdrożenia istnieją i jest co najmniej dwa miejsca,
azdużywa miejsca określonego przez zmienną środowiskową lubazdwyświetli monit o wybranie jednego.
Ważna
Po pierwszym wdrożeniu, jeśli istnieją sloty, azd nie wdraża się bezpośrednio do głównej aplikacji usługi App Service. To zachowanie jest zamierzone i pomaga zapobiegać przypadkowym wdrożeniom bezpośrednio do środowiska produkcyjnego. Aby zaktualizować środowisko produkcyjne, wdróż do slotu, a następnie zamień slot ze środowiskiem produkcyjnym (@main).
Wybierz przedział ze zmienną środowiskową
Jeśli usługa ma co najmniej dwa miejsca po pierwszym wdrożeniu, możesz pominąć interakcyjny monit, ustawiając zmienną środowiskową dla usługi, którą chcesz wdrożyć.
Użyj następującego formatu:
AZD_DEPLOY_<SERVICE_NAME>_SLOT_NAME
Skompiluj nazwę zmiennej z nazwy azure.yaml usługi przy użyciu wielkich liter i zastąp łączniki podkreśleniami.
Jeśli na przykład twoja usługa ma nazwę my-api, użyj polecenia AZD_DEPLOY_MY_API_SLOT_NAME.
azd env set AZD_DEPLOY_MY_API_SLOT_NAME staging
azd deploy my-api
Tę wartość można przechowywać w środowisku azd przy użyciu azd env set, lub zdefiniować ją bezpośrednio w systemie ciągłej integracji przed uruchomieniem azd deploy.
Jeśli usługa ma dokładnie jedno miejsce, azd ignoruje zmienną środowiskową, ponieważ istnieje tylko jeden możliwy cel wdrożenia.
Jeśli usługa ma co najmniej dwa miejsca, a zmienna środowiskowa nie jest ustawiona, azd monituje o wybranie miejsca.
Pomiń wykrywanie slotu i wdróż do aplikacji głównej
W niektórych scenariuszach należy azd wdrożyć bezpośrednio do głównej aplikacji usługi App Service, nawet gdy istnieją gniazda wdrożeniowe. Przykład:
- Potok CI musi zaktualizować główną aplikację, pozostawiając istniejące sloty bez zmian.
- Odzyskujesz po nieprawidłowym stanie slotu i chcesz bezpośrednio ponownie wdrożyć witrynę produkcyjną.
- Ponownie ustawiasz punkt odniesienia dla głównej aplikacji przed skonfigurowaniem nowych slotów.
Aby obejść wykrywanie slotu, ustaw dla usługi następującą zmienną środowiskową:
AZD_DEPLOY_<SERVICE_NAME>_IGNORE_SLOTS
Skompiluj nazwę zmiennej z nazwy azure.yaml usługi przy użyciu wielkich liter i zastąp łączniki podkreśleniami. Ustaw wartość na true, aby pominąć wykrywanie gniazd i wdrożyć w aplikacji głównej.
Jeśli na przykład twoja usługa ma nazwę my-api, użyj polecenia AZD_DEPLOY_MY_API_IGNORE_SLOTS.
azd env set AZD_DEPLOY_MY_API_IGNORE_SLOTS true
azd deploy my-api
Gdy AZD_DEPLOY_<SERVICE_NAME>_IGNORE_SLOTS jest ustawione na true, azd jest wdrażane do aplikacji głównej i ignoruje dowolną wartość AZD_DEPLOY_<SERVICE_NAME>_SLOT_NAME dla tej samej usługi. Usuń wartość zmiennej lub ustaw ją na false, aby przywrócić domyślne zachowanie uwzględniające sloty.
CI (Ciągła Integracja) i nieinteraktywny tryb pracy
Po uruchomieniu azd deploy --no-prompt lub wdrożeniu z CI, wybór slotu działa inaczej w zależności od liczby dostępnych slotów:
| Sloty | Zachowanie zmiennej środowiskowej | Wynik |
|---|---|---|
0 |
Nie dotyczy. |
azd wdraża się do głównej aplikacji. |
1 |
Ignorowane, chyba że AZD_DEPLOY_<SERVICE_NAME>_IGNORE_SLOTS ma wartość true. |
azd jest wdrażany do jedynego slotu lub do głównej aplikacji, gdy sloty są ignorowane. |
2+ |
AZD_DEPLOY_<SERVICE_NAME>_SLOT_NAME wymagane do uniknięcia monitowania, chyba że AZD_DEPLOY_<SERVICE_NAME>_IGNORE_SLOTS ma wartość true. |
azd wdraża do określonego slotu, wdraża do aplikacji głównej, gdy sloty są ignorowane, lub kończy się niepowodzeniem, jeśli nie można wybrać celu wdrożenia. |
Jeśli zautomatyzujesz wdrożenia dla usługi App Service, która ma co najmniej dwa sloty, ustaw wartość AZD_DEPLOY_<SERVICE_NAME>_SLOT_NAME w środowisku potoku przed uruchomieniem azd deploy. Aby wymusić wdrożenie bezpośrednio do środowiska głównego z poziomu CI, gdy istnieją sloty, ustaw AZD_DEPLOY_<SERVICE_NAME>_IGNORE_SLOTS na true zamiast tego.
Wymiana miejsc wdrożenia usługi Azure App Service
Użyj rozszerzenia azure.appservice, aby zamienić sloty po walidacji. Jeśli rozszerzenie nie jest jeszcze zainstalowane, azd monituje o jego zainstalowanie przy pierwszym uruchomieniu polecenia.
Uruchom środowisko interaktywne:
azd appservice swap
Jeśli istnieje tylko jeden slot nieprodukcyjny, azd pomija monity i bezpośrednio wymienia się z produkcyjnym.
W przypadku automatyzacji określ jawnie miejsca źródłowe i docelowe. Użyj @main, aby odwołać się do slotu produkcyjnego.
azd appservice swap --src staging --dst @main
azd appservice swap --src @main --dst staging
azd appservice swap --service myapi --src staging --dst @main
Użyj tych wzorców, aby obsługiwać typowe procesy wydawnicze.
- Podwyższanie poziomu zweryfikowanego wdrożenia przejściowego do środowiska produkcyjnego za pomocą polecenia
--src staging --dst @main. - Wycofaj, zamieniając środowisko produkcyjne z powrotem na miejsce przejściowe za pomocą polecenia
--src @main --dst staging. - Ukierunkowanie konkretnej usługi opartej na App Service w projekcie z wieloma usługami
azdza pomocą--service.
Przełączanie miejsc jest przewidzianą metodą aktualizacji produkcji po skonfigurowaniu slotów. Użyj azd deploy, aby zaktualizować miejsce, a następnie użyj azd appservice swap, aby promować to miejsce do środowiska produkcyjnego.
Zalecany przepływ pracy slotu wdrożeniowego
- Zdefiniuj co najmniej jedno gniazdo wdrożenia usługi App Service w szablonach Bicep.
- Skonfiguruj zasoby usługi Azure App Service przy użyciu
azd provisionlubazd up. - Niech pierwsze wdrożenie ustanowi punkt odniesienia w głównej aplikacji i każdym slocie.
- Wdróż później aktualizacje aplikacji do gniazda testowego, ustawiając
AZD_DEPLOY_<SERVICE_NAME>_SLOT_NAME, gdy masz co najmniej dwa gniazda, lub wybierając gniazdo po wyświetleniu monitu. Aby wymusić wdrożenie bezpośrednio do środowiska głównego z poziomu CI, gdy istnieją sloty, ustawAZD_DEPLOY_<SERVICE_NAME>_IGNORE_SLOTSnatrue. - Zweryfikuj wdrożenie etapowe.
- Uruchom polecenie
azd appservice swap --src <slot> --dst @main, aby promować wydanie. - W razie potrzeby uruchom odwrotną wymianę, aby przywrócić wcześniejszy stan.
Treści powiązane
- Omówienie poleceń interfejsu wiersza polecenia dla deweloperów platformy Azure
- Dokumentacja interfejsu wiersza polecenia dla deweloperów platformy Azure
- Konfigurowanie środowisk przejściowych w usłudze Azure App Service
- Wdrażanie w slotach wdrożeniowych usługi Azure App Service za pomocą narzędzia azd
- Interfejs wiersza polecenia dla deweloperów platformy Azure (azd): jedno polecenie umożliwiające zamianę miejsc usługi Azure App Service