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 slot penyebaran Azure App Service untuk aplikasi yang dihosting di App Service. Anda dapat menentukan slot di infrastruktur Anda, menyebarkan kode ke slot tertentu, dan menukar slot saat Anda siap untuk mempromosikan rilis.
Gunakan pendekatan ini untuk penahapan, penyebaran biru-hijau, pengujian asap, dan putar kembali tanpa menambahkan skrip penyebaran kustom.
Prasyarat
- Proyek
azdyang menyebarkan layanan ke Azure App Service. - Infrastruktur sebagai kode yang mendefinisikan sumber daya App Service Anda di Bicep.
- Paket App Service pada tingkat Standar (
S1) atau yang lebih tinggi. Tingkat Gratis, Bersama, dan Dasar tidak mendukung slot penyebaran.
Menentukan slot penyebaran di Bicep
Tentukan situs produksi Anda seperti biasa, lalu tambahkan Microsoft.Web/sites/slots sumber daya untuk setiap slot yang ingin azd Anda targetkan.
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: {}
}
Jika Anda menggunakan Modul Terverifikasi Azure (AVM), definisikan aplikasi web dan modul slot penyebaran dalam satu penyebaran yang sama lalu teruskan nama aplikasi ke modul slot.
Menyebarkan ke slot dengan azd
Jalankan azd up atau azd provision dan azd deploy seperti biasa.
azd up
Pada penyebaran pertama, azd akan diterapkan ke situs produksi dan slot apa pun yang ditentukan dalam infrastruktur Anda. Penyebaran pertama ini menetapkan garis besar yang sama di seluruh aplikasi utama dan setiap slot.
Setelah penyebaran pertama, azd deploy mengubah cara memilih target penyebaran ketika slot ada.
azd tidak terus menyebarkan langsung ke aplikasi produksi saat slot tersedia. Sebagai gantinya, Anda menyebarkan ke slot, memvalidasi rilis, lalu memindahkannya ke lingkungan produksi.
Cara azd memilih target penyebaran
Saat azd deploy dijalankan untuk App Service yang memiliki slot penyebaran, app Service memilih target dengan memeriksa riwayat penyebaran pada aplikasi utama lalu mengevaluasi slot yang tersedia.
Perilaku berfungsi sebagai berikut:
- Jika tidak ada penyebaran sebelumnya,
azdsebarkan ke aplikasi utama dan semua slot. - Jika penyebaran sebelumnya ada dan tidak ada slot,
azdmenyebarkan ke aplikasi utama saja. - Jika penyebaran sebelumnya sudah ada dan hanya ada tepat satu slot,
azdakan diterapkan ke slot tersebut saja. - Jika penyebaran sebelumnya ada dan dua slot atau lebih ada,
azdgunakan slot yang ditentukan oleh variabel lingkungan atau meminta Anda untuk memilihnya.
Important
Setelah penyebaran pertama, azd tidak langsung menyebar ke aplikasi App Service utama jika slot tersedia. Perilaku ini disengaja dan membantu mencegah penempatan langsung ke lingkungan produksi yang tidak disengaja. Untuk memperbarui produksi, terapkan ke slot lalu tukar slot ke produksi (@main).
Pilih slot dengan variabel lingkungan
Saat layanan Anda memiliki dua slot atau lebih setelah penyebaran pertama, Anda dapat melewati perintah interaktif dengan mengatur variabel lingkungan untuk layanan yang ingin Anda sebarkan.
Gunakan format berikut:
AZD_DEPLOY_<SERVICE_NAME>_SLOT_NAME
Buat nama variabel dari nama layanan dengan azure.yaml menggunakan huruf besar dan ganti tanda hubung dengan garis bawah.
Misalnya, jika layanan Anda bernama my-api, gunakan AZD_DEPLOY_MY_API_SLOT_NAME.
azd env set AZD_DEPLOY_MY_API_SLOT_NAME staging
azd deploy my-api
Anda dapat menyimpan nilai ini di lingkungan Anda azd dengan menggunakan azd env set, atau menentukannya langsung di sistem CI Anda sebelum menjalankan azd deploy.
Jika layanan Anda memiliki tepat satu slot, azd abaikan variabel lingkungan karena hanya ada satu kemungkinan target penyebaran.
Jika layanan Anda memiliki dua slot atau lebih dan variabel lingkungan tidak diatur, azd meminta Anda untuk memilih slot.
Lewati deteksi slot dan terapkan ke aplikasi utama
Dalam beberapa skenario, Anda perlu azd menyebarkan langsung ke aplikasi App Service utama meskipun slot tersedia. Contohnya:
- Alur CI Anda perlu me-refresh aplikasi utama sambil membiarkan slot yang ada tidak tersentuh.
- Anda sedang memulihkan slot yang berada dalam kondisi buruk dan ingin mendeploy ulang situs produksi secara langsung.
- Anda sedang mengatur ulang baseline aplikasi utama sebelum mengonfigurasi slot baru.
Untuk melewati deteksi slot, atur variabel lingkungan berikut untuk layanan:
AZD_DEPLOY_<SERVICE_NAME>_IGNORE_SLOTS
Buat nama variabel dari nama layanan dengan azure.yaml menggunakan huruf besar dan ganti tanda hubung dengan garis bawah. Atur nilai ke true untuk melewati deteksi slot dan menyebarkan ke aplikasi utama.
Misalnya, jika layanan Anda bernama my-api, gunakan AZD_DEPLOY_MY_API_IGNORE_SLOTS.
azd env set AZD_DEPLOY_MY_API_IGNORE_SLOTS true
azd deploy my-api
Ketika AZD_DEPLOY_<SERVICE_NAME>_IGNORE_SLOTS diatur ke true, azd disebarkan ke aplikasi utama dan mengabaikan nilai apa pun AZD_DEPLOY_<SERVICE_NAME>_SLOT_NAME untuk layanan yang sama. Hapus setelan variabel atau atur ke false untuk kembali ke perilaku default yang mengenali slot.
Perilaku CI dan noninteraktif
Saat Anda menjalankan azd deploy --no-prompt atau menyebarkan dari CI, pemilihan slot berperilaku berbeda tergantung pada berapa banyak slot yang tersedia:
| Slot | Perilaku variabel lingkungan | Result |
|---|---|---|
0 |
Tidak dapat diterapkan. |
azd menyebarkan ke aplikasi utama. |
1 |
Diabaikan kecuali AZD_DEPLOY_<SERVICE_NAME>_IGNORE_SLOTS adalah true. |
azd menerapkan ke satu-satunya slot, atau ke aplikasi utama jika slot diabaikan. |
2+ |
AZD_DEPLOY_<SERVICE_NAME>_SLOT_NAME diperlukan untuk menghindari permintaan, kecuali AZD_DEPLOY_<SERVICE_NAME>_IGNORE_SLOTS adalah true. |
azd menyebarkan ke slot yang ditentukan, menyebarkan ke aplikasi utama saat slot diabaikan, atau gagal jika tidak ada target yang dapat dipilih. |
Jika Anda mengotomatiskan penyebaran untuk App Service yang memiliki dua slot atau lebih, atur AZD_DEPLOY_<SERVICE_NAME>_SLOT_NAME di lingkungan alur sebelum menjalankan azd deploy. Untuk memaksa penyebaran langsung ke utama dari CI saat slot ada, atur AZD_DEPLOY_<SERVICE_NAME>_IGNORE_SLOTS ke true sebagai gantinya.
Tukar slot penyebaran di Azure App Service
azure.appservice Gunakan ekstensi untuk menukar slot setelah validasi. Jika ekstensi belum diinstal, azd meminta Anda untuk menginstalnya saat pertama kali Menjalankan perintah.
Jalankan pengalaman interaktif:
azd appservice swap
Jika hanya ada satu slot nonproduksi, azd melewatkan petunjuk dan langsung bertukar dengan slot produksi.
Untuk otomatisasi, tentukan slot sumber dan tujuan secara eksplisit. Gunakan @main untuk mereferensikan slot produksi.
azd appservice swap --src staging --dst @main
azd appservice swap --src @main --dst staging
azd appservice swap --service myapi --src staging --dst @main
Gunakan pola ini untuk mendukung alur rilis umum:
- Promosikan penyebaran penahapan yang divalidasi ke produksi dengan
--src staging --dst @main. - Gulung balik dengan menukar produksi kembali ke slot penahapan dengan
--src @main --dst staging. - Targetkan layanan tertentu yang didukung App Service dalam proyek multiservice
azddengan--service.
Pertukaran adalah jalur yang dimaksudkan untuk memperbarui produksi setelah slot dikonfigurasi. Gunakan azd deploy untuk memperbarui slot, lalu gunakan azd appservice swap untuk mempromosikan slot tersebut ke dalam produksi.
Alur kerja slot penyebaran yang direkomendasikan
- Tentukan satu atau beberapa slot penyebaran App Service di templat Bicep Anda.
- Provisikan sumber daya App Service dengan menggunakan
azd provisionatauazd up. - Biarkan penerapan pertama menetapkan garis dasar pada aplikasi utama dan setiap slot.
- Sebarkan pembaruan aplikasi nanti ke slot penahapan dengan mengatur
AZD_DEPLOY_<SERVICE_NAME>_SLOT_NAMEsaat Anda memiliki dua slot atau lebih, atau dengan memilih slot saat diminta. Untuk memaksa penyebaran langsung ke utama dari CI saat slot ada, aturAZD_DEPLOY_<SERVICE_NAME>_IGNORE_SLOTSketruesebagai gantinya. - Validasi penyebaran bertahap.
- Jalankan
azd appservice swap --src <slot> --dst @mainuntuk mempromosikan rilis. - Jika diperlukan, jalankan pertukaran terbalik untuk menggulung balik.