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), dosyanızda azure.yaml birden çok sağlama katmanı tanımlamak için kullanabileceğiniz katmanlı sağlamayı destekler. Her katman kendi Kod Olarak Altyapı (IaC) şablonları kümesine işaret eder. CLI, katmanları birer birer sağlar ve aralarındaki bağımlılıklara göre sıralanır. Ayrıca tek tek katmanları bağımsız olarak sağlayabilir veya yok edebilirsiniz.
Bu özellik, bir katmandaki kaynakların başka bir katmandaki kaynaklara bağımlı olduğu karmaşık bağımlılık senaryolarını çözer. IaC'yi zorlayıcı kanca betikleriyle karıştırmak yerine, katmanlı sağlama her şeyi deklaratif şekilde tutar.
Uyarı
Katmanlı temin şu anda beta aşamasında bulunan bir özelliktir. Sürüm oluşturma stratejisi hakkında daha fazla bilgi edinin.
Katmanlı sağlama ne zaman kullanılır?
Tek azd provision bir dağıtım tüm altyapı gereksinimlerinizi tek adımda karşılayamazsa katmanlı sağlamayı kullanın. Aşağıdaki durumlarda katmanlı sağlamayı kullanmayı göz önünde bulundurun:
- Döngüsel bağımlılıklar: Bazı kaynakların, özel uç noktanın yapılandırılabilmesi için önce var olması gereken bir sanal ağ gibi, önce oluşturulması gereken diğer kaynaklara başvurması gerekir.
- Temel altyapı, uygulama altyapısından farklıdır: Paylaşılan ağ, güvenlik veya kimlik kaynaklarını uygulama başına kaynaklardan ayrı olarak yönetirsiniz.
- Bağımsız yaşam döngüsü yönetimi gereklidir: Farklı altyapı bileşenlerini farklı zamanlarda güncelleştirip yok edebilirsiniz. Örneğin, bir uygulama katmanı sık sık yeniden dağıtılırken ağ katmanı uzun ömürlü olabilir.
- Ayrı altyapı gruplarına sahip monorepo projeleri: Tek bir depo, her biri kendi altyapı şablonlarına sahip birden çok bağımsız hizmet (Olay Hub'ı, Kapsayıcı Uygulaması ve İşlev Uygulaması gibi) içerir.
azure.yaml'de katmanları yapılandırma
Dosyanızın infra bölümünün altında azure.yaml katmanlar tanımlayın. Her katman için name bir ve bu katman için IaC şablonlarını içeren dizine işaret eden bir path gerekir.
name: my-app
infra:
layers:
- name: networking
path: ./infra/networking
- name: application
path: ./infra/application
services:
api:
project: ./src/api
language: js
host: containerapp
Önemli
Katman işleme sırası:azd provision katmanları bağımlılıklarına göre işler. Bicep katmanları ve özel veya uzantı sağlayıcıları için, azd ortam değişkeni ve katman çıkış başvuruları için parametre dosyalarını (*.bicepparam ve *.parameters.json) tarayarak bağımlılıkları çıkarsar ve katmanlarını içinde azure.yamllistelenen sırayı kesinlikle takip etmek yerine uygun şekilde sıralar. Çıkarılan veya bildirilmiş bağımlılıkları olmayan katmanlar listelendikleri sırayla çalışır.
azd down karşılık gelen ters sırayı izler, böylece bağımlı katmanlar bağımlı oldukları katmanlardan önce kaldırılır.
azd'in çıkaramadığı sıralamayı bildirmek için dependsOn özelliğini kullanın.
Katman özellikleri
Her katman aşağıdaki özellikleri destekler:
| Mülkiyet | Gerekli | Description |
|---|---|---|
name |
Evet | Katman için benzersiz bir ad. Komutlarla belirli bir katmanı hedeflerken bu adı kullanın. |
path |
Evet | Bu katman için IaC şablonlarını içeren dizinin göreli yolu. |
module |
Hayı | Katmanın dizinindeki modülün adı. Varsayılan olarak main değerini alır. |
provider |
Hayı | Bu katman için IaC sağlayıcısı (bicep veya terraform). Belirtmezseniz kökten infra.provider devralır. |
dependsOn |
Hayı | Bu katmanın bağlı olduğu diğer katmanların adları. Sıralama önemliyse ancak azd parametre başvurularından bağımlılığı çıkaramıyorsa bu özelliği kullanın. |
Önemli
Tanımladığınızda infra.layers, kök düzeyinde infra bölümü üzerinde diğer özellikleri (path, module, deploymentStacks) bildiremezsiniz. Her katmandaki tüm altyapı yapılandırmasını belirtmeniz gerekir.
Dizin yapısı
Katmanlı sağlama kullanan tipik bir proje aşağıdaki dizin yapısına sahip olabilir:
my-app/
├── azure.yaml
├── infra/
│ ├── networking/
│ │ └── main.bicep
│ └── application/
│ └── main.bicep
└── src/
└── api/
└── ...
Her katman dizini, standart azd bir projenin infra dizininde olduğu gibi kendi eksiksiz IaC şablonları kümesini içerir.
Katmanları sağlama ve yönetme
Tüm katmanları aynı anda sağlayabilir veya belirli bir katmanı ada göre hedefleyebilirsiniz. Aşağıdaki bölümlerde katman durumunu sağlama, kaldırma ve yenilemeye yönelik yaygın komutlar açıklanmaktadır.
Tüm katmanları sağlama
Tüm katmanları oluşturmak için azd provision komutunu argüman olmadan çalıştırın:
azd provision
azd, her katmanı tek tek işler ve bir katmanın, ona bağımlı herhangi bir katman başlamadan önce tamamlanmasını sağlar. Bicep katmanları ile özel veya uzantı sağlayıcıları için azd, *.parameters.json ve *.bicepparam dosyalarındaki ortam değişkeni ve katman çıktısı başvurularından bağımlılıkları çıkarır; bu nedenle yürütme sırası, azure.yaml içinde listelenen sıradan farklı olabilir. Çıkarılan veya bildirilen bağımlılıkları olmayan katmanlar listelenen sırada çalışır. Bu süreç, bağımlı kaynakların, bunlara başvuran katmanlar dağıtılmadan önce mevcut olduğunu garanti eder.
Belirli bir katmanı sağlama
Yalnızca belirli bir katmanı sağlamak için, katman adını parametre olarak geçirin.
azd provision networking
Bu komut yalnızca katmanda networking tanımlanan kaynakları dağıtır. Belirli bir katmanı sağlamak aşağıdaki durumlarda kullanışlıdır:
- Geliştirme sırasında tek bir katmanda yineleme yapıyorsun.
- Başkalarını yeniden dağıtmadan bir katmanı güncelleştirmeniz gerekir.
- Mevcut altyapının üzerine yeni bir katman ayarlıyorsunuz.
Tüm katmanları yırtın
Kaynakları tüm katmanlardan kaldırmak için bağımsız değişken olmadan komutunu çalıştırın azd down . Birden çok katman mevcut olduğunda, azd bunları sağlama sırasının tersine işler, böylece bağımlı kaynaklar bağımlı oldukları temel kaynaklardan önce kaldırılır:
azd down
Belirli bir katmanı sökme
Belirli bir katmanı kaldırmak için katman adını parametre olarak geçirin:
azd down application
Bu komut yalnızca katman tarafından application dağıtılan kaynakları kaldırır ve diğer katmanları olduğu gibi bırakır.
Ortam durumunu yenileme
--layer bayrağını kullanarak azd env refresh ile ortam durumunu belirli bir katmandan yenileyebilirsiniz.
azd env refresh --layer networking
Bu komut, ortam değişkenlerini ve çıkışlarını belirtilen katmanın en son dağıtımına göre güncelleştirir.
Birden çok hizmet içeren bir monorepo örneği
Aşağıdaki örnekte Event Hub, birden çok kapsayıcı çalıştıran bir Container App ve Azure Function App içeren bir monorepo için katmanlı sağlama gösterilmektedir:
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}
karşılık gelen dizin yapısı:
logging-app/
├── azure.yaml
├── infra/
│ ├── eventhub/
│ │ └── main.bicep
│ ├── aca/
│ │ └── main.bicep
│ └── functionapp/
│ └── main.bicep
└── src/
└── function/
└── functionapp.csproj
Bu yapılandırmayla şunları yapabilirsiniz:
- Yalnızca Event Hub altyapısını sağlayın:
azd provision eventhub - Yalnızca Container App altyapısını sağlayın:
azd provision aca - Her şeyi sırayla sağlayın:
azd provision - Yalnızca İşlev Uygulaması katmanını yırtın:
azd down functionapp
Örnek: Temel ve uygulama katmanları
Ortak bir desen, paylaşılan veya temel altyapıyı uygulama başına altyapıdan ayırır:
name: my-app
infra:
layers:
- name: base
path: ./infra/base
- name: app
path: ./infra/app
services:
web:
project: ./src/web
language: js
host: containerapp
Katman base ağ, kimlik ve izleme gibi paylaşılan kaynaklar oluşturur. Katman, app temel kaynaklara başvuran uygulamaya özgü kaynakları (Kapsayıcı Uygulaması ortamı ve kapsayıcı uygulamaları gibi) oluşturur.
Geliştirme sırasında temel katmanı bir kez sağlayıp uygulama katmanında yineleyebilirsiniz:
azd provision base
azd provision app
azd provision app # re-provision only the app layer after changes
Örnek: Karma IaC sağlayıcıları
Her katman farklı bir IaC sağlayıcısı kullanabilir. Örneğin, ağ için Bicep ve uygulama katmanı için Terraform kullanabilirsiniz:
name: my-app
infra:
layers:
- name: networking
path: ./infra/networking
provider: bicep
- name: application
path: ./infra/application
provider: terraform
Bicep dışındaki yerleşik sağlayıcılar (Terraform, Pulumi, ARM ve test sağlayıcısı), bağımlılık çıkarımı açısından opaktır; çünkü azd, diğer katmanlara yapılan başvuruları bulmak için bunların girdilerini çözümleyemez. Bu katmanlar arasında veya bu katmanlar ile diğer katmanlar arasında her sıralamada açık dependsOn bir özellik kullanın:
name: my-app
infra:
layers:
- name: networking
path: ./infra/networking
provider: bicep
- name: application
path: ./infra/application
provider: terraform
dependsOn:
- networking
Dikkat edilmesi gerekenler ve sınırlamalar
- Tüm katmanları sağladığınızda,
azdbağımlılıklarına göre bunları birer birer işler. Bicep katmanları ile özel veya uzantı sağlayıcıları içinazd,*.parameters.jsonve*.bicepparamdosyalarındaki ortam değişkeni ve katman çıktısı başvurularından bağımlılıkları çıkarır. Çıkarılma veya bildirilmiş bağımlılıkları olmayan katmanlar, tanımladığınız sırayla çalışır. - Yerleşik Bicep dışındaki sağlayıcılar (Terraform, Pulumi, ARM ve test sağlayıcısı) bağımlılık çıkarımı açısından opaktır. Bu katmanları içeren sıralama önemli olduğunda açık bir
dependsOnözelliği kullanın. - Ayrıca sıralama önemli olduğunda da açık
dependsOngereklidir, ancakazdparametre başvurularından bağımlılığı çıkaramaz. Örneğin, bir katmanındependsOnkancası başka bir katmanın kullandığı bir değer ürettiğindepostprovisionkullanın; çünkü kancanın ürettiği değerler*.parameters.jsonveya*.bicepparamdosyalarında çıktı başvuruları olarak görünmez. - Tüm katmanları yok ettiğinizde,
azdbunları sağlama sırasının tersinde işler.- Birden çok katman kaynakları aynı Azure kaynak grubuna dağıtırsa ve varsayılan kaynak grubu tabanlı silme davranışını kullanırsanız, azd down çalıştırılırken paylaşılan kaynaklar silinebilir.
- Katmanlı altyapının bağımsız izlenmesine ve silinmesine izin vermek için komutunu
azd config set alpha.deployment.stacks onçalıştırarak dağıtım yığınlarını etkinleştirin.
- Birden çok katman aynı anda sağlanırken
--previewbayrağını kullanamazsınız. Önizleme modunu kullanmak için bir<layer>ad belirtin. - Katmanlar IaC açısından bağımsız olarak çalışır. Bir katmanın çıktısına başka bir katmanda başvurmak için, her katmanın dağıtımından sonra ayarlanan
azdortam değişkenlerini kullanın. Bu ortam değişkenlerine bir*.parameters.jsonveya*.bicepparamdosyasında başvurmak,azd’nin katmanlar arasındaki sıralamayı çıkarsamasına da olanak tanır. - Tüm standart
azdsağlama özellikleri (dağıtım durumu önbelleğe alma, kancalar, parametreler, Bicep veya Terraform) her bir katmanda çalışır.- Komut düzeyi kancaları (örneğin,
preprovision,postprovision) katman başına bir kez çağrılır. Birden çok katman tanımlandığında, katmanlar işlenirken her katman için kancalar çalıştırılır.
- Komut düzeyi kancaları (örneğin,