Microsoft AZ-400: Azure Pipelines ile CI/CD İşlem Hatları — Ç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 Pipelines, kurumsal denetimleri korurken derleme, test ve yayınlama süreçlerini birleştiren çok aşamalı YAML pipeline’ları ile kod olarak uçtan uca CI/CD sunar. Ölçeklenebilir, güvenli ve tekrarlanabilir teslimat sistemleri oluşturmak için YAML yazma, tetikleyiciler, agent’lar, değişkenler, şablonlar, dağıtım işleri, artifact’ler, önbelleğe alma ve hizmet bağlantıları konularında uzmanlaşmak esastır.
YAML ve Şablonlarla Yazma
Bir YAML pipeline’ı; aşamalar (stages), işler (jobs) ve adımlardan (steps) oluşur. Aşamalar; Derleme (Build), Test, Yayınlama (Release) gibi yaşam döngüsü sınırlarını modeller; işler agent’lar üzerinde yürütülür ve paralel olarak çalışabilir; adımlar ise bir iş içinde yürütülen görevler veya betiklerdir. dependsOn aracılığıyla bağımlılıklar açıkça belirtilir, bu da hassas düzenlemeye (orchestration) ve koşullu yürütmeye olanak tanır. Çok aşamalı YAML, CI ve CD’yi birleştirir, fan-in/fan-out desenlerini destekler ve onayları bağımsız bir yayın yapısı yerine ortamlara bağlar.
Şablonlar, farklı ayrıntı düzeylerinde birleştirme ve yeniden kullanıma olanak tanır:
- Adım şablonları (Step templates): Depolar arasında yeniden kullanım için bir dizi görevi (ör. araç kurulumu, geri yükleme, derleme, test) kapsüller.
- İş şablonları (Job templates): Adımları belirli bir agent spesifikasyonu ve stratejisiyle (ör. bir test matrisi işi) bir araya getirir.
- Aşama şablonları (Stage templates): Tutarlı yükseltme (promotion) akışları için onaylar, koşullar ve ortam hedefleme dahil olmak üzere tüm aşamaları paketler.
- Genişletme şablonları (Extends templates): Pipeline kalıtımını zorunlu kılar. Üst düzey bir
extends, gerekli aşamaları/işleri/adımları ve yönetişimi belirleyen merkezi bir şablona referans verir. Bu, her ekibin güvenlik taramalarını, uyumluluk kontrollerini ve adlandırma kurallarını devralmasını sağlayarak kuruluş çapındaki politikalar için güçlü bir yöntemdir.
Şablon değerlendirmesi, çalışma zamanı yürütmesinden önce derleme zamanında (compile-time) gerçekleşir. Pipeline yapısını derleme zamanında dallandırmak için (örneğin, belirli işleri yalnızca main için dahil etmek) şablon ifadeleri için ${{ }} kullanın. Makro sözdizimi $(var) ve çalışma zamanı ifadeleri $[ ] çalışma zamanında (runtime) çözümlenir, bu da gizli anahtarların (secrets) ve değişken gruplarının ne zaman kullanılabilir olduğunu etkiler. Paylaşılan şablonları merkezi bir depoda saklayın ve resources repositories aracılığıyla içe aktarın; deterministik derlemeler için bir dala (branch) veya etikete (tag) sabitleyin.
Tetikleyiciler, Agent’lar, Değişkenler ve İfadeler
Tetikleyiciler (Triggers), otomasyon giriş noktalarını yönetir:
- CI tetikleyicileri, izlenen dallara kod gönderildiğinde (push) pipeline çalışmalarını başlatır. Dahil etme (include) ve hariç tutma (exclude) yol filtreleri gereksiz çalışmaları azaltır.
Batchözelliği, birden fazla push işlemini birleştirmeye olanak tanır. - PR tetikleyicileri, pull request’leri doğrular. Hedef dalları ve yol filtrelerini yapılandırın ve geçersiz kılınan çalışmaların otomatik olarak iptal edilmesini etkinleştirin.
- Zamanlanmış tetikleyiciler (Scheduled triggers), saat dilimi kontrolü ile gecelik derlemeleri veya periyodik doğrulamaları desteklemek için cron ifadelerine göre çalışır.
- Pipeline tetikleyicileri, bir üst pipeline yeni bir çalışma veya artifact yayınladığında tetiklenir. Pipeline kaynaklarını bildirin ve depolar veya projeler arasında pipeline’ları zincirlemek için dal filtreleriyle
trigger: trueekleyin.
Agent’lar ve agent havuzları (agent pools), işlerin nerede çalışacağını belirler:
- Microsoft tarafından barındırılan agent’lar (Microsoft-hosted agents), önceden yüklenmiş araç setleriyle
ubuntu-latest,windows-latestveyamacOSimajları üzerinde geçici (ephemeral) sanal makineler sağlar. Esneklik ve minimum bakım için idealdirler. Paralel işler (parallel jobs) satın alarak eşzamanlılık için planlama yapın ve önbellek ısınma (cache warm-up) limitlerini göz önünde bulundurun. - Kendi barındırdığınız agent’lar (Self-hosted agents), özel araç zincirleri, özel ağ erişimi ve öngörülebilir performans için kendi altyapınızda çalışır. Ana makineyi (host) güçlendirin, gerektiğinde dışa giden trafiği (egress) kısıtlayın ve agent’ı kaydetmek için kullanılan agent PAT’sini düzenli olarak değiştirin (rotate). Esneklik için ölçek kümeleri (scale sets) veya konteynerize edilmiş agent’lar kullanın.
- Agent havuzları (Agent pools), agent’ları mantıksal olarak gruplandırır ve izinleri devretmek için kullanılır. Havuzlara proje düzeyinde “Kullanım” (Use) hakları verin ve hassas iş yüklerini özel havuzlarla izole edin. İşler, havuzu ve isteğe bağlı olarak gerekli yeteneklere sahip agent’ları seçmek için
demandsbelirtir.
Değişkenler (Variables) ve parametreler (parameters), yapılandırılabilirliği sağlar:
- Pipeline değişkenleri, görevler için ortam değişkenleri olarak ve
$(name)makrosu aracılığıyla kullanılabilen anahtar/değer çiftleridir. Gizli değişkenler (Secret variables) loglarda maskelenir ve derleme zamanı şablon ifadelerinde asla gösterilmez. Bunları Kütüphane’de (Library) veya pipeline’da gizli olarak işaretleyin. - Değişken grupları (Variable groups), paylaşılan değerleri ve gizli anahtarları Kütüphane’de (Library) merkezileştirir. Değerlerin pipeline’da saklanmamasını sağlamak için gizli anahtarları çalışma zamanında kaynak olarak almak üzere Azure Key Vault’a bağlayın. Hangi pipeline’ların bir grubu kullanabileceğini kısıtlamak için pipeline izinlerini kontrol edin.
- Çalışma zamanı parametreleri (Runtime parameters), kuyruğa alma zamanında (queue time) güçlü tipli girdiler (string, number, boolean, object) tanımlar ve pipeline’ı şekillendirmek için (ör. aşamaları etkinleştirmek/devre dışı bırakmak) derleme zamanında
${{ parameters.* }}aracılığıyla değerlendirilir. Pipeline yapısını değiştirmeniz gerektiğinde parametreleri; adımlar içinde çalışma zamanı değerlerine ihtiyacınız olduğunda ise değişkenleri tercih edin. - İfadeler (Expressions): Derleme zamanı şablon mantığı için
${{ }}, makro yerine koyma için$(var)ve özelliklerdeki çalışma zamanı koşulları için$[condition()]kullanın. Günlükleme komutları (logging commands) aracılığıyla görevlerden değişkenler ayarlayın veisOutputdeğişkenlerini kullanarak çıktıları işler arasında yayın.
Dağıtımlar, Ortamlar, Stratejiler ve Kapılar
Dağıtım işleri, birinci sınıf CD semantiği sağlar. Bir dağıtım işi, bir ortamı hedefler ve dağıtımları (rollouts) ve yaşam döngüsü kancalarını (lifecycle hooks) kontrol eden bir strateji altında çalışır:
- Ortamlar, dağıtım hedeflerini (ör. dev, test, prod) temsil eder ve Kubernetes kümeleri, sanal makineler veya platformdan bağımsız dağıtımlar için genel “none” kaynakları gibi kaynakları içerebilir. Ortamlar telemetri, onaylar ve denetimleri birleştirir.
- Onaylar ve denetimler, ortamlara ve hizmet bağlantılarına eklenir. Onaylar, dağıtımın devam etmesinden önce belirlenmiş onaylayıcılar gerektirir. Denetimler; mesai saatleri, gerekli iş öğeleri, Azure Monitor sinyalleri, REST API’lerini veya Azure Functions’ı çağırma ve dal koruması gibi koşulları değerlendiren kapılar (gate) olarak işlev görür. Bunlar, performans temelleri veya uyumluluk koşulları karşılanmazsa yükseltmeyi (promotion) engeller.
- Stratejiler, güncellemelerin nasıl dağıtılacağını şekillendirir:
- runOnce, değişiklikleri preDeploy ve postDeploy kancalarıyla tek bir dalgada uygular.
- rolling, güvenli ilerleme için maxParallel ve hata eşikleriyle örnekler (instance) arasında toplu işler halinde dağıtım yapar.
- canary, tam dağıtımdan önce doğrulamak için routeTraffic ve postRouteTraffic aşamalarıyla trafiği artışlarla kademeli olarak kaydırır.
- blue-green (red/black olarak da adlandırılır), paralel bir ortama veya yuvaya (slot) dağıtım yapılarak ve trafiğin yük dengeleyicide veya App Service yuva takası (slot swap) ile değiştirilmesiyle uygulanır. blue-green, adlandırılmış bir YAML stratejisi olmasa da, ortamlar, yönlendirme ve takas görevleri aracılığıyla gerçekleştirilir ve trafiği geri çevirerek hızlı geri alma (rollback) sağlar.
Dağıtım mantığını, her ortam aşaması için bir dağıtım işi olarak kodlayın. Geçici (ad-hoc) betik yoklamaları yerine, sağlam kapılar için ortam denetimlerinden yararlanın. Gizli anahtarlar (secret) gerektiğinde, bunları değişkenlere gömmek yerine bir hizmet bağlantısı aracılığıyla Azure Key Vault’tan alın.
Artifact’lar, Önbellekleme ve Hizmet Bağlantıları
Artifact’lar ve önbellekleme, yeniden kullanımı ve performansı artırır:
- Pipeline artifact’ları, derleme (build) çıktılarının yayınlanması ve kullanılması için yerel yöntemdir. Adlandırılmış artifact’ları yayınlamak için PublishPipelineArtifact’ı ve mevcut veya belirli bir çalıştırmadan (run) almak için DownloadPipelineArtifact’ı kullanın. YAML’de güvenilirlik ve aşamalar arası paylaşım için optimize edilmişlerdir. Başka bir pipeline’dan kullanırken, bir pipeline kaynağı bildirin ve hassas alım için artifact’larının kaynak adını kullanın.
- Universal packages, dile özgü olmayan varlıklar (ör. CLI araçları, veri dosyaları) için Azure Artifacts aracılığıyla sürümlenmiş, değiştirilemez ikili (binary) dağıtım sağlar. Universal Packages görevleriyle yayınlayın ve indirin, akış (feed) görünümleri (ör. prerelease vs release) aracılığıyla düzenleyin ve akışlardaki saklama (retention) süresini yönetin.
- Pipeline önbelleklemesi, bağımlılık geri yüklemelerini hızlandırır. Cache görevi bir anahtar (key) ve yol (path) kullanır. Anahtarlar, hassas geçersizleştirme için kilit dosyalarını (package-lock.json, Pipfile.lock, packages.lock.json, go.sum) artı işletim sistemi ve araç sürümlerini hash’lemelidir. Geri yükleme anahtarları (Restore keys), kısmi önbellek isabetleri (cache hit) için yedek eşleşmeler sağlar. Önbellek yollarına gizli anahtarları gömmekten kaçının, önbellek boyutu sınırlarına uyun ve kilit dosyaları kararsız olduğunda geçici (ephemeral) araçlar için önbelleklemeyi devre dışı bırakın. Görev davranışını dallandırmak için cacheHitVar’ı gözlemleyin.
Hizmet bağlantıları, Azure Pipelines’ın harici sistemlere ulaşmak için kullandığı kimliği tanımlar:
- Türler arasında Azure Resource Manager (Azure abonelikleri ve kaynak grupları için), GitHub (depo okuma/yazma, durum raporlama) ve Docker/Container Registry (Docker Hub, ACR) bulunur. AWS, GCP, genel hizmet uç noktaları (generic service endpoints) ve paket kayıt defterleri (package registries) için başkaları da mevcuttur.
- OIDC federasyonu (workload identity federation), Azure DevOps ve bulut kimlik sağlayıcıları arasında bir güven ilişkisi kurarak uzun ömürlü gizli anahtarları ortadan kaldırır. ARM için, Azure DevOps yayıncısına (issuer) ve depo/pipeline taleplerine (claim) bağlı bir birleşik kimlik bilgisi (federated credential) ile bir Entra ID uygulaması yapılandırın. Çalışma zamanında, Azure DevOps kısa ömürlü bir token’ı bir bulut erişim token’ı ile değiştirir, bu da hizmet sorumlusu (service principal) gizli anahtarlarını ortadan kaldırır ve kimlik bilgisi sızıntısı riskini azaltır.
- Kapsam belirleme ve yönetişim kritik öneme sahiptir. ARM bağlantılarını en az ayrıcalık ilkesine göre (tercihen özel RBAC ile kaynak grubu düzeyinde) kapsama alın. “Tüm pipeline’lara erişim izni ver” seçeneğini devre dışı bırakın ve bunun yerine pipeline’ları açıkça yetkilendirin. Kullanımdan önce insan incelemesi veya ilke doğrulaması gerektirmek için hizmet bağlantılarına onaylar ve denetimler ekleyin.
Klasik ve YAML Karşılaştırması ve Geçiş
Klasik işlem hatları, ayrı Derleme (Build) ve Sürüm (Release) kavramlarına sahip görsel tasarımcıyı kullanır. Görev tabanlı yazma, değişken yönetimi, sürüm ortamları ve geçitler (gates) sunarlar. YAML işlem hatları, kod olarak işlem hattı (pipeline-as-code), çok aşamalı birleştirme, şablonlar ve depo ile sağlam sürüm kontrolü sağlar. Özellik denkliği büyük ölçüde sağlanmıştır: ortam onayları ve denetimleri, sürüm geçitlerinin yerini alır; dağıtım işleri (deployment jobs) ortamları modeller; işlem hattı yapıtları (pipeline artifacts), derleme yapıtlarının (build artifacts) yerini alır; ve şablonlar (templates) ile extends, merkezi yönetişimi büyük ölçekte uygular. Geriye kalan farklar genellikle kullanıcı arayüzü tabanlı manuel müdahaleler ve bazı niş sürüm tasarımcısı özellikleri etrafındadır; bunlar YAML’de Manuel Doğrulama (Manual Validation) görevleri ve ortam denetimleri aracılığıyla karşılanır.
Pragmatik bir geçiş yolu şöyledir:
- Klasik derleme ve sürüm tanımlarını, görevleri, değişkenleri, ortamları, onayları ve geçitleri envanterleyin.
- Asistanı kullanarak veya YAML’e dışa aktararak derlemeyi YAML’e dönüştürün, ardından yeniden kullanım ve sürdürülebilirlik için şablonlara yeniden düzenleyin (refactor).
- Her sürüm ortamını, bir ortamı hedefleyen bir dağıtım işi (deployment job) içeren bir YAML aşaması (stage) olarak modelleyin. Sürüm geçitlerini (release gates) ortam onaylarına ve denetimlerine (örneğin, Azure Monitor sorgu denetimleri, iş öğesi sorgu denetimleri) dönüştürün.
- Paylaşılan değişkenleri değişken gruplarına (variable groups) taşıyın ve gizli anahtarlar (secrets) için Key Vault’u bağlayın. Service principal gizli anahtarlarını OIDC destekli hizmet bağlantılarıyla (service connections) değiştirin.
- Sürüm yapıtı tetikleyicilerini (release artifact triggers) işlem hattı kaynağı tetikleyicileriyle (pipeline resource triggers) değiştirin. CI’da işlem hattı yapıtlarını (pipeline artifacts) yayımlayın ve bunları CD aşamalarında kullanın.
- Her iki işlem hattını geçici olarak çalıştırarak denkliği doğrulayın, ardından uygun geri alma planlarıyla klasik tanımları kullanımdan kaldırın ve geçişi tamamlayın.
Uygulamalı Problem Senaryosu
Starbucks, bir mikro hizmet platformu için teslimatı standartlaştırıyor ve performans geçitlerini zorunlu kılarken, kimlik bilgisi riskini azaltırken ve derlemeleri hızlandırırken klasik sürümlerden YAML’e geçiş yapmalıdır.
extendsşablonları ile çok aşamalı YAML oluşturma
- Yaklaşım: Statik analiz, SCA ve güvenlik denetimleri için ortak aşamaları ve standart bildirimleri ekleyen merkezi, kuruluş düzeyinde bir
extendsşablonu oluşturun. Her hizmet işlem hattı bu şablonu genişletir ve hizmete özgü derleme ve dağıtım aşamalarını tanımlar. - Gerekçe:
extends, gerekli uyumluluk adımlarını garanti ederken yönetişimi tek tip olarak uygular ve hizmet işlem hatlarını yalın tutar.
- CI, PR, zamanlama (schedule) ve işlem hattı (pipeline) tetikleyicilerini uygulama
- Yaklaşım: Her hizmet için yol filtreleri (path filters) ile CI ve PR tetikleyicilerini yapılandırın; uzun süren entegrasyon testleri için gecelik bir zamanlama ekleyin; bir paketleme işlem hattını, işlem hattı kaynakları (pipeline resources) aracılığıyla bir dağıtım işlem hattını tetikleyecek şekilde zincirleyin.
- Gerekçe: Kod değişiklikleri hakkında hızlı geri bildirim, periyodik sağlık kontrolleri ve bilinen yapıtların deterministik olarak bir sonraki aşamaya taşınmasını sağlar.
- Agent havuzları ile karma agent stratejisi kullanma
- Yaklaşım: Derleme işlerini esneklik için Microsoft tarafından barındırılan
ubuntu-latestüzerinde çalıştırın; dağıtım işlerini dahili kümelere erişimi olan Starbucks VNet içindeki kendi barındırdığınız (self-hosted) agent’larda çalıştırın. Agent’ları ortama göre havuzlarla izole edin ve havuz kullanımını kısıtlayın. - Gerekçe: Barındırılan (hosted) agent’lar CI için bakımı en aza indirir; kendi barındırdığınız (self-hosted) agent’lar CD için güvenli ağ erişimi sağlar. Havuz kapsamlandırması en az ayrıcalık ilkesini (least privilege) uygular.
- Değişken grupları ve çalışma zamanı parametreleri ile değişkenleri yönetme
- Yaklaşım: Paylaşılan ve gizli olmayan değerleri değişken gruplarına (variable groups) yerleştirin, gizli anahtarları (secrets) bağlantılı değişken grupları aracılığıyla Azure Key Vault’tan alın ve üretim dışı dallarda (non-prod branches) performans geçitlerini açıp kapatmak için
enablePerfGateadında bir boolean parametresi sunun. - Gerekçe: Merkezi yapılandırma tekrarı önler; Key Vault gizli anahtarları korur; parametreler derleme zamanı yapısal seçimlerini yönlendirir.
- Ortamlar, onaylar ve denetimler ile dağıtım işlerini tanımlama
- Yaklaşım: Geliştirme (dev), hazırlık (staging) ve üretim (prod) ortamlarını modelleyin. Hazırlık ve üretim için onaylar ekleyin. Denetimler ekleyin: üretim için mesai saatleri ve hazırlık ortamındaki gecikme (latency) temel çizgiyi aşarsa bir sonraki aşamaya geçişi engelleyen bir Azure Monitor sorgu denetimi.
- Gerekçe: Ortam düzeyindeki onaylar ve denetimler, kontrollü bir şekilde bir sonraki aşamaya geçişi uygular ve üretim dağıtımından önce SLO’ları zorunlu kılar.
- Önce canary, sonra blue-green stratejilerini uygulama
- Yaklaşım: Artımlı değişiklikleri doğrulamak için hazırlık (staging) ortamında bir canary stratejisi kullanın. Üretimde, paralel bir yuvaya/ortama dağıtım yapın ve anında geri alma yeteneği ile trafiği değiştirin (blue-green/red-black).
- Gerekçe: Canary, doğrulama sırasında riski azaltır; blue-green, dağıtım süresini en aza indirir ve en hızlı geri almayı sağlar.
- İşlem hattı yapıtları ve önbellekleme ile optimize etme
- Yaklaşım: Derleme çıktılarını işlem hattı yapıtları (pipeline artifacts) olarak yayımlayın; bunları dağıtım aşamalarında kullanın. Bağımlılık geri yüklemelerini, geri dönüş (fallback) için
restoreKeysile kilit dosyası (lockfile) hash’lenmiş anahtarlar kullanarak önbelleğe alın. - Gerekçe: Yapıtlar, değişmez ve izlenebilir bir şekilde bir sonraki aşamaya geçişi sağlar; önbellekleme, doğruluğu feda etmeden derleme sürelerini önemli ölçüde azaltır.
- OIDC ve kapsamlı izinlerle hizmet bağlantılarını güvence altına alma
- Yaklaşım: Kaynak gruplarına (resource groups) göre kapsamlandırılmış workload identity federation kullanarak ARM hizmet bağlantıları oluşturun. Hizmet bağlantısı onayları ve denetimleri gerektirin ve “Tüm işlem hatlarına erişim izni ver” seçeneğini devre dışı bırakın.
- Gerekçe: Uzun ömürlü gizli anahtarları ortadan kaldırır ve denetlenebilir onaylarla en az ayrıcalık ilkesini (least privilege) uygular.
Bu uçtan uca tasarım, YAML-as-code yönetişimini kurumsal düzeyde onaylar ve denetimlerle uyumlu hale getirir, önbellekleme ve yapıtlar aracılığıyla teslimatı hızlandırır ve OIDC ile kapsamlı hizmet bağlantıları aracılığıyla güvenliği güçlendirir.
← Kaynak Kontrolü ve Depo Yönetimi · Tüm alanlar · Kod Olarak Altyapı ve Yapılandırma Yönetimi →
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 →