Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Azure Developer CLI (azd) mendukung provisi berlapis, yang dapat Anda gunakan untuk menentukan beberapa lapisan provisi dalam file Anda azure.yaml . Setiap lapisan menunjuk ke serangkaian templat Infrastruktur sebagai Kode (IaC) sendiri. CLI menyediakan lapisan secara berurutan dalam urutan yang Anda tentukan. Anda juga dapat menyediakan atau meruntuhkan lapisan individual secara mandiri.
Fitur ini memecahkan skenario dependensi kompleks di mana sumber daya dalam satu lapisan bergantung pada sumber daya dari lapisan lain. Alih-alih mencampur IaC dengan skrip kait imperatif, provisi berlapis membuat semuanya tetap deklaratif.
Nota
Penyediaan berlapis adalah fitur beta saat ini. Pelajari selengkapnya tentang strategi penerapan versi.
Kapan menggunakan provisi berlapis
Gunakan penyediaan berlapis saat satu azd provision penyebaran tidak dapat menangani semua kebutuhan infrastruktur Anda dalam satu langkah. Pertimbangkan untuk menggunakan provisi berlapis saat:
- Dependensi melingkar: Beberapa sumber daya perlu mereferensikan sumber daya lain yang harus dibuat terlebih dahulu, seperti jaringan virtual yang harus ada sebelum titik akhir privat dapat dikonfigurasi.
- Infrastruktur dasar berbeda dari infrastruktur aplikasi: Anda mengelola jaringan bersama, keamanan, atau sumber daya identitas secara terpisah dari sumber daya per aplikasi.
- Diperlukan manajemen siklus hidup independen: Anda memperbarui dan meruntuhkan komponen infrastruktur yang berbeda pada waktu yang berbeda. Misalnya, lapisan jaringan mungkin berumur panjang, sementara lapisan aplikasi sering disebarkan ulang.
- Proyek monorepo dengan grup infrastruktur yang berbeda: Satu repositori berisi beberapa layanan independen (seperti Event Hub, Aplikasi Kontainer, dan Aplikasi Fungsi), masing-masing dengan templat infrastrukturnya sendiri.
Konfigurasikan layer dalam azure.yaml
Tetapkan lapisan-lapisan di bawah bagian infra dalam file azure.yaml Anda. Setiap lapisan memerlukan name dan path menunjuk ke direktori yang berisi templat IaC untuk lapisan tersebut.
name: my-app
infra:
layers:
- name: networking
path: ./infra/networking
- name: application
path: ./infra/application
services:
api:
project: ./src/api
language: js
host: containerapp
Penting
Urutan pemrosesan lapisan:azd provision memproses lapisan atas ke bawah dalam urutan yang tercantum dalam azure.yaml.
azd down memproses lapisan dalam urutan terbalik (bawah ke atas). Tentukan lapisan Anda sehingga sumber daya dasar muncul terlebih dahulu, diikuti oleh lapisan yang bergantung padanya. Urutan ini memastikan Anda membuat dependensi sebelum sumber daya yang membutuhkannya, dan menghapus dependensi setelah sumber daya tersebut.
Properti lapisan
Setiap lapisan mendukung properti berikut:
| Harta benda | Diperlukan | Deskripsi |
|---|---|---|
name |
Yes | Nama unik untuk lapisan. Gunakan nama ini saat menargetkan lapisan tertentu dengan perintah. |
path |
Yes | Jalur relatif ke direktori yang berisi templat IaC untuk lapisan ini. |
module |
Tidak. | Nama modul dalam direktori lapisan. Secara default menjadi main. |
provider |
Tidak. | Penyedia IaC untuk lapisan ini (bicep atau terraform). Mewarisi dari akar infra.provider jika Anda tidak menentukannya. |
Penting
Saat Anda menentukan infra.layers, Anda tidak dapat mendeklarasikan properti lain di infra bagian (path, module, deploymentStacks) di tingkat akar. Anda harus menentukan semua konfigurasi infrastruktur dalam setiap lapisan.
Struktur direktori
Proyek umum yang menggunakan provisi berlapis mungkin memiliki struktur direktori berikut:
my-app/
├── azure.yaml
├── infra/
│ ├── networking/
│ │ └── main.bicep
│ └── application/
│ └── main.bicep
└── src/
└── api/
└── ...
Setiap direktori lapisan berisi serangkaian templat IaC lengkapnya sendiri, sama seperti direktori proyek azd standarinfra.
Pengadaan dan mengelola lapisan
Anda dapat menyediakan semua lapisan sekaligus atau menargetkan lapisan tertentu berdasarkan nama. Bagian berikut menjelaskan perintah umum untuk penyediaan, pembongkaran, dan penyegaran kondisi lapisan.
Memprovisikan semua lapisan
Jalankan azd provision tanpa argumen untuk menyediakan semua lapisan secara berurutan dalam urutan yang ditentukan dalam azure.yaml:
azd provision
azd memproses setiap lapisan satu per satu, memastikan lapisan pertama selesai sebelum lapisan kedua dimulai. Proses ini menjamin bahwa sumber daya dependen ada sebelum lapisan yang mereferensikannya disebarkan.
Memprovisikan lapisan tertentu
Untuk memprovisikan hanya lapisan tertentu, berikan nama lapisan sebagai argumen:
azd provision networking
Perintah ini hanya menyebarkan sumber daya yang ditentukan dalam networking lapisan. Penyediaan lapisan tertentu berguna saat:
- Anda melakukan iterasi pada satu lapisan selama pengembangan.
- Anda perlu memperbarui satu lapisan tanpa menyebarkan ulang lapisan lain.
- Anda sedang menyiapkan lapisan baru di atas infrastruktur yang ada.
Merobek semua lapisan
Jalankan azd down tanpa argumen untuk menghapus sumber daya dari semua lapisan. Ketika beberapa lapisan ada, azd memprosesnya dalam urutan terbalik, sehingga sumber daya dependen dihapus sebelum sumber daya dasar bergantung pada:
azd down
Merobek lapisan tertentu
Untuk merobek lapisan tertentu saja, teruskan nama lapisan sebagai argumen:
azd down application
Perintah ini hanya menghapus sumber daya yang disebarkan oleh application lapisan, membiarkan lapisan lain tetap utuh.
Merefresh kondisi lingkungan sistem
Anda dapat menyegarkan status lingkungan dari lapisan tertentu dengan menggunakan --layer flag dengan azd env refresh:
azd env refresh --layer networking
Perintah ini memperbarui variabel dan output lingkungan berdasarkan penyebaran terbaru dari lapisan yang ditentukan.
Contoh: Monorepo dengan beberapa layanan
Contoh berikut menunjukkan provisi berlapis untuk monorepo yang berisi Event Hub, Aplikasi Kontainer yang menjalankan beberapa kontainer, dan Aplikasi Fungsi 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}
Struktur direktori yang sesuai:
logging-app/
├── azure.yaml
├── infra/
│ ├── eventhub/
│ │ └── main.bicep
│ ├── aca/
│ │ └── main.bicep
│ └── functionapp/
│ └── main.bicep
└── src/
└── function/
└── functionapp.csproj
Dengan konfigurasi ini, Anda dapat:
- Hanya sediakan infrastruktur Event Hub:
azd provision eventhub - Sediakan hanya infrastruktur Kontainer Aplikasi:
azd provision aca - Sediakan semuanya secara tertata:
azd provision - Membongkar hanya lapisan Function App:
azd down functionapp
Contoh: Lapisan dasar dan aplikasi
Pola umum memisahkan infrastruktur bersama atau dasar dari infrastruktur per aplikasi:
name: my-app
infra:
layers:
- name: base
path: ./infra/base
- name: app
path: ./infra/app
services:
web:
project: ./src/web
language: js
host: containerapp
Lapisan ini base membuat sumber daya bersama seperti jaringan, identitas, dan pemantauan. Lapisan app membuat sumber daya khusus aplikasi (seperti lingkungan Aplikasi Kontainer dan aplikasi kontainer) yang mereferensikan sumber daya dasar.
Selama pengembangan, Anda dapat memprovisikan lapisan dasar sekali dan melakukan iterasi pada lapisan aplikasi:
azd provision base
azd provision app
azd provision app # re-provision only the app layer after changes
Contoh: Penyedia IaC campuran
Setiap lapisan dapat menggunakan penyedia IaC yang berbeda. Misalnya, Anda dapat menggunakan Bicep untuk jaringan dan Terraform untuk lapisan aplikasi:
name: my-app
infra:
layers:
- name: networking
path: ./infra/networking
provider: bicep
- name: application
path: ./infra/application
provider: terraform
Pertimbangan dan keterbatasan
- Saat menyediakan semua lapisan,
azdmemprosesnya secara berurutan sesuai dengan urutan yang Anda tentukan. Rencanakan urutan lapisan Anda sehingga sumber daya dasar disediakan terlebih dahulu. - Saat mengurai semua lapisan,
azddiproses dalam urutan terbalik.- Jika beberapa lapisan menyebarkan sumber daya ke dalam grup sumber daya Azure yang sama dan Anda menggunakan perilaku penghapusan berbasis grup sumber daya default, sumber daya bersama dapat dihapus saat menjalankan azd down.
- Untuk memungkinkan pelacakan independen dan penghapusan infrastruktur berlapis, aktifkan tumpukan penyebaran menggunakan
azd config set alpha.deployment.stacks onperintah Tumpukan Penyebaran memungkinkan azd melacak sumber daya per lapisan alih-alih hanya mengandalkan penghapusan grup sumber daya.
- Anda tidak dapat menggunakan
--previewbendera saat menyediakan beberapa lapisan sekaligus. Tentukan nama<layer>untuk menggunakan mode pratinjau. - Lapisan beroperasi secara independen dalam hal IaC. Untuk mereferensikan output dari satu lapisan di lapisan lain, gunakan variabel lingkungan yang
azddiatur setelah setiap penyebaran lapisan. - Semua fitur provisi standar
azd(penyimpanan sementara status penyebaran, hook, parameter, Bicep, atau Terraform) berfungsi di setiap lapisan secara individu.- Kait tingkat perintah (misalnya, ,
preprovisionpostprovision) dipanggil sekali per lapisan. Ketika beberapa lapisan didefinisikan, kait dijalankan untuk setiap lapisan sesuai dengan urutan pemrosesan lapisan tersebut.
- Kait tingkat perintah (misalnya, ,
Langkah selanjutnya
referensi skema azure.yaml