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ı sizin tanımladığınız sırayla sıralı olarak sağlar. 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ını içinde listelendikleri sırayla azure.yaml doğru işler.
azd down katmanları ters sırada işler (alttan üste). İlk olarak temel kaynakların, ardından bunlara bağlı olan katmanların gösterilmesi için katmanlarınızı tanımlayın. Bu sıra, ihtiyaç duyan kaynaklardan önce bağımlılıklar oluşturmanızı ve bu kaynaklardan sonra bağımlılıkları kaldırmanızı sağlar.
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. |
Ö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
Bağımsız değişken olmadan çalıştırarak, azd provision içinde tanımlandığı sırayla tüm katmanları sağlamak için azure.yaml.
azd provision
azd her katmanı birer birer işler ve ikinci katman başlamadan önce ilk katmanın tamamlanmasını sağlar. 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 azd mevcut olduğunda, bunları ters sırada işler, bu sayede bağımlı kaynaklar, üzerinde bağlı 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
Dikkat edilmesi gerekenler ve sınırlamalar
- Tüm katmanları sağlarken,
azdbunları tanımladığınız sırayla sıralı olarak işler. İlk olarak temel kaynakların sağlanması için katman siparişinizi planlayın. - Tüm katmanları yıktığınızda,
azdbunları ters sırada 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 olarak izlenmesine ve silinmesine izin vermek için Dağıtım yığınları komutunu
azd config set alpha.deployment.stacks onkullanarak dağıtım yığınlarını etkinleştirin, azd'in yalnızca kaynak grubu silmeye güvenmek yerine katman başına kaynakları izlemesine olanak tanır.
- 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. - 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,