Microsoft AZ-400: Kod Olarak Altyapı ve Yapılandırma Yönetimi — Çalışma kılavuzu
Şunun bir parçası: Microsoft DevOps Engineer Expert AZ-400 — Çalışma kılavuzu. Doğrulanmış cevaplarla şurada pratik yapın: Microsoft sınav merkezi, veya şurada süreli deneme sınavları çözün: ExamRoll.io.
Genel Bakış
Azure’da Kod Olarak Altyapı (IaC) ve Yapılandırma Yönetimi, altyapı ve uygulama ayarlarını tekrarlanabilir ve güvenli bir şekilde tanımlamanıza, sağlamanıza ve zorunlu kılmanıza olanak tanır. Azure, yerel olarak ARM JSON ve Bicep’i destekler ve Terraform ile Ansible ile iyi bir şekilde entegre olur. Yapılandırma durumu, PowerShell Desired State Configuration (DSC), Azure Automation DSC, Chef ve Puppet ile bildirilebilir. Uygulama özelliklerinin dağıtımı ve anahtar yönetimi, Azure App Configuration ve Key Vault ile merkezileştirilir. Packer ile oluşturulan değişmez (immutable) imajlar, yapılandırma sapmasını (drift) azaltır. Yönetişim, Azure Policy ve Kubernetes için OPA/Gatekeeper ile kod olarak ilke (policy-as-code) şeklinde uygulanır.
Azure’a Özgü IaC: ARM Şablonları ve Bicep
ARM şablonları, Azure Resource Manager’ın kaynakları oluşturmak ve güncellemek için kullandığı bildirimsel (declarative) JSON belgeleridir. En üst düzey yapı $schema, contentVersion, parameters, variables, resources ve outputs öğelerini içerir. Parametreler (parameters) ortama özgü girdilere izin verir; değişkenler (variables) hesaplanmış değerler türetmeye yardımcı olur; kaynaklar (resources) istenen durumu bildirir; çıktılar (outputs) ise kaynak kimlikleri gibi sonuçları yayımlar. Şablonlar, isimler oluşturabilmeniz ve özellikleri alabilmeniz için şablon ifadelerini ve çalışma zamanı fonksiyonlarını (ör. resourceId, reference, concat, uniqueString) destekler.
Büyük dağıtımları bakımı yapılabilir birimlere bölmek için iç içe (nested) veya bağlantılı (linked) şablonlar kullanabilirsiniz. İç içe bir şablon, JSON’u bir Microsoft.Resources/deployments kaynağının template özelliğine satır içi olarak ekler. Bağlantılı bir şablon, genellikle bütünlük için zaman kapsamlı bir SAS ile Azure Storage’da saklanan uzak bir şablona templateLink.uri aracılığıyla referans verir. Her şeyin tek bir yapıt (artifact) içinde yaşayabildiği ve parçalar arasında işlemsel (transactional) bir dağıtım istediğinizde iç içe şablonları kullanın. Çok büyük topolojiler için veya şablonları depolar ya da ekipler arasında yeniden kullanırken bağlantılı şablonları tercih edin. Dağıtımlarınızı, deployments kaynağında dağıtım kapsamını ayarlayarak gerektiği gibi kaynak grubu, abonelik, yönetim grubu veya kiracı olarak kapsayabilirsiniz.
ARM iki dağıtım modunu destekler. Artımlı (Incremental) (varsayılan) mod, şablonda belirtilmeyen hiçbir şeyi silmeden, şablonda mevcut olan kaynakları oluşturur veya günceller. Tam (Complete) mod ise, şablonda belirtilmeyen hedef kapsamdaki kaynakları siler; bu, minimum sapmayı garanti etmek için kullanışlıdır ancak şablon o kapsam için yetkili değilse daha risklidir. Doğrulama (Validate) ve What-If (Durum Değerlendirme) operasyonları, yürütmeden önce değişiklikleri önizleyerek riski azaltmaya yardımcı olur.
Bicep, ARM JSON’a derlenen ve birinci sınıf yazım ergonomisi sunan alana özgü bir dildir. Kaynak bildirimleri sembolik adlar kullanır, türleri zorunlu kılar ve önceden var olan kaynaklara yeniden dağıtım yapmadan referans vermek için existing anahtar kelimesini destekler. Parametreler, değişkenler, çıktılar ve kaynak bildirimleri kısa ve özdür; ebeveyn-çocuk ilişkileri ve kapsamlar ise açıktır. Modüller, kompozisyon ve yeniden kullanımı mümkün kılar; her modül, module anahtar kelimesiyle referans verilen bir Bicep dosyasıdır ve şablon belirtimi (template spec) veya OCI yapıt (artifact) kayıt defterlerine yayımlanabilir ve buralardan kullanılabilir. Koşullar, kaynaklar veya modüller üzerinde if ile satır içi olarak ifade edilir ve döngüler, net bağımlılık yönetimiyle birden çok örnek bildirmek için for ifadelerini kullanır. ARM JSON’dan geçiş basittir: az bicep decompile (veya bicep decompile) komutu JSON’u Bicep’e dönüştürür; ardından modüllere ayırarak yeniden düzenler ve sembolik adları benimserisiniz. Bicep, ARM ile kayıpsızdır ve tüm platform yüzeyini destekler; bicep build komutu, dağıtım için standart ARM JSON’u üretir.
Terraform ile Azure’da Platformlar Arası IaC
Terraform, çoklu bulut (multi-cloud) veya sağlayıcıdan bağımsız (provider-agnostic) iş akışları gerektiğinde Azure’un yerel IaC çözümlerini tamamlar. azurerm sağlayıcısı, Azure Resource Manager kaynaklarını yönetir ve sürümü sabitlenmelidir (version-pinned); sağlayıcı özelliklerini etkinleştirmek için boş olsa bile features {} bloğunu ekleyin. Diğer yaygın sağlayıcılar arasında AAD nesneleri için azuread ve yardımcı değerler için random bulunur. Bir hizmet sorumlusu (service principal), barındırılan aracılardaki (hosted agents) Yönetilen Kimlik (Managed Identity) veya Azure CLI aracılığıyla kimlik doğrulaması yapın. Her ortam için net bir sağlayıcı yapılandırma stratejisi benimseyin ve yeniden kullanılabilir modülleri girdi değişkenleri (input variables) ve çıktılar (outputs) ile merkezileştirin.
Durum (state) yönetimi kritiktir. Uzak durumu (remote state) Azure Storage’da saklamak için azurerm arka ucunu (backend) kullanın: resource_group_name, storage_account_name, container_name ve key’i yapılandırın; yönetilen kimlik veya SAS ile kimlik doğrulaması yapın; ve blob kapsayıcısında geçici silme (soft delete) ile sürüm oluşturmayı etkinleştirin. Arka uç, durumu kilitlemek ve eş zamanlı değişiklikleri önlemek için blob kiralamalarını (leases) kullanır. Depolama hesabına erişim RBAC ile denetlenmeli ve isteğe bağlı olarak Özel Uç Noktalar (Private Endpoints) ile kısıtlanmalıdır. Durum dosyalarını ortamlara göre yalıtılmış tutun ve tasarım gereği durumu (state) içinde asla gizli bilgi (secret) saklamayın—gerektiğinde gizli bilgileri almak için Key Vault ve veri kaynaklarını (data sources) kullanın.
Çalışma Alanları (Workspaces), dev, test ve prod gibi ortam dallandırmaları için aynı yapılandırma içinde durumun (state) mantıksal olarak yalıtılmasını sağlar. terraform workspace select komutunu kullanın ve çakışmaları önlemek için arka uç anahtarının (backend key) çalışma alanını kodladığından emin olun (ör. myapp-${terraform.workspace}.tfstate). Çalışma alanları, küçük farklılıklarla ortam denkliği sağlamak için mükemmeldir; topolojiler önemli ölçüde farklılaştığında, sapmayı (drift) ve koşullu karmaşıklığı önlemek için ayrı yapılandırmalar veya modüller kullanın. Aşamalar arasında init/plan/apply adımlarını standartlaştırmak ve apply işlemlerini onaylara ve ilke denetimlerine bağlamak için hizmet bağlantıları (service connections) ve Terraform CLI görevlerini kullanarak Azure Pipelines ile entegre edin.
Uygulama Yapılandırması, Değişmez İmajlar ve Kod Olarak İlke
Azure App Configuration, uygulama ayarlarını ve özellik bayraklarını merkezileştirir. Özellik bayrakları aşamalı dağıtımı (progressive rollout) mümkün kılar: bayrakları tanımlar ve gerekirse Feature Manager kütüphaneleri aracılığıyla yüzde tabanlı dağıtım veya kullanıcı hedefleme gibi filtreler eklersiniz. Etiketler, değerleri ortama veya dağıtım halkasına (ring) göre ayırmanıza olanak tanır. Yapılandırma anlık görüntüleri, bir dizi anahtar ve etiket için zamana bağlı, değişmez bir görünüm yakalar ve eş zamanlı anahtar değişikliklerinden kaynaklanan yarış koşulları (race conditions) olmadan birçok hizmette tutarlı, tekrarlanabilir dağıtımlar sağlar. Key Vault referansları, gizli anahtarları Key Vault’ta tutarken yalnızca referanslarını App Configuration’da saklamanıza olanak tanır; uygulamanın yönetilen kimliğinin (managed identity) gizli anahtar üzerinde get iznine sahip olması gerekir ve istemci kütüphaneleri, isteğe bağlı dinamik yenileme ile gizli anahtarları çözer ve önbelleğe alır. Erişimi korumak için her iki hizmette de RBAC ve ağ yalıtımı kullanın.
Değişmez altyapı (immutable infrastructure), mevcut ana bilgisayarları değiştirmek yerine bilinen bir imajdan yeniden oluşturarak yapılandırma sapmasını (configuration drift) ortadan kaldırır. Packer’ın azure-arm (yeni adıyla azure) oluşturucusu, temel bir işletim sisteminden imajlar oluşturur, sağlayıcıları (shell, PowerShell, Ansible) çalıştırır ve bunları çoğaltılmış bölgeler ve anlamsal sürümlemeye sahip bir Shared Image Gallery’ye yayınlar. Bir altın imaj (golden-image) işlem hattı tipik olarak Packer şablonlarını lint denetiminden geçirir, imajı oluşturur, güvenlik açığı ve uyumluluk taramaları (ör. InSpec) yürütür, entegrasyon testlerini yapar, galeriye yükseltir ve ardından VM Scale Sets veya ana bilgisayar havuzlarını günceller. VM Scale Sets ile kademeli veya sağlık tabanlı yükseltmeler ve otomatik işletim sistemi imajı yükseltmeleri sayesinde, önceki bir imaj sürümünü seçerek güvenli, tutarlı dağıtımlar ve kolay geri alma elde edersiniz.
Kod olarak ilke (Policy as code), koruma mekanizmaları (guardrails) uygular. Azure Policy tanımları, kaynak özelliklerini ve otomatik olarak düzeltmek için deny, audit, append, modify veya deployIfNotExists gibi etkileri değerlendiren bir policyRule içeren JSON nesneleridir. Yeniden kullanım için tanımları parametrelendirin; tutarlı atamalar ve merkezi uyumluluk takibi için bunları girişimler (ilke kümesi tanımları) ile gruplayın. İlkeleri yönetim grubu, abonelik veya kaynak grubu kapsamında atayın; mevcut kaynakları uyumlu hale getirmek için modify ve deployIfNotExists ilkeleri için düzeltme görevlerini etkinleştirin. Ortamlar arasında tutarlı bir şekilde yükseltme yapmak için ilke yapıtlarını kaynak kontrolünde saklayın, çekme istekleri (pull request) aracılığıyla gözden geçirin ve Bicep, ARM veya Terraform aracılığıyla dağıtın.
Kubernetes için OPA/Gatekeeper, kabul zamanı kısıtlamalarını uygular. ConstraintTemplates, Rego ilkelerini ve bunların şemalarını tanımlar; Constraints, bu ilkeleri bir küme için somutlaştırır. Yaygın denetimler arasında imajları güvenilir kayıtlara kısıtlamak, etiket/ek açıklamaları zorunlu kılmak veya ayrıcalıklı pod’ları önlemek yer alır. Gatekeeper, GitOps araçlarıyla (Flux/Argo CD) ve conftest aracılığıyla CI testleriyle entegre olur. Azure Policy for Kubernetes, Gatekeeper üzerine kuruludur ve AKS kümeleri genelinde Azure’a özgü atama ve uyumluluk görünümleri sunarak bulut ve küme yönetimini tek bir duruş panosunda birleştirir.
Pratik Problem Senaryosu
Spotify, Azure altyapısını standartlaştırmalı, yapılandırma sapmasını azaltmalı ve Windows ve Linux, AKS ve VM tabanlı iş yüklerini kapsayan mikroservislerde güvenli özellik dağıtımlarını hızlandırmalıdır.
- Bulut kaynaklarını etki alanına göre (ağ, veri, işlem) Bicep modülleriyle modelleyin ve bunları yönetim grupları kapsamında abonelikler aracılığıyla dağıtın. Bu, tür denetimli, bakımı kolay bildirimler, net kapsam belirleme ve ARM JSON’un ayrıntı kalabalığı olmadan yeniden kullanım sağlar.
- Birden çok ekip tarafından tüketilen paylaşılan platform hizmetleri için az sayıda bağlantılı ARM şablon belirtimi (template specs) kullanın. Şablon belirtimleri olarak barındırılan bağlantılı şablonlar, sürümlenmiş, değişmez yapıtlar sağlar ve platform ilerleme hızını uygulama ekiplerinden ayırır.
- Bulutlar arası uç (edge) ve CDN bağımlılıkları için Terraform’u seçin; uzak durumu çalışma alanına (dev/test/prod) göre Azure Storage’da depolayan azurerm arka ucunu ve kilitleme için blob kiralamalarını kullanın. Bu, durumu güvenli bir şekilde yalıtırken tek bir işlem hattı modelini korur ve tutarlı yükseltmeyi mümkün kılar.
- Uygulama yapılandırmasını ve özellik bayraklarını Azure App Configuration’da merkezileştirin. Yüzde filtreli özellik bayrakları ve etiketler, halka tabanlı dağıtımları (ring-based rollouts) mümkün kılar; yapılandırma anlık görüntüleri, her dağıtım aşamasının değişmez, denetlenmiş bir anahtar kümesi kullanmasını sağlar.
- Gizli anahtarları Azure Key Vault’ta saklayın ve bunlara App Configuration’dan referans verin. Çalışma zamanında yönetilen kimlik ile referansları çözümlemek, yeniden dağıtım yapmadan anahtar rotasyonunu mümkün kılar ve gizli anahtarları uygulama yapılandırmasından ve işlem hatlarından kaldırır.
- Shared Image Gallery’de yayınlanan altın imajlar oluşturmak için Packer kullanarak VM iş yükleri için değişmez imajları benimseyin. Bir işlem hattı, sıkılaştırma betikleri ve InSpec taramaları çalıştırır, imajları etiketler ve yalnızca başarılı olan sürümleri yükseltir. VM Scale Sets, sapmayı ortadan kaldırarak mavi/yeşil ve kademeli yükseltmeler için galeri imajlarını kullanır.
- Özel alt ağlarda genel IP’ye maruz kalmayı reddeden, tanılama ayarlarının Log Analytics’e gönderilmesini zorunlu kılan ve yedekleme ilkelerini otomatik olarak dağıtan Azure Policy girişimleriyle koruma mekanizmaları uygulayın. Geniş kapsam için yönetim grubu düzeyinde atayın ve mevcut kaynakların duruşunu hızla yakınsamak için düzeltme görevleri oluşturun.
- Uyumsuz imajları ve ayrıcalıklı pod’ları engelleyen kısıtlamalar uygulayarak OPA/Gatekeeper ile AKS’i koruyun. İlkeler Git’te saklanır ve sürümlenir, CI’da conftest ile doğrulanır ve küme durumunun her zaman ilkeyle eşleşmesini sağlamak için GitOps aracılığıyla uygulanır.
- Windows sunucu yapılandırmasını Azure Automation DSC ile yönetin. Düğümler Register-AzAutomationDscNode ile kaydolur ve sapmayı tespit etmek ve düzeltmek için ConfigurationMode=ApplyAndAutoCorrect kullanır; derleme işleri her rol için MOF’lar yayar ve uyumluluk panoları araştırma için sapmayı yüzeye çıkarır.
- azure_rm dinamik envanterini ve azure.azcollection modüllerini kullanarak Linux yapılandırmasını ve düzenlemesini Ansible ile yönetin. Azure Pipelines, yönetilen kimlik ile kimlik doğrulaması yapar, playbook’ları bir kerelik (idempotent) olarak çalıştırır ve hizmetler arasındaki güncellemeleri koordine ederek Windows’taki DSC’yi tamamlar.
- Hem imajlar hem de çalışan ana bilgisayarlar üzerinde platformlar arası kod olarak uyumluluk için Chef InSpec profillerinden yararlanın ve raporlama için Chef Automate’i besleyin. Bu, denetlenebilir, test edilebilir kontrolleri işlem hattına ve üretime taşıyarak yasal gerekliliklerin sürekli olarak doğrulandığından emin olur.
Bu kombinasyon, tür denetimli, modüler IaC (Bicep/Terraform), değişmez ana bilgisayarlar (Packer), merkezi uygulama yapılandırması (App Configuration/Key Vault), sürekli yapılandırma zorlaması (Azure Automation DSC, Ansible) ve güçlü yönetişim (Azure Policy, Gatekeeper) sağlar. Sapmayı azaltır, kurtarma ve dağıtım sürelerini kısaltır ve uyumluluğu kanıtlanabilir hale getirir.
← Azure Pipelines ile CI · Tüm alanlar · Konteynerleştirme ve Kubernetes →
Bu soruları çözün → · ExamRoll.io’da süreli pratik →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
Sınavınızı geçin →