Kubernetes ortamında uygulama yönetimi denildiğinde akla gelen en temel ve güçlü yapı Deployment objesidir. Daha önce manuel olarak tekil Pod’ların nasıl ayağa kaldırıldığını incelemiş olsak da, production (canlı) ortamlarında Pod’ların doğrudan manuel olarak yönetilmesi tercih edilen bir yöntem değildir.
Örneğin, aynı uygulamadan 3 farklı kopya (replica) çalıştırmanız gereken bir senaryoda, bunları tek tek manuel olarak deploy etmek hem zaman kaybına yol açar hem de yönetimi zorlaştırır. Deployment objesi, bu süreci otomatize ederek sizin yerinize Pod’ların oluşturulmasını, güncellenmesini ve istenilen sayıda çalışır durumda kalmasını sağlar.
Deployment Manifestosu (YAML) Yapısı
Bir Deployment objesi oluştururken kullanılan standart bir YAML yapısını aşağıda görebiliriz. Bu örnekte, popüler web sunucusu Nginx’i kullanarak 3 replikalı bir yapı kuruyoruz:
YAML
apiVersion: apps/v1
kind: Deployment
metadata:
name: mynginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: mynginx
template:
metadata:
labels:
app: mynginx
spec:
containers:
- name: mynginx-app
image: nginx
ports:
- containerPort: 80
Parametrelerin Teknik Açıklaması
- apiVersion:
apps/v1değeri, bu objenin Kubernetes API’sindeki sürümünü belirtir. - replicas:
3değeri, cluster içerisinde her an aynı pod’dan 3 adet kopyanın aktif olarak çalışacağını garanti eder. - selector (matchLabels): Deployment’ın hangi Pod’ları yöneteceğini belirlediği kısımdır. Buradaki etiketler, alttaki Pod şablonu ile eşleşmelidir.
- template: Deployment tarafından üretilecek Pod’ların “reçetesidir”. Pod’un hangi imajdan (
nginx) oluşturulacağı, hangi portu kullanacağı ve hangi etiketlere sahip olacağı burada tanımlanır.
Deployment Objesinin AKS Üzerinde Oluşturulması
Hazırladığınız YAML dosyasını (örneğin nginxdeployment.yaml) AKS cluster’ınıza uygulamak için aşağıdaki komutu kullanın:
Bash
kubectl apply -f nginxdeployment.yaml

[RESİM 1: kubectl apply komut çıktısı ve deployment created mesajı]
İşlem başarıyla tamamlandığında Azure Portal üzerinde “Deployments” sekmesinden objenin durumunu gözlemleyebilirsiniz.

[RESİM 2: Azure Portal – Deployments sekmesinde mynginx-deployment görünümü]
Arka Planda Neler Oluyor? (ReplicaSet ve Pod İlişkisi)
Deployment objesi oluşturulduğunda süreç doğrudan Pod oluşturma ile bitmez. Kubernetes hiyerarşisi şu şekilde ilerler:
- Deployment: İstenilen durumu (desired state) tanımlar.
- ReplicaSet: Deployment tarafından oluşturulur. Pod’ların sayısını denetlemekle görevlidir.
- Pod: ReplicaSet tarafından oluşturulan ve uygulamanın çalıştığı asıl birimdir.
AKS Portal’da “Pods” kısmına baktığınızda, Deployment ismiyle başlayan 3 adet Pod göreceksiniz. Kubernetes, bu pod’ların sonuna her birini tekilleştiren (unique) rastgele karakterler ekler.

[RESİM 3: Azure Portal – Oluşturulan 3 adet Nginx Pod’u]
ReplicaSet, pod’ların sağlığını sürekli izler. Eğer bir Pod hata verir veya silinirse, ReplicaSet bunu fark eder ve tanımlanan sayıya (bizim örneğimizde 3) ulaşmak için anında yeni bir Pod oluşturur.

[RESİM 4: Azure Portal – ReplicaSet görünümü ve unique isimlendirme]
Bu yapı sayesinde uygulamalarınız “kendi kendini iyileştiren” (self-healing) ve yüksek erişilebilirlikli (high-availability) bir mimariye kavuşmuş olur.