Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Azure Developer CLI (azd) podporuje vrstvené zřizování, které můžete použít k definování více vrstev zřizování v azure.yaml souboru. Každá vrstva odkazuje na vlastní sadu šablon Infrastruktury jako kódu (IaC). CLI vytváří vrstvy po jedné, v pořadí daném závislostmi mezi nimi. Můžete také zřizovat nebo rušit jednotlivé vrstvy nezávisle.
Tato funkce řeší složité scénáře závislostí, kdy prostředky v jedné vrstvě závisejí na prostředcích z jiné vrstvy. Místo kombinování IaC s imperativními skripty háku udržuje vrstvené zřizování vše deklarativní.
Poznámka:
Zřizování vrstev je v současné době beta funkcí. Přečtěte si další informace o strategii správy verzí.
Kdy použít vrstvené zřizování
Používejte vrstvené poskytování, pokud jedno azd provision nasazení nedokáže zpracovat všechny potřeby infrastruktury jedním krokem. Zvažte použití vrstveného zřizování v následujících případech:
- Cyklické závislosti: Některé prostředky musí odkazovat na jiné prostředky, které musí být vytvořeny jako první, například virtuální síť, která musí existovat před konfigurací privátního koncového bodu.
- Základní infrastruktura se liší od aplikační infrastruktury: Spravujete sdílené sítě, zabezpečení nebo prostředky identit odděleně od prostředků jednotlivých aplikací.
- Vyžaduje se nezávislá správa životního cyklu: Aktualizujete a odstraňujete různé komponenty infrastruktury v různých časech. Síťová vrstva může být například dlouhodobá, zatímco aplikační vrstva se často znovu nasazuje.
- Projekty Monorepo s odlišnými skupinami infrastruktury: Jedno úložiště obsahuje více nezávislých služeb (jako je centrum událostí, aplikace kontejnerů a aplikace funkcí), z nichž každé má vlastní šablony infrastruktury.
Konfigurace vrstev v azure.yaml
Definujte vrstvy v infra části azure.yaml souboru. Každá vrstva vyžaduje name a path směřující na adresář, který obsahuje šablony IaC pro danou vrstvu.
name: my-app
infra:
layers:
- name: networking
path: ./infra/networking
- name: application
path: ./infra/application
services:
api:
project: ./src/api
language: js
host: containerapp
Důležité
Pořadí zpracování vrstev:azd provision zpracovává vrstvy na základě jejich závislostí. U vrstev Bicep a vlastních poskytovatelů nebo poskytovatelů rozšíření nástroj *.parameters.json odvozuje závislosti prohledáváním souborů parametrů (azd a azure.yaml) na odkazy na proměnné prostředí a výstupy vrstev a podle toho vrstvy seřazuje, místo aby se striktně řídil pořadím uvedeným v *.bicepparam. Vrstvy, které nemají žádné odvozené nebo deklarované závislosti běží v pořadí, v jakém jsou uvedeny.
azd down se řídí odpovídajícím obráceným pořadím, takže závislé vrstvy se odeberou před vrstvami, na které závisí. Pomocí vlastnosti dependsOn deklarujte pořadí, které azd nedokáže odvodit.
Vlastnosti vrstvy
Každá vrstva podporuje následující vlastnosti:
| Vlastnictví | Povinné | Description |
|---|---|---|
name |
Ano | Jedinečný název vrstvy. Tento název použijte při cílení na konkrétní vrstvu pomocí příkazů. |
path |
Ano | Relativní cesta k adresáři, který obsahuje šablony IaC pro tuto vrstvu. |
module |
Ne | Název modulu v adresáři vrstvy. Výchozí hodnota je main. |
provider |
Ne | Zprostředkovatel IaC pro tuto vrstvu (bicep nebo terraform). Dědí z kořenového adresáře infra.provider , pokud ho nezadáte. |
dependsOn |
Ne | Názvy dalších vrstev, na které tato vrstva závisí. Tuto vlastnost použijte při řazení důležitých věcí, ale azd nelze odvodit závislost z odkazů na parametry. |
Důležité
Při definování infra.layersnemůžete deklarovat další vlastnosti v oddílu infra (path, module, deploymentStacks) na kořenové úrovni. Musíte zadat veškerou konfiguraci infrastruktury v rámci každé vrstvy.
Adresářová struktura
Typický projekt využívající vrstvené zřizování může mít následující adresářovou strukturu:
my-app/
├── azure.yaml
├── infra/
│ ├── networking/
│ │ └── main.bicep
│ └── application/
│ └── main.bicep
└── src/
└── api/
└── ...
Každý adresář vrstvy obsahuje vlastní kompletní sadu šablon IaC, stejně jako by to bylo v adresáři standardního azdinfra projektu.
Zřizování a správa vrstev
Můžete zřídit všechny vrstvy najednou nebo cílit na konkrétní vrstvu podle názvu. Následující části popisují běžné příkazy pro zřizování, odstraňování a aktualizaci stavu vrstvy.
Nastavení všech vrstev
Spuštěním azd provision bez argumentů zřiďte všechny vrstvy:
azd provision
azd zpracovává každou vrstvu postupně a zajišťuje, aby se vrstva dokončila před zahájením jakékoli vrstvy, která na ní závisí. U vrstev Bicep a vlastních nebo rozšiřujících poskytovatelů azd odvozuje závislosti z odkazů na proměnné prostředí a výstupy vrstev v souborech *.bicepparam a *.parameters.json, takže se pořadí spuštění může lišit od pořadí uvedeného v azure.yaml. Vrstvy bez odvozených nebo deklarovaných závislostí se spouštějí v uvedeném pořadí. Tento proces zaručuje, že závislé prostředky existují před nasazením vrstev, které na ně odkazují.
Zřízení konkrétní vrstvy
Pokud chcete zřídit pouze určitou vrstvu, předejte název vrstvy jako argument:
azd provision networking
Tento příkaz nasadí pouze prostředky definované ve vrstvě networking . Zřízení konkrétní vrstvy je užitečné v následujících případech:
- Iterujete na jedné vrstvě během vývoje.
- Potřebujete aktualizovat jednu vrstvu bez opětovného nasazení ostatních.
- Nastavujete novou vrstvu nad stávající infrastrukturou.
Odbourání všech vrstev
Spusťte azd down bez argumentů, abyste uvolnili prostředky ze všech vrstev. Pokud existuje více vrstev, azd zpracuje je obráceně pořadí zřizování, takže závislé prostředky se odeberou před základními prostředky, na které závisejí:
azd down
Odstranění konkrétní vrstvy
Pokud chcete odstranit pouze určitou vrstvu, předejte název vrstvy jako argument:
azd down application
Tento příkaz odebere pouze prostředky nasazené vrstvou application a ostatní vrstvy zůstanou nedotčené.
Aktualizace stavu prostředí
Stav prostředí můžete aktualizovat z konkrétní vrstvy pomocí příznaku --layer s azd env refresh:
azd env refresh --layer networking
Tento příkaz aktualizuje proměnné prostředí a výstupy na základě posledního nasazení zadané vrstvy.
Příklad: Monorepo s více službami
Následující příklad ukazuje vrstvené zřizování monorepo, které obsahuje centrum událostí, aplikaci kontejneru s více kontejnery a aplikaci funkcí Azure:
name: logging-app
infra:
layers:
- name: eventhub
path: ./infra/eventhub
- name: aca
path: ./infra/aca
- name: functionapp
path: ./infra/functionapp
services:
functionapp:
resourceName: ${site_name}
language: dotnet
project: ./src/function/functionapp.csproj
host: appservice
resourceGroup: ${rg_name}
Odpovídající adresářová struktura:
logging-app/
├── azure.yaml
├── infra/
│ ├── eventhub/
│ │ └── main.bicep
│ ├── aca/
│ │ └── main.bicep
│ └── functionapp/
│ └── main.bicep
└── src/
└── function/
└── functionapp.csproj
S touto konfigurací můžete:
- Zřízení pouze infrastruktury centra událostí:
azd provision eventhub - Poskytnutí pouze infrastruktury kontejnerové aplikace:
azd provision aca - Zřiďte vše v pořadí:
azd provision - Roztrhejte pouze vrstvu aplikace funkcí:
azd down functionapp
Příklad: Základní vrstvy a vrstvy aplikací
Běžný vzor odděluje sdílenou nebo základní infrastrukturu od infrastruktury pro jednotlivé aplikace:
name: my-app
infra:
layers:
- name: base
path: ./infra/base
- name: app
path: ./infra/app
services:
web:
project: ./src/web
language: js
host: containerapp
Vrstva base vytváří sdílené prostředky, jako jsou sítě, identita a monitorování. Vrstva app vytvoří prostředky specifické pro aplikaci (například prostředí Container App a kontejnerové aplikace), které odkazují na základní prostředky.
Během vývoje můžete základní vrstvu zřídit jednou a iterovat na aplikační vrstvě:
azd provision base
azd provision app
azd provision app # re-provision only the app layer after changes
Příklad: Kombinovaní poskytovatelé IaC
Každá vrstva může používat jiného zprostředkovatele IaC. Můžete například použít Bicep pro sítě a Terraform pro aplikační vrstvu:
name: my-app
infra:
layers:
- name: networking
path: ./infra/networking
provider: bicep
- name: application
path: ./infra/application
provider: terraform
Vestavění poskytovatelé jiní než Bicep (Terraform, Pulumi, ARM a testovací poskytovatel) jsou pro odvozování závislostí neprůhlední, protože azd nemůže analyzovat jejich vstupy z hlediska odkazů na jiné vrstvy. Při řazení mezi těmito vrstvami nebo mezi těmito vrstvami a dalšími vrstvami je důležité použít explicitní dependsOn vlastnost:
name: my-app
infra:
layers:
- name: networking
path: ./infra/networking
provider: bicep
- name: application
path: ./infra/application
provider: terraform
dependsOn:
- networking
Úvahy a omezení
- Když zřídíte všechny vrstvy,
azdzpracuje je po jednom na základě jejich závislostí. Pro vrstvy Bicep a vlastní poskytovatele nebo poskytovatele rozšířeníazdodvodí závislosti z odkazů na proměnné prostředí a odkazů na výstupy vrstev v souborech*.bicepparama*.parameters.json. Vrstvy bez odvozených nebo deklarovaných závislostí se spouští v pořadí, v jakém definujete. - Integrovaní poskytovatelé jiní než Bicep (Terraform, Pulumi, ARM a testovací poskytovatel) jsou z hlediska odvozování závislostí netransparentní. Při řazení zahrnujících tyto vrstvy použijte explicitní
dependsOnvlastnost. - Explicitní
dependsOnje také vyžadován při řazení důležitých věcí, aleazdnemůže odvodit závislost z odkazů na parametry. Například použijtedependsOn, když hook jedné vrstvypostprovisionprodukuje hodnotu, kterou využívá jiná vrstva, protože hodnoty vytvořené hookem se v souborech*.parameters.jsonnebo*.bicepparamnezobrazují jako odkazy na výstup. - Když zrušíte všechny vrstvy,
azdje zpracuje v opačném pořadí, než v jakém byly zřizovány.- Pokud více vrstev nasadí prostředky do stejné skupiny prostředků Azure a použijete výchozí chování odstranění založené na skupinách prostředků, mohou se při spuštění azd down sdílené prostředky odstranit.
- Pokud chcete povolit nezávislé sledování a odstranění vrstvené infrastruktury, povolte zásobníky nasazení spuštěním příkazu
azd config set alpha.deployment.stacks on.
- Nemůžete použít příznak
--previewpři zřizování více vrstev najednou.<layer>Zadejte název pro použití režimu náhledu. - Vrstvy fungují nezávisle z hlediska IaC. Pokud chcete odkazovat na výstupy z jedné vrstvy v jiné vrstvě, použijte proměnné prostředí, které se nastaví po nasazení každé vrstvy
azd. Odkazování na tyto proměnné prostředí z*.bicepparamnebo*.parameters.jsonsouboru také umožňujeazdodvodit pořadí mezi vrstvami. - Všechny standardní
azdfunkce zřizování (ukládání stavu nasazení do mezipaměti, háky, parametry, Bicep nebo Terraform) fungují v jednotlivých vrstvách.- Háky příkazové úrovně (například
preprovision,postprovision) se volají jednou na vrstvu. Když je definováno více vrstev, háky se spouští pro každou vrstvu v pořadí, v jakém jsou vrstvy zpracovávány.
- Háky příkazové úrovně (například