Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az Azure Developer CLI (azd) támogatja az Azure App Service üzembehelyezési pontjait az App Service-ben üzemeltetett alkalmazásokhoz. Meghatározhat tárolóhelyeket az infrastruktúrában, kódot helyezhet üzembe egy adott ponton, és felcserélheti a tárolóhelyeket, ha készen áll a kiadás előléptetésére.
Ezt a megközelítést egyéni üzembehelyezési szkriptek hozzáadása nélkül használhatja az előkészítéshez, a kék-zöld üzembe helyezéshez, a füstteszteléshez és a visszaállításhoz.
Előfeltételek
- Egy
azdolyan projekt, amely üzembe helyez egy szolgáltatást az Azure App Service-ben. - Infrastruktúra mint kód, amely az App Service-erőforrásokat a Bicepben definiálja.
- App Service-csomag standard (
S1) szinten vagy annál magasabban. Az ingyenes, megosztott és alapszintű szintek nem támogatják az üzembehelyezési helyeket.
Üzembehelyezési pont definiálása a Bicepben
Definiálja a gyártási helyszínt a szokásos módon, majd adjon hozzá egy Microsoft.Web/sites/slots erőforrást minden megcélozni kívánt azd ponthoz.
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: {}
}
Ha Azure Verified Modulest (AVM) használ, adja meg a webalkalmazást és az üzembehelyezési pontmodulokat ugyanabban az üzembe helyezésben, és adja át az alkalmazás nevét a pontmodulnak.
Telepítés egy helyre az AZD használatával
Futtassa azd up vagy azd provisionazd deploy a szokásos módon.
azd up
Az első üzembe helyezéskor azd üzembe helyezi a éles helyen és az infrastruktúrában meghatározott összes slotot. Ez az első üzembe helyezés ugyanazt az alapkonfigurációt hozza létre a főalkalmazásban és minden pontban.
Az első üzembe helyezés után azd deploy megváltoztatja, hogyan választja ki az üzembehelyezési célt, ha léteznek slotok.
azd nem folytatja a közvetlen üzembe helyezést az éles alkalmazásban, ha rendelkezésre állnak slotok. Ehelyett üzembe helyez egy foglalatban, ellenőrzi a kiadást, majd becseréli az éles környezetbe.
Hogyan választja ki az azd az üzembehelyezési célt?
Amikor a azd deploy egy olyan App Service esetében fut, amely rendelkezik telepítési helyekkel, a cél kiválasztásához először ellenőrzi a fő alkalmazás üzembe helyezési előzményeit, majd kiértékeli az elérhető telepítési slotokat.
A viselkedés a következőképpen működik:
- Ha nem léteznek korábbi üzembe helyezések,
azdtelepít az alkalmazás fő részébe és az összes foglalatba. - Ha a korábbi telepítések léteznek, és nincsenek tárolóhelyek,
azdcsak a főalkalmazásban lesz üzembe helyezve. - Ha a korábbi telepítések léteznek, és pontosan egy pont létezik,
azdcsak erre a pontra telepít. - Ha léteznek korábbi üzembe helyezések, és két vagy több hely van, akkor a
azda környezeti változó által megadott helyet használja, vagy megkérdezi, hogy válasszon egyet.
Important
Az első üzembe helyezés azd után nem települ közvetlenül a fő App Service-alkalmazásba, ha vannak foglalatok. Ez a viselkedés szándékos, és segít megelőzni a termelési környezetbe történő véletlenszerű bevezetéseket. Az éles környezet frissítéséhez helyezzen üzembe egy pontot, majd cserélje le a pontot éles (@main) helyre.
Pont kiválasztása környezeti változóval
Ha a szolgáltatás két vagy több tárolóhellyel rendelkezik az első üzembe helyezés után, kihagyhatja az interaktív kérést, ha beállít egy környezeti változót az üzembe helyezni kívánt szolgáltatáshoz.
Használja a következő formátumot:
AZD_DEPLOY_<SERVICE_NAME>_SLOT_NAME
Hozza létre a változó nevét a szolgáltatásnévből azure.yaml nagybetűvel, és cserélje le a kötőjeleket aláhúzásjelekre.
Ha például a szolgáltatás neve el van nevezve my-api, használja a következőt AZD_DEPLOY_MY_API_SLOT_NAME:
azd env set AZD_DEPLOY_MY_API_SLOT_NAME staging
azd deploy my-api
Ezt az értéket azd környezetében tárolhatja a azd env set, vagy közvetlenül CI-rendszerben definiálhatja a azd deploy futtatása előtt.
Ha a szolgáltatásnak pontosan egy nyílása van, akkor a környezeti változót figyelmen kívül hagyja a azd, mert csak egy lehetséges üzembehelyezési cél van.
Ha a szolgáltatás két vagy több hellyel rendelkezik, és a környezeti változó nincs beállítva, azd megkéri, hogy válasszon egy helyet.
Pontészlelés megkerülése és üzembe helyezés a főalkalmazásban
Bizonyos esetekben a azd közvetlenül a fő App Service-alkalmazásba kell telepítenie, még akkor is, ha léteznek slotok. Például:
- A CI-folyamatodnak frissítenie kell a fő alkalmazást, miközben a meglévő slotokat érintetlenül hagyja.
- Egy hibás slotállapotból szeretne helyreállni, és közvetlenül szeretné újra üzembe helyezni az éles webhelyet.
- Az új helyek konfigurálása előtt éppen újraalapozza a fő alkalmazást.
A foglalatészlelés megkerüléséhez állítsa be a következő környezeti változót a szolgáltatáshoz:
AZD_DEPLOY_<SERVICE_NAME>_IGNORE_SLOTS
Hozza létre a változó nevét a szolgáltatásnévből azure.yaml nagybetűvel, és cserélje le a kötőjeleket aláhúzásjelekre. Állítsa az értéket erre: true, hogy kihagyja a slotészlelést, és az üzembe helyezést a főalkalmazásban végezze el.
Ha például a szolgáltatás neve el van nevezve my-api, használja a következőt AZD_DEPLOY_MY_API_IGNORE_SLOTS:
azd env set AZD_DEPLOY_MY_API_IGNORE_SLOTS true
azd deploy my-api
Ha a(z) AZD_DEPLOY_<SERVICE_NAME>_IGNORE_SLOTS értéke true, a(z) azd a főalkalmazásba települ, és figyelmen kívül hagyja az ugyanahhoz a szolgáltatáshoz tartozó AZD_DEPLOY_<SERVICE_NAME>_SLOT_NAME értéket. Szüntesse meg a változó beállítását, vagy állítsa false értékre, hogy visszatérjen az alapértelmezett, slottudatos működéshez.
CI és neminteraktív viselkedés
A CI-ről való futtatáskor azd deploy --no-prompt vagy üzembe helyezéskor a pontválasztás a rendelkezésre álló pontok számától függően eltérően viselkedik:
| Bővítőhely | Környezeti változók viselkedése | Result |
|---|---|---|
0 |
Nem alkalmazható. |
azd telepítése a fő alkalmazáshoz. |
1 |
Figyelmen kívül marad, hacsak a AZD_DEPLOY_<SERVICE_NAME>_IGNORE_SLOTS nem true. |
azd az egyetlen üzembehelyezési pontra, vagy ha a slotokat figyelmen kívül hagyják, a fő alkalmazásra telepít. |
2+ |
AZD_DEPLOY_<SERVICE_NAME>_SLOT_NAME szükséges a kérés megjelenítésének elkerüléséhez, kivéve, ha AZD_DEPLOY_<SERVICE_NAME>_IGNORE_SLOTS értéke true. |
azd üzembe helyezi a megadott ponton, üzembe helyezi a főalkalmazásban a pontok figyelmen kívül hagyásakor, vagy meghiúsul, ha nincs kijelölhető cél. |
Ha automatizálja egy két vagy több slot-tal rendelkező App Service üzembe helyezését, állítsa be a AZD_DEPLOY_<SERVICE_NAME>_SLOT_NAME a folyamatkörnyezetben a azd deploy futtatása előtt. Ha a CI-ből közvetlenül az éles környezetbe szeretné kényszeríteni az üzembe helyezést, amikor vannak slotok, állítsa inkább a(z) AZD_DEPLOY_<SERVICE_NAME>_IGNORE_SLOTS értékét erre: true.
Az Azure App Service üzembehelyezési pontjainak felcserélése
Az azure.appservice bővítmény használatával az ellenőrzés után felcserélheti a helyeket. Ha a bővítmény még nincs telepítve, azd a parancs első futtatásakor kéri a telepítést.
Futtassa az interaktív felületet:
azd appservice swap
Ha csak egy nem termelési pont létezik, azd automatikusan kihagyja a kéréseket, és közvetlenül cserél az éles környezettel.
Az automatizáláshoz explicit módon adja meg a forrás- és célhelyeket. A „production slotra” való hivatkozáshoz használja a @main-t.
azd appservice swap --src staging --dst @main
azd appservice swap --src @main --dst staging
azd appservice swap --service myapi --src staging --dst @main
Használja ezeket a mintákat a gyakori kiadási folyamatok támogatásához:
- Érvényesített előkészítési üzembe helyezés éles környezetbe helyezése a(z)
--src staging --dst @mainsegítségével. - Az éles környezet visszacserélésével térjen vissza az előkészítési pontra a következővel
--src @main --dst staging: . - Egy adott App Service által támogatott szolgáltatás megcélzása többszolgáltatásos
azdprojektben a következővel--service: .
A felcserélés a tárolóhelyek konfigurálása után az éles környezet frissítésének tervezett útvonala. Egy azd deploy pont frissítésére, majd a pont éles környezetbe való előléptetésére használható azd appservice swap .
Ajánlott üzembehelyezési pont munkafolyamata
- Definiáljon egy vagy több App Service-üzembehelyezési pontot a Bicep-sablonokban.
- Az App Service-erőforrások kiépítése
azd provisionvagyazd uphasználatával. - Hagyja, hogy az első üzembe helyezés alapkonfigurációt hozzon létre a fő alkalmazáson és minden ponton.
- A későbbi alkalmazásfrissítések üzembe helyezése egy előkészítési ponton két vagy több tárolóhely beállításával
AZD_DEPLOY_<SERVICE_NAME>_SLOT_NAME, vagy a pont kiválasztásával, amikor a rendszer kéri. Ha a CI-ből közvetlenül a fő környezetbe szeretne üzembe helyezni akkor is, amikor vannak slotok, állítsa aAZD_DEPLOY_<SERVICE_NAME>_IGNORE_SLOTSértékét inkábbtrueértékre. - Ellenőrizze a szakaszos üzembe helyezést.
- Futtassa
azd appservice swap --src <slot> --dst @maina kiadás elősegítéséhez. - Szükség esetén futtassa a fordított felcserélést a visszaállításhoz.