Skip to main content
DevOps

Kubernetes ve DevOps: Mikroservislerde Sürekli Teslimatın Pratik Rehberi

Mart 04, 2026 4 dk okuma 26 views Raw
Siyah Ve Gri Dizüstü Bilgisayar, Bilgisayar Kodlarını Yapmayı Açtı
İçindekiler

Kubernetes ve DevOps kültürü, mikroservis mimarilerinde sürekli teslimat (Continuous Delivery) süreçlerini güçlü, ölçeklenebilir ve güvenilir hale getirir. Bu rehberde pratik adımlar, en iyi uygulamalar ve araç önerileriyle, bir mikroservis uygulamasını Kubernetes üzerinde nasıl etkili şekilde sürekli teslimat akışına sokabileceğinizi öğreneceksiniz.

Neden Kubernetes + DevOps mikroservislerde tercih edilir?

Kubernetes, kapsayıcı tabanlı uygulamaların yönetimini standartlaştırır: otomatik ölçekleme, self-healing, servis keşfi ve dağıtık yapıların yönetimi gibi özellikler sağlar. DevOps ise yazılım geliştirme ve operasyonu birleştirerek hızlı, tekrar edilebilir ve güvenli teslimat süreçleri sunar. Bir arada kullanıldıklarında; deployment stratejileri, gözlemlenebilirlik, rollback ve altyapı yönetimi çok daha kontrol edilebilir hale gelir.

Pratik adım adım sürekli teslimat akışı

Aşağıda, mikroservis bazlı projeler için pratik ve uygulanabilir bir CD pipeline adım adım anlatımı yer almaktadır.

1. Kod ve konteyner hazırlığı

- Her mikroservisi ayrı bir repository veya monorepo içinde modüler olarak tutun.
- Dockerfile ile deterministik ve küçük imajlar oluşturun. Multi-stage build kullanın.
- Image etiketlendirmede immutable yaklaşımlar (commit hash, semver+build numarası) kullanın.

2. CI: Derleme, test ve güvenlik taramaları

- CI pipeline'ı unit test, lint, statik analiz (ör. SonarQube), bağımlılık taraması ve container scanning (Trivy, Snyk) aşamalarından geçirin.
- Başarılı olursa container imajını build edip registry (Docker Hub, ECR, GCR, ACR veya özel registry) üzerine push edin.

3. CD: GitOps veya klasik pipeline ile dağıtım

- GitOps (Argo CD, Flux) kullanıyorsanız: manifest dosyalarını (Helm chart, Kustomize veya raw YAML) bir Git repo içinde tutun. Argo/Flux otomatik olarak bu repo ile cluster'ı senkronize eder.
- Klasik CD için: Jenkins, GitLab CI, Tekton veya GitHub Actions ile image değişimini tespit edip kubectl/helm komutlarıyla güncelleme yapın.

4. Deployment stratejileri

- Rolling Update: Varsayılan ve çoğu senaryo için yeterli.
- Blue-Green: Kesintisiz geçiş ve hızlı rollback sağlar.
- Canary: Trafiğin küçük bir kısmını yeni versiyona yönlendirerek canlı test yapma imkanı verir. Istio veya Linkerd ile kolay uygulanır.

5. Konfigürasyon ve gizli veriler

- Kubernetes ConfigMap ile konfigürasyon, Secret ile hassas veriler yönetilsin. Ancak Secret'lar default olarak base64 ile kodlanır; güçlü bir çözüm için SealedSecrets, External Secrets Operator ya da HashiCorp Vault kullanın.

6. Güvenlik ve politika

- RBAC kuralları ile erişimi kısıtlayın.
- Pod Security Admission veya Open Policy Agent (Gatekeeper) ile deploy politikaları uygulayın (imaj kaynağı, uygunsuz yetkiler vs.).
- NetworkPolicy ile namespace seviyesinde mikroservisler arası iletişimi sınırlandırın.

7. Ölçekleme ve kaynak yönetimi

- Her pod için resource requests ve limits tanımlayın.
- Horizontal Pod Autoscaler (HPA) ile yük arttıkça otomatik ölçeklendirme kurun. Gerekirse Vertical Pod Autoscaler (VPA) veya cluster autoscaler kullanın.

8. Gözlemlenebilirlik: Logging, Monitoring, Tracing

- Metrics: Prometheus ile metrikleri toplayın, Grafana ile panolar oluşturun.
- Logging: Fluentd/Fluent Bit veya Filebeat ile merkezi log toplayıcıya (ELK/EFK) gönderin.
- Tracing: Jaeger veya Zipkin ile dağıtık takip yapın. Bu, özellikle latency veya hataları anlamada kritik.

Kubernetes'e özgü en iyi uygulamalar

  • Immutable deployment: Image tag yerine digest (sha256) kullanarak kesin bir versiyona deploy yapın.
  • Readiness ve Liveness probe'ları mutlaka tanımlayın; böylece Kubernetes doğru pod'lara trafiği yönlendirir.
  • Proaktif sağlık kontrolleri ve canary analizleri ile riskleri düşürün.
  • Manifest dosyalarını şablonlayın: Helm veya Kustomize ile environment-specific konfigürasyon yönetin.
  • Deployment’ları küçük ve sık yapın; büyük tek release yerine küçük iterasyonlar daha güvenlidir.

Aracı önerileri ve hangi durumda hangisi seçilmeli

  • CI: GitHub Actions, GitLab CI, Jenkins, Tekton - entegrasyon ve ekosistem tercihinize göre seçin.
  • CD/GitOps: Argo CD (popüler ve aktif), Flux (GitOps native).
  • Service Mesh: Istio (özellik zengin), Linkerd (hafif ve kolay).
  • Secrets: SealedSecrets, External Secrets Operator, HashiCorp Vault.
  • Observability: Prometheus + Grafana, ELK/EFK, Jaeger.

Test ve doğrulama stratejileri

- Unit test ve entegrasyon testleri CI içinde koşsun.
- Contract testing (Pact gibi) ile servisler arası sözleşmeler doğrulansın.
- Smoke test, canary denemesi ve otomatik rollback tetikleyicileri ile kırılgan deployların önüne geçin.
- Kaos mühendisliği (LitmusChaos, Chaos Mesh) ile üretim benzeri ortamlarda hata senaryolarını test edin.

Ölçülebilir başarı kriterleri (KPI'lar)

  • Lead time for changes (koddan üretime geçen süre)
  • Change failure rate (deploy hata oranı)
  • MTTR (Mean Time To Recovery)
  • Deployment sıklığı
  • Ortaya çıkan güvenlik açıklarının sayısı ve çözüm süresi

Adım adım kısa checklist (uygulamaya geçirirken)

  • Konteynerize etme ve küçük Docker imajları oluşturma
  • CI pipeline kurma (test + security scan)
  • Registry ve image tagging politikası belirleme
  • GitOps veya CD aracı seçimi ve manifestlerin versiyonlanması
  • Deployment stratejileri (canary/blue-green)
  • Monitoring, logging ve tracing kurulumu
  • Güvenlik politikaları ve secret yönetimi

Sonuç olarak, Kubernetes ve DevOps pratikleri mikroservislerin sürekli ve güvenli şekilde teslim edilmesini sağlar. Anahtar, otomasyonu mümkün olduğunca CI/CD süreçlerine yerleştirmek, gözlemlenebilirliği ve güvenliği ön planda tutmak ve küçük, sık, geri alınabilir deploylarla riski minimize etmektir. Bu rehberi kendi altyapınıza uyarlayarak adım adım ilerlerseniz, hem geliştirici hem operasyon ekipleri için sürdürülebilir bir teslimat kültürü oluşturabilirsiniz.

Bu yazıyı paylaş