Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure Geliştirici CLI'sı (azd), App Service'te barındırılan uygulamalar için Azure App Service dağıtım yuvalarını destekler. Bir sürümü yükseltmeye hazır olduğunuzda altyapınızda yuvalar tanımlayabilir, kodu belirli bir yuvaya dağıtabilir ve yuvaları değiştirebilirsiniz.
Özel dağıtım betikleri eklemeden, hazırlık, mavi-yeşil dağıtımlar, duman testleri ve geri alma işlemleri için bu yaklaşımı kullanın.
Önkoşullar
- Azure App Service'e
azdhizmet dağıtan bir proje. - Bicep'teki App Service kaynaklarınızı tanımlayan kod olarak altyapı.
- Standart (
S1) katman veya üzeri bir App Service planı. Ücretsiz, Paylaşılan ve Temel katmanlar dağıtım yuvalarını desteklemez.
Bicep'te dağıtım yuvası tanımlama
Üretim sitenizi her zamanki gibi tanımlayın, ardından hedeflemek istediğiniz Microsoft.Web/sites/slots her yuva için bir azd kaynak ekleyin.
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: {}
}
Azure Doğrulanmış Modülleri (AVM) kullanıyorsanız, aynı dağıtımda web uygulaması ve dağıtım yuvası modüllerini tanımlayın ve uygulama adını yuva modülüne geçirin.
azd ile slot'a dağıtma
azd up veya azd provision ve azd deploy her zamanki gibi çalıştırın.
azd up
İlk dağıtımda, azd üretim sitesine ve altyapınızda tanımlanan slotlara dağıtılır. Bu ilk dağıtım, ana uygulama ve her slota için aynı temeli oluşturur.
İlk dağıtımdan sonra yuvalar azd deploy mevcut olduğunda dağıtım hedefini seçme şeklini değiştirir.
azd slotlar mevcut olduğunda doğrudan üretim uygulamasına dağıtıma devam etmez. Bunun yerine bir yuvaya dağıtıp yayını doğrular ve ardından üretim ortamına değiştirirsiniz.
azd dağıtım hedefini nasıl seçer?
Dağıtım yuvaları olan bir App Service için çalıştırıldığında azd deploy , ana uygulamadaki dağıtım geçmişini denetleyerek ve ardından kullanılabilir yuvaları değerlendirerek hedefi seçer.
Davranış aşağıdaki gibi çalışır:
- Önceki dağıtımlar yoksa,
azdana uygulamaya ve tüm alanlara dağıtım yapar. - Önceki dağıtımlar varsa ve slot yoksa,
azdyalnızca ana uygulamaya dağıtılır. - Önceki dağıtımlar varsa ve tam olarak bir yuva varsa,
azdyalnızca bu yuvaya dağıtır. - Önceki dağıtımlar varsa ve iki veya daha fazla yuva varsa,
azdbir ortam değişkeni tarafından belirtilen yuvayı kullanır veya birini seçmenizi ister.
Important
İlk dağıtımdan sonra, yuvalar mevcut olduğunda azd, doğrudan ana App Service uygulamasına dağıtılmaz. Bu davranış kasıtlıdır ve yanlışlıkla doğrudan üretime dağıtımların önlenmesine yardımcı olur. Üretimi güncellemek için bir slot'a dağıtın ve ardından slot'u üretime aktarın (@main ).
Ortam değişkeni ile bir yuva seçin
Hizmetinizde ilk dağıtımdan sonra iki veya daha fazla yuva olduğunda, dağıtmak istediğiniz hizmet için bir çevresel değişken ayarlayarak etkileşimli komut istemini atlayabilirsiniz.
Aşağıdaki biçimi kullanın:
AZD_DEPLOY_<SERVICE_NAME>_SLOT_NAME
büyük harf kullanarak ve kısa çizgileri alt çizgilerle değiştirerek içindeki azure.yaml hizmet adından değişken adını oluşturun.
Örneğin, hizmetinizin adı my-apiise kullanın AZD_DEPLOY_MY_API_SLOT_NAME.
azd env set AZD_DEPLOY_MY_API_SLOT_NAME staging
azd deploy my-api
Bu değeri, azd kullanarak ortamınızda azd env set depolayabilir veya azd deploy çalıştırmadan önce doğrudan CI sisteminizde tanımlayabilirsiniz.
Hizmetinizde tam olarak bir slot varsa, azd yalnızca tek bir olası dağıtım hedefi olduğundan ortam değişkenini tamamen yoksayar.
Hizmetinizde iki veya daha fazla yuva varsa ve ortam değişkeni ayarlanmadıysa, azd bir yuva seçmenizi ister.
Yuva algılamasını atla ve ana uygulamaya dağıt
Bazı senaryolarda yuvalar mevcut olsa bile doğrudan ana App Service uygulamasına dağıtmanız gerekir azd . Örneğin:
- CI işlem hattınızın ana uygulamayı yenilemesi ve mevcut yuvalara dokunmaması gerekir.
- Bozuk bir yuva durumundan kurtulmak ve üretim sitesini doğrudan yeniden dağıtmak istiyorsunuz.
- Yeni yuvaları yapılandırmadan önce ana uygulamayı yeniden temel alıyorsunuz.
Yuva algılamasını atlamak için hizmet için aşağıdaki ortam değişkenini ayarlayın:
AZD_DEPLOY_<SERVICE_NAME>_IGNORE_SLOTS
büyük harf kullanarak ve kısa çizgileri alt çizgilerle değiştirerek içindeki azure.yaml hizmet adından değişken adını oluşturun. Yuva algılamayı atlamak ve ana uygulamaya dağıtmak için değeri true olarak ayarlayın.
Örneğin, hizmetinizin adı my-apiise kullanın AZD_DEPLOY_MY_API_IGNORE_SLOTS.
azd env set AZD_DEPLOY_MY_API_IGNORE_SLOTS true
azd deploy my-api
AZD_DEPLOY_<SERVICE_NAME>_IGNORE_SLOTS, true olarak ayarlandığında, azd ana uygulamaya dağıtılır ve aynı hizmet için herhangi bir AZD_DEPLOY_<SERVICE_NAME>_SLOT_NAME değerini yok sayar. Değişkenin ayarını kaldırın veya varsayılan, yuva farkındalığı olan davranışa dönmek için false olarak ayarlayın.
CI ve etkileşimsiz davranış
CI'den çalıştırdığınızda azd deploy --no-prompt veya dağıtım yaptığınızda, yuva seçimi mevcut yuva sayısına bağlı olarak farklılık gösterir:
| Slotlar | Ortam değişkeni davranışı | Result |
|---|---|---|
0 |
Uygulanamaz. |
azd ana uygulamaya dağıtım yapar. |
1 |
AZD_DEPLOY_<SERVICE_NAME>_IGNORE_SLOTS, true olmadıkça yok sayılır. |
azd yuvalar yoksayıldığında tek yuvaya veya ana uygulamaya dağıtılır. |
2+ |
AZD_DEPLOY_<SERVICE_NAME>_SLOT_NAME istem gösterilmesini önlemek için gereklidir; ancak AZD_DEPLOY_<SERVICE_NAME>_IGNORE_SLOTS, true ise gerekmez. |
azd belirtilen slota dağıtır, slotlar yok sayıldığında ana uygulamaya dağıtır veya hiçbir hedef seçilemiyorsa başarısız olur. |
İki veya daha fazla slot'a sahip bir App Service için dağıtımları otomatikleştiriyorsanız, AZD_DEPLOY_<SERVICE_NAME>_SLOT_NAME işlem hattı ortamında ayarlayın ve çalıştırmadan önce azd deploy belirleyin. Slotlar varsa, CI'den doğrudan ana dala dağıtımı zorlamak için bunun yerine AZD_DEPLOY_<SERVICE_NAME>_IGNORE_SLOTS öğesini true olarak ayarlayın.
Azure App Service dağıtım yuvalarını değiştirme
Doğrulamadan sonra yuvaları değiştirmek için uzantıyı azure.appservice kullanın. Uzantı henüz yüklü değilse, azd komutu ilk kez çalıştırdığınızda bu uzantıyı yüklemenizi ister.
Etkileşimli deneyimi çalıştırın:
azd appservice swap
Sadece bir tane üretim dışı yuva varsa, azd istemleri atlar ve doğrudan üretimle yer değiştirir.
Otomasyon için kaynak ve hedef yuvaları açıkça belirtin. Üretim yuvasına referans vermek için @main kullanın.
azd appservice swap --src staging --dst @main
azd appservice swap --src @main --dst staging
azd appservice swap --service myapi --src staging --dst @main
Yaygın yayın akışlarını desteklemek için şu desenleri kullanın:
- İle
--src staging --dst @maindoğrulanmış bir hazırlama dağıtımını üretime yükseltin. - Üretimi
--src @main --dst stagingile hazırlık yuvasına geri alarak değiştirin. - Çok hizmetli bir
azdprojede Uygulama Hizmeti destekli belirli bir hizmeti--serviceile hedefleyin.
Değiştirme, yuvalar yapılandırıldıktan sonra üretimi güncelleştirmek için hedeflenen yoldur. Bir yuvayı güncelleştirmek için kullanın azd deploy , ardından bu yuvayı üretime yükseltmek için kullanın azd appservice swap .
Önerilen dağıtım yuvası iş akışı
- Bicep şablonlarınızda bir veya daha fazla App Service dağıtım yuvası tanımlayın.
- "
azd provisionveyaazd upkullanarak App Service kaynaklarını hazırlayın." - İlk dağıtımı, ana uygulamada ve her yuvada bir temel oluşturacak şekilde gerçekleştirin.
- İki veya daha fazla yuvalarınız varsa, daha sonraki uygulama güncellemelerini hazırlık yuvasına
AZD_DEPLOY_<SERVICE_NAME>_SLOT_NAMEayarlayarak veya istendiğinde yuvalardan birini seçerek dağıtın. Yuvalar mevcut olduğunda, CI'den doğrudan ana ortama dağıtımı zorlamak için bunun yerineAZD_DEPLOY_<SERVICE_NAME>_IGNORE_SLOTSdeğerinitrueolarak ayarlayın. - Aşamalı dağıtımı doğrulayın.
- Yayını yükseltmek için
azd appservice swap --src <slot> --dst @mainkomutunu çalıştırın. - Gerekirse geri almak için ters swap işlemini çalıştırın.