Kubectl ile Hızlı Kaynak Oluşturma: YAML Dosyalarına Alternatif Yaklaşım

Kubernetes ile çalışırken, çoğu geliştirici ve DevOps mühendisi kaynakları oluşturmak için YAML dosyaları kullanır. Ancak özellikle sınav ortamlarında veya hızlı test senaryolarında, YAML dosyaları oluşturmak zaman alıcı ve hata yapmaya açık olabilir. Bu yazıda, kubectl komutlarını kullanarak YAML dosyalarına ihtiyaç duymadan kaynakları nasıl oluşturabileceğinizi öğreneceksiniz.

Neden Kubectl Komutlarını Kullanmalıyız?

Sınav Ortamında Avantajlar

Kubernetes sertifika sınavlarında (CKA, CKAD, CKS) zaman çok değerlidir. YAML dosyalarını tarayıcıdan terminale kopyalarken:

  • Zaman kaybı: Formatlama hataları, girinti sorunları
  • Syntax hataları: YAML'in hassas yapısı nedeniyle kolayca hata yapılabilir
  • Kopyala-yapıştır sorunları: Özellikle sınav ortamlarında zor olabilir

Günlük Kullanımda Faydaları

  • Hızlı prototipleme: Hemen test etmek istediğiniz kaynaklar için
  • Öğrenme aşaması: YAML yapısını anlamak için template oluşturma
  • Otomasyon: Script'lerde kullanım kolaylığı

Temel Kubectl Komutları

Pod Oluşturma

En basit kullanım senaryosu ile başlayalım:

# Basit bir nginx pod'u oluştur
kubectl run nginx --image=nginx

Bu komut, nginx adında bir pod oluşturur ve nginx:latest image'ını kullanır. Komut çalıştırıldığında pod hemen oluşturulur ve çalışmaya başlar.

Pod Manifest'i Oluşturmadan İnceleme

Bazen bir pod'un YAML manifest'ini görmek isteyebilirsiniz ama henüz oluşturmak istemeyebilirsiniz:

# Pod manifest'ini oluşturmadan göster (dry-run)
kubectl run nginx --image=nginx --dry-run=client -o yaml

Bu komut size pod'un YAML formatını gösterir ancak gerçekte pod'u oluşturmaz. --dry-run=client parametresi, komutun sadece istemci tarafında çalıştırılmasını sağlar.

Önemli Not: Kubernetes 1.18+ sürümlerinde --dry-run=client kullanılmalıdır. Eski sürümlerde --dry-run kullanılabilir.

YAML Dosyasına Kaydetme

Manifest'i bir dosyaya kaydetmek isterseniz:

# YAML dosyasına kaydet
kubectl run nginx --image=nginx --dry-run=client -o yaml > nginx-pod.yaml

Dosyayı oluşturduktan sonra, gerekli değişiklikleri yapıp kaynağı oluşturabilirsiniz:

kubectl create -f nginx-pod.yaml

Deployment Oluşturma

Basit Deployment

Pod'lar geçici kaynaklardır. Production ortamlarında genellikle Deployment kullanılır:

# Deployment oluştur
kubectl create deployment nginx --image=nginx

Bu komut, nginx adında bir deployment oluşturur ve varsayılan olarak 1 replica ile başlar.

Replica Sayısı Belirleme

Kubernetes 1.19+ sürümlerinde, replica sayısını doğrudan belirtebilirsiniz:

# 4 replica ile deployment oluştur
kubectl create deployment nginx --image=nginx --replicas=4

Deployment YAML'ını İnceleme

Deployment'ın YAML formatını görmek için:

# Deployment manifest'ini göster
kubectl create deployment nginx --image=nginx --dry-run=client -o yaml

Deployment YAML'ını Dosyaya Kaydetme

# YAML dosyasına kaydet
kubectl create deployment nginx --image=nginx --replicas=4 --dry-run=client -o yaml > nginx-deployment.yaml

Dosyayı düzenledikten sonra:

kubectl create -f nginx-deployment.yaml

Gelişmiş Senaryolar

Port Belirleme

Pod veya deployment oluştururken port belirtebilirsiniz:

# Port belirterek pod oluştur
kubectl run nginx --image=nginx --port=8080

Environment Variables

Environment variable'lar eklemek için:

# Environment variable ile pod oluştur
kubectl run nginx --image=nginx --env="KEY=value" --env="ANOTHER_KEY=another_value"

Command ve Args

Container'ın çalıştıracağı komutu değiştirmek için:

# Özel komut ile pod oluştur
kubectl run nginx --image=nginx --command -- sleep 3600

Resource Limits

Kaynak sınırları belirlemek için YAML dosyası gerekir, ancak önce template oluşturup sonra düzenleyebilirsiniz:

# Template oluştur
kubectl run nginx --image=nginx --dry-run=client -o yaml > nginx-pod.yaml

# Dosyayı düzenleyip resource limits ekleyin
# Sonra oluşturun
kubectl create -f nginx-pod.yaml

Pratik Kullanım Senaryoları

Senaryo 1: Hızlı Test Pod'u

# Hızlıca bir test pod'u oluştur
kubectl run test-pod --image=busybox --command -- sleep 3600

# Pod'a bağlan
kubectl exec -it test-pod -- /bin/sh

Senaryo 2: Çoklu Replica Deployment

# Yüksek erişilebilirlik için deployment
kubectl create deployment web-app --image=nginx:1.21 --replicas=3

# Deployment durumunu kontrol et
kubectl get deployment web-app

Senaryo 3: Farklı Namespace'lerde Kaynak Oluşturma

# Belirli bir namespace'de pod oluştur
kubectl run nginx --image=nginx -n production

# Namespace ile deployment
kubectl create deployment nginx --image=nginx -n production

YAML vs Kubectl Komutları: Ne Zaman Hangisini Kullanmalı?

Kubectl Komutlarını Kullanın:

  • Hızlı test ve prototipleme
  • Sınav ortamlarında zaman tasarrufu
  • Basit kaynaklar için (pod, deployment)
  • Öğrenme ve keşif aşamasında

YAML Dosyalarını Kullanın:

  • Karmaşık yapılandırmalar (ConfigMap, Secret, Service)
  • Production ortamları
  • Version control gerektiren durumlar
  • GitOps yaklaşımları
  • Resource limits, volumes, security contexts gibi detaylı ayarlar

Sınav İpuçları

1. Komut Referansını Hatırlayın

Kubernetes resmi dokümantasyonundaki kubectl conventions sayfasını bookmark'layın:

https://kubernetes.io/docs/reference/kubectl/conventions/

2. Dry-Run Kullanımı

Her zaman önce --dry-run=client -o yaml ile kontrol edin:

# Önce kontrol et
kubectl run nginx --image=nginx --dry-run=client -o yaml

# Doğruysa oluştur
kubectl run nginx --image=nginx

3. Hızlı Düzeltmeler

Oluşturduğunuz bir kaynağı düzenlemek için:

# Mevcut kaynağın YAML'ını al
kubectl get pod nginx -o yaml > nginx-pod.yaml

# Düzenle ve uygula
kubectl apply -f nginx-pod.yaml

Yaygın Hatalar ve Çözümleri

Hata 1: Image Pull BackOff

# Yanlış image adı
kubectl run nginx --image=ngnix  # Typo!

# Doğrusu
kubectl run nginx --image=nginx

Hata 2: Namespace Sorunları

# Namespace belirtmeyi unutma
kubectl run nginx --image=nginx -n default

Hata 3: Dry-Run Parametresi

# Eski sürümlerde
kubectl run nginx --image=nginx --dry-run -o yaml

# Yeni sürümlerde (1.18+)
kubectl run nginx --image=nginx --dry-run=client -o yaml

Özet: Hızlı Referans

# Pod oluştur
kubectl run <name> --image=<image>

# Pod YAML'ını göster (oluşturma)
kubectl run <name> --image=<image> --dry-run=client -o yaml

# Pod YAML'ını dosyaya kaydet
kubectl run <name> --image=<image> --dry-run=client -o yaml > pod.yaml

# Deployment oluştur
kubectl create deployment <name> --image=<image>

# Deployment replica ile
kubectl create deployment <name> --image=<image> --replicas=<number>

# Deployment YAML'ını göster
kubectl create deployment <name> --image=<image> --dry-run=client -o yaml

# Deployment YAML'ını dosyaya kaydet
kubectl create deployment <name> --image=<image> --replicas=<number> --dry-run=client -o yaml > deployment.yaml

Sonuç

Kubectl komutlarını kullanarak YAML dosyalarına ihtiyaç duymadan kaynakları hızlıca oluşturabilirsiniz. Bu yaklaşım özellikle:

  • Sınav ortamlarında zaman tasarrufu sağlar
  • Hızlı test senaryolarında pratiklik kazandırır
  • Öğrenme sürecinde YAML yapısını anlamaya yardımcı olur

Ancak unutmayın ki, karmaşık yapılandırmalar ve production ortamları için YAML dosyaları hala en iyi pratiktir. Her iki yaklaşımı da duruma göre kullanabilmek, etkili bir Kubernetes kullanıcısı olmanın anahtarıdır.

İleri Seviye Öğrenme

  • kubectl explain: Herhangi bir kaynak tipinin dokümantasyonunu görmek için
  • kubectl get -o yaml: Mevcut kaynakların YAML'ını görmek için
  • kubectl apply: YAML dosyalarını uygulamak için (create yerine)
# Kaynak tipini öğren
kubectl explain pod

# Mevcut pod'un YAML'ını gör
kubectl get pod nginx -o yaml

# YAML dosyasını uygula (create yerine, güncelleme yapabilir)
kubectl apply -f nginx-pod.yaml

Bu teknikleri kullanarak Kubernetes kaynaklarınızı daha verimli bir şekilde yönetebilirsiniz. Başarılar!

Bu Yazıyı Paylaş: