Microsoft AZ-204: Azure Konteyner Çözümleri — Çalışma kılavuzu
Şunun bir parçası: Microsoft Azure Developer Associate AZ-204 — Ç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, tek bir container’ın çalıştırılmasından orkestrasyonlu kümelere ve güvenli, kurumsal düzeyde bir imaj tedarik zincirine kadar uzanan çeşitli container seçenekleri sunar. Azure Container Instances (ACI), sunucuları yönetmeden Linux veya Windows container’larını çalıştırmanın en hızlı yoludur. Azure Kubernetes Service (AKS), gelişmiş zamanlama, ağ, güvenlik ve DevOps entegrasyonları ile mikroservisleri ölçeklendiren, yönetilen bir Kubernetes kontrol düzlemidir. Azure Container Registry (ACR), derleme (build), etiketleme, push/pull ve Helm dağıtım akışlarınızı temel alan özel, coğrafi olarak çoğaltılmış bir kayıt defteridir. Docker imajı oluşturma ve yaşam döngüsü yönetiminde uzmanlaşmak, bu platformların herhangi birinde güvenilir dağıtımlar için temeldir. Bu bölüm, YAML tabanlı dağıtımlar, Helm paketlemesi, servislerin dışa açılması ve kimlik/güvenlik desenleri de dahil olmak üzere parçaların nasıl bir araya geldiğine dair pratik, geliştirici odaklı bir bakış açısı sunar.
Docker ve Azure Container Registry (ACR)
Güvenilir container teslimatı, sağlam Docker temelleriyle başlar. Her imaj, Dockerfile talimatlarıyla oluşturulan katmanlardan oluşur; katmanların yeniden kullanılması ve önbellek isabetleri, hızlı derlemeler (build’ler) için kritik öneme sahiptir.
- Yaygın Dockerfile talimatları ve rehberlik:
- FROM temel imajı tanımlar. Saldırı yüzeyini ve boyutu azaltmak için minimal imajları (örneğin, distroless, uygun olduğunda alpine) tercih edin.
- RUN bağımlılıkları kurmak için komutları yürütür. Katman sayısını azaltmak için ilgili komutları birleştirin, ancak hataları gizleyen monolitik RUN satırlarından kaçının.
- COPY ve ADD uygulama yapıtlarını (artifact) yerleştirir. Bağlamları (context) şişirmekten kaçınmak için .dockerignore kullanın; COPY’yi belirli yollara sabitleyin.
- WORKDIR çalışma dizinini ayarlar; RUN içinde cd zincirlemek yerine bunu kullanın.
- EXPOSE hedeflenen dinleme portlarını belgeler (bir güvenlik duvarı değildir).
- ENV ve ARG ortam ve derleme zamanı değişkenlerini yapılandırır; ARG varsayılanlarını sabitleyerek veya açık değerler geçirerek derleme zamanı belirliliğini teşvik edin.
- ENTRYPOINT ana yürütülebilir dosyayı tanımlar; varsayılan argümanlar için CMD kullanın. Düzgün kapatma (graceful shutdown) için sinyal işlemeyi korumak amacıyla exec formunu (JSON dizisi) tercih edin.
- HEALTHCHECK orkestratörlerin tepki verebilmesi için canlılık (liveness) değerlendirmesini etkinleştirir.
- Çok aşamalı derlemeler (multi-stage builds), derleme ve çalışma zamanı aşamalarını ayırır, yalnızca gerekli yapıtları temiz bir çalışma zamanı imajına kopyalayarak boyutu ve CVE ayak izini önemli ölçüde azaltır. Örneğin, SDK ile derleyin, ikili dosyaları (binary) yayımlayın, ardından bir çalışma zamanı temeline kopyalayın.
- İmaj katmanları değişmez (immutable) ve içerik adreslidir (content-addressed). Talimatların sırasını değiştirmek önbelleğe almayı etkiler. Önbellek isabetlerini en üst düzeye çıkarmak için sık değişen talimatları (örneğin, COPY kaynağı) Dockerfile’ın sonlarına yerleştirin.
ACR ile imajları ve Helm chart’larını özel olarak depolayın ve dağıtın:
- Depolar (Repositories) ve etiketleme: İmajları
undefined
olarak push edin. Tekrarlanabilirlik için üretim dağıtımlarında anlamsal veya Git tabanlı etiketleri (ör. 1.4.0, build SHA) tercih edin ve değişmez özetleri (immutable digests) kullanın.
Push ve pull işlemleri:
undefined
komutunu kullanarak veya bir Azure AD token’ı ile docker login yaparak ACR’de kimlik doğrulayın. Üretimde ACR yönetici kullanıcısını etkinleştirmekten kaçının.
- Etiketle ve push et:
undefined
. docker pull veya Kubernetes imaj referansları aracılığıyla pull edin.
- Tedarik zincirini kontrol etmek için harici (upstream) imajları ACR’ye içe aktarın:
undefined
.
- ACR Tasks: İmajları doğrudan Azure’da derleyin, test edin ve yamalayın. İsteğe bağlı derlemeler için
undefined
kullanın; Git commit’lerinden veya temel imaj güncellemelerinden tetiklemek için
undefined
ile güncellemeleri otomatikleştirin, bu da uygulama kodunu değiştirmeden CVE düzeltmelerini mümkün kılar.
- Coğrafi çoğaltma (Geo-replication) (Premium SKU), çok bölgeli çekme (pull) yerelliği ve dayanıklılık sağlar. Çekme gecikmesini ve bölgeler arası çıkış (egress) trafiğini azaltmak için AKS kümelerine yakın bölgelerde replikalar yapılandırın.
- Erişim kontrolü:
- Azure AD ile entegre edin ve AKS kubelet kimliğine AcrPull gibi yerleşik rolleri ve CI ardışık düzenlerine (pipeline) AcrPush rolünü atayın. Ayrıntılı kontrol için token’lar ve kapsam haritaları (scope maps) aracılığıyla depo kapsamında izinler mevcuttur.
- Özel uç noktalar (private endpoints), hizmet uç noktaları (service endpoints) ve güvenlik duvarı kuralları ile ağ erişimini kısıtlayın. Üretim ortamları için özel uç noktaları tercih edin.
- AcrPull rol atamasını basitleştirmek için
undefined
komutuyla ACR’yi AKS’e bağlayın.
Azure Container Instances (ACI)
ACI, küme yönetimi olmadan isteğe bağlı olarak container’ları çalıştırır. Temel birim, aynı ana bilgisayar işletim sistemi çekirdeğini, yaşam döngüsünü, IP’yi ve birimleri (volume) paylaşan, birlikte zamanlanmış bir container seti olan container grubudur. Sidecar desenini (örneğin, log göndericiler, proxy’ler) uygulamak veya bir ana süreci bir yardımcıyla birleştirmek için container gruplarını kullanın.
- Çoklu container grupları bir ağ ad alanını (network namespace) paylaşır, bu da container’lar arası iletişimin localhost üzerinden yapılmasını sağlar. Ayrıca, bağlı birimleri (Azure Files, emptyDir) ve yaşam döngüsünü paylaşırlar, bu da onları yakın bağlantı gerektiren uyumlu, tek seferlik görevler için uygun hale getirir.
- Yeniden başlatma politikaları (Restart policies) yürütme semantiğini kontrol eder:
- Always, container’lar sonlandığında onları yeniden başlatır. Uzun süre çalışan servisler için en iyisidir.
- OnFailure, yalnızca sıfır olmayan çıkış kodlarında yeniden başlatır. Hata durumunda yeniden denemesi gereken toplu iş (batch) görevleri için uygundur.
- Never, container’ları bir kez çalıştırır ve asla yeniden başlatmaz, eşgüçlü (idempotent) işler için idealdir.
- Ağ entegrasyonları, bir DNS etiketine sahip genel IP, delege edilmiş bir Azure VNet alt ağında özel IP’ler ve bir NAT veya güvenlik duvarı üzerinden güvenli çıkış (egress) içerir. VNet’e enjekte edilmiş ACI, genel kullanıma açmadan servislere (veritabanları, depolama) özel erişim sağlar.
- Operasyonel hususlar:
- Güvenli ortam değişkenleri kullanarak veya Azure Files bağlayarak gizli bilgileri (secret) enjekte edin; daha güçlü bir duruş için, çalışma zamanında Key Vault’tan yönetilen kimlik (managed identity) aracılığıyla gizli bilgileri alın.
undefined
ve
undefined
ile gözlemleyin;
undefined
ile etkileşimli komutlar çalıştırın.
- Faturalandırma, vCPU ve GiB bellek için saniye başına yapılır. Container’lar hızlı bir şekilde başlar ve anlık yoğunluklu (bursty) iş yükleri, CI yardımcı görevleri, entegrasyon testleri ve Kubernetes ek yükünün gereksiz olduğu kuyruk tetiklemeli işler için uygundur.
Azure Kubernetes Service (AKS)
AKS, yönetilen bir kontrol düzlemi ile birlikte düğüm havuzları, otomatik ölçeklendirme ve derinlemesine ağ/kimlik seçenekleri sunar.
Düğüm havuzları, kapasiteyi ve iş yükü yerleşimini yapılandırır. Sistem düğüm havuzları temel hizmetleri çalıştırırken; kullanıcı düğüm havuzları uygulama pod’larını çalıştırır. İş yüklerini CPU/Bellek/GPU ihtiyaçlarına, işletim sistemine (Linux/Windows), sanal makine boyutuna ve kullanılabilirlik alanına göre ayırmak için birden fazla havuz kullanın. Sistem havuzlarını korumak için taint/toleration’ları, seçim için etiketleri ve bekleyen pod’lara göre düğüm eklemek/kaldırmak için cluster autoscaler’ı kullanın. Boyutlandırma yaparken düğüm başına maxPods ve pod yoğunluğunu göz önünde bulundurun.
Pod zamanlaması; kaynak istekleri/limitleri, QoS sınıfları (Guaranteed/Burstable/BestEffort) ve kısıtlamalar tarafından yönlendirilir. Pod’ları uygun havuzlara yönlendirmek ve replikaları bölgeler ile hata etki alanları (failure domains) arasında dağıtmak için nodeSelector/affinity ve anti-affinity kullanın. Topology spread constraints, daha dengeli bir dağılım sağlar. Kritik hizmetler için, isteğe bağlı kesintileri ve önceliklendirme (preemption) davranışını şekillendirmek üzere PodDisruptionBudgets ve PriorityClasses tanımlayın. DaemonSet’ler her düğüme bir ajan (günlükleme, izleme) yerleştirirken, CronJob’lar periyodik görevler için container’ları zamanlar.
AKS’teki Deployment’lar bildirimseldir (declarative). YAML manifestoları; Deployments, StatefulSets, Jobs, Services ve Ingress için apiVersion, kind, metadata ve spec tanımlar. Manifestoları kaynak kontrolünde tutun, ortam farklılıkları için Kustomize overlay’leri ile parametrelendirin ve kubectl apply -f ile uygulayın. Server-side apply ve doğru etiketler/ek açıklamalar (labels/annotations), sahiplik ve sapma (drift) tespiti konularında yardımcı olur. Yeniden kullanılabilir uygulamaları paketlemek için Helm 3, şablonları ve değerleri (values) bir araya getirir. Helm chart’larını ACR’de OCI artifact’leri olarak barındırın ve
undefined
komutuyla kurun. Her ortam için ayrı values dosyaları kullanın, chart sürümlerini takip edin ve hızlı kurtarma için helm rollback ile geri alın.
Günlük olarak kullanacağınız kubectl komutları:
- Küme bağlamına (context) erişim:
undefined
komutu kubeconfig dosyasını birleştirir; Azure AD’ye katılmış bir makinede kubectl kullanmak yeterlidir—manifestoları dağıtmak için Docker gerekmez.
- İnceleme ve operasyon:
undefined
;
undefined
;
undefined
;
undefined
;
undefined
;
undefined
;
undefined
; bakım için
undefined
; RBAC’i doğrulamak için
undefined
.
- Uygulama/yamalama (Apply/patch):
undefined
;
undefined
.
AKS’te ağ (networking), pod’ları ve servisleri net sorumluluklarla dışa açar:
- ClusterIP, servis keşfi için yalnızca dahili, küme kapsamında sanal IP’ler ve DNS sağlar. Bu, mikroservisler arasındaki doğu-batı (east-west) trafiği için varsayılandır.
- NodePort, her düğümde aynı portu açar; doğrudan tüketilmek yerine bir Ingress veya harici LB arkasında kullanılması en iyisidir.
- LoadBalancer, NodePort’ları hedefleyen bir Azure Load Balancer ön ucu (frontend) sağlar. Servisleri
undefined
ek açıklamasıyla (annotation) dahili olarak işaretleyin veya kararlı DNS için statik bir genel IP atayın.
- Ingress controller’lar L7 yönlendirme, TLS sonlandırma ve yol/ana bilgisayar (path/host) kuralları sağlar. NGINX Ingress Controller, zengin ek açıklamalarıyla (annotations) çok yönlü bir varsayılandır. Application Gateway Ingress Controller (AGIC), WAF, otomatik ölçeklendirme ve kurumsal L7 yetenekleri için Azure Application Gateway ile entegre olurken Kubernetes’e özgü manifestoları korur. ACME ile TLS’i otomatikleştirmek için cert-manager kullanın veya CSI Secret Store ile Key Vault sertifikalarını Kubernetes secret’larına senkronize edin.
Kimlik ve yetkilendirme, küme içi secret’lar olmadan Azure AD’yi entegre eder:
- AKS için yönetilen kimlikler (managed identities), küme/kontrol düzlemi kimliği ve kubelet kimliğinden oluşur. Düğümlerin imajları güvenli bir şekilde çekebilmesi için kubelet’e ACR üzerinde AcrPull izni verin (
undefined
).
- Workload identity, pod’ların Kubernetes servis hesaplarına (service accounts) eşlenmiş birleşik Azure AD kimlik bilgilerini kullanarak Azure kaynaklarına erişmesini sağlar—düğüm düzeyinde kimlik bilgileri veya sidecar’lar gerekmez. Kümede OIDC issuer’ı etkinleştirin, kullanıcı tarafından atanan bir yönetilen kimlik (user-assigned managed identity) oluşturun, servis hesabı/namespace için bir FederatedIdentityCredential yapılandırın ve uygulamada Azure Identity SDK’sını kullanın. Bu, eski AAD Pod Identity modelinin yerini alır ve açık standartlarla uyumludur.
- RBAC, Kubernetes API izinlerini yönetir. AKS, Azure AD ile entegre edildiğinde, RoleBindings/ClusterRoleBindings aracılığıyla Kubernetes Role’lerini/ClusterRole’lerini Azure AD kullanıcılarına veya gruplarına bağlayın. Alternatif olarak, erişimi Azure Kubernetes Service RBAC Reader, Writer ve Admin gibi Azure RBAC rolleriyle yönetmek için Kubernetes Yetkilendirmesi için Azure RBAC’yi etkinleştirin. En az ayrıcalık ilkesini (least privilege) izleyin, namespace’leri takıma veya iş yüküne göre ayırın ve üretime erişimi grup tabanlı bağlamalarla (bindings) denetleyin.
AKS’e uçtan uca imaj akışı basit ve güvenlidir. Çok aşamalı (multi-stage) imajlar oluşturun, değişmez (immutable) sürümlerle etiketleyin, ACR’ye gönderin ve manifestolar veya Helm ile AKS’e dağıtın. AKS, kubelet yönetilen kimliğini kullanarak ACR’den imajları çeker ve pod’lar workload identity aracılığıyla Azure kaynaklarını kullanır. Servisler ClusterIP/LoadBalancer ile dışa açılır ve TLS ile yönlendirmeyi merkezileştiren bir ingress controller ile iyileştirilir.
Pratik Problem Senaryosu
Adobe’nin Creative Cloud ekibi, monolitik bir medya işleme hizmetini mikroservislere ayırıyor ve düşük gecikmeli küresel teslimat ile güçlendirilmiş bir tedarik zincirini hedefliyor.
- CI’da çok aşamalı Dockerfile’lar kullanarak imajlar oluşturun ve saklayın
- Medya codec’lerini derlemek ve yalnızca çalışma zamanı ikili dosyalarını (runtime binaries) ince bir temel imaja kopyalamak için Docker multi-stage kullanın, böylece boyutu ve CVE’leri en aza indirin. İmajları
undefined
olarak ACR’ye gönderin. Bu, dağıtım sabitlemesi için değişmez özetlere (immutable digests) sahip, tekrarlanabilir ve güvenli artifact’ler sağlar.
- Registry’yi güçlendirin ve yama yönetimini otomatikleştirin
- AKS’i barındıran her sanal ağda özel uç noktalara (private endpoints) sahip bir ACR Premium registry oluşturun. İmaj çekme işlemlerini (pulls) yerel tutmak için Kuzey Avrupa ve Doğu ABD’ye coğrafi çoğaltmayı (geo-replication) etkinleştirin. Üst katman temel imaj güncellemelerinde yeniden derlemeleri tetiklemek için ACR Tasks’ı yapılandırın, böylece yamalı katmanlar otomatik olarak yayılır. Bu, performans ile güvenliği dengeler ve dışa giden trafiği (egress) azaltır.
- Ayrılmış düğüm havuzları ve kimlikle AKS’i kurun
- AKS’i Azure CNI ve sistem/kullanıcı düğüm havuzları ile dağıtın: kontrol düzlemi eklentileri için küçük bir sistem havuzu, kod dönüştürme (transcoding) için GPU özellikli kullanıcı havuzları ve API’ler için genel amaçlı havuzlar. Azure AD entegrasyonunu, OIDC issuer’ı ve workload identity’yi etkinleştirin.
undefined
aracılığıyla kubelet kimliğine AcrPull izni atayın. Bu, iş yüklerini izole eder, verimli bir şekilde ölçeklenir ve secret tabanlı imaj çekme işlemlerini ortadan kaldırır.
- Bildirimsel dağıtımları ve paketlemeyi tanımlayın
- Deployments, kalıcılığın (persistence) gerekli olduğu yerlerde StatefulSets, Services, HorizontalPodAutoscaler ve PodDisruptionBudgets için Kubernetes YAML’ları yazın. Kodlayıcı (encoder) hizmetini ve API ağ geçidini Helm chart’ları olarak paketleyin, bunları OCI artifact’leri olarak ACR’de yayınlayın ve ortama özgü değerler (values) kullanarak
undefined
ile dağıtın. Bu, tutarlı, sürümlenmiş sürümler ve basit geri almalar (rollbacks) sağlar.
- Servisleri dışa açın ve L7 güvenliğini uygulayın
- Dahili mikroservisler için ClusterIP ve genel API’ler için Application Gateway Ingress Controller ile bir LoadBalancer servisi kullanın. Bir WAF ilkesiyle TLS’i Application Gateway’de sonlandırın, ACME challenge’ları için Azure DNS ile entegre cert-manager kullanarak sertifikaları yönetin ve ana bilgisayar/yol (host/path) ile arka uçlara (backends) yönlendirme yapın. Bu, Kubernetes’e özgü yapılandırmayla kurumsal düzeyde L7 güvenliği sağlar.
- Azure kaynaklarına güvenli iş yükü erişimini uygulayın
- Blob Storage’a yazan ve secret’ları okuyan bir küçük resim (thumbnailing) hizmeti için, kullanıcı tarafından atanan bir yönetilen kimlik (user-assigned managed identity) oluşturun, bunu workload identity aracılığıyla servis hesabıyla birleştirin (federate) ve Storage Blob Veri Katkıda Bulunanı (Storage Blob Data Contributor) ile Key Vault Gizli Dizi Kullanıcısı (Key Vault Secrets User) rollerini verin. Pod, Azure AD ile kimlik doğrulaması yaparak secret mount’larını ortadan kaldırır ve ayrıntılı, denetlenebilir erişim sağlar.
- Toplu iş (batch) taşmalarını ACI ile yönetin
- Düzensiz, yüksek öncelikli toplu iş taşmaları için, VNet’e enjekte edilmiş bir alt ağ içinde
undefined
ile ACI çoklu container gruplarını (kodlayıcı + sidecar metrik toplayıcı) tetikleyin. Bu, AKS’i en yüksek seviyeye ölçeklendirmeden ani artışları emer ve depolama hesaplarına giden özel veri yollarını korur.
Bu seçimlerin her biri Adobe’nin hedeflerini doğrudan destekler: coğrafi çoğaltma ve özel uç noktalara sahip ACR Premium, imaj çekme işlemlerini güvence altına alır ve hızlandırır; özelleştirilmiş düğüm havuzları ve workload identity’ye sahip AKS, izolasyon ve en az ayrıcalıkla erişim sağlar; Helm ve bildirimsel YAML, dağıtımları ve geri almaları standartlaştırır; WAF’lı AGIC, dayanıklı ve güvenli L7 ingress sunar; ve ACI, kalıcı küme maliyeti olmadan anlık toplu iş yüklerini yönetir.
← Azure Cosmos DB · Tüm alanlar · Azure Kimlik Doğrulama →
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 →