• 0216 210 0483
  • Küçükbakkalköy Mah. Çandarlı Sk No :7 Ekşioğlu Plaza Kat:3 Daire:18 Ataşehir/İSTANBUL
Kubernetes Production Ortamları İçin 10 Kritik Best Practice

Kubernetes Production Ortamları İçin 10 Kritik Best Practice

Kubernetes Production Ortamları İçin 10 Kritik Best Practice

Kubernetes production'a aldığınızda oyun değişiyor. Development'ta çalışan her şey production'da farklı sorunlara yol açabilir. 5+ yıldır enterprise Kubernetes deployment'ları yöneten ekibimizin deneyimlerinden 10 kritik best practice.

1. Resource Limits ve Requests Tanımlayın (Mutlaka!)

Pod'larınıza resource limit tanımlamadan production'a çıkmayın. Bir pod memory leak yaparsa tüm node'u çökertebilir.

resources:
  requests:
    memory: "256Mi"
    cpu: "250m"
  limits:
    memory: "512Mi"
    cpu: "500m"

Neden önemli? Resource requests scheduling için, limits ise runtime protection için. İkisini de tanımlamazsanız "noisy neighbor" sorunu yaşarsınız.

2. Liveness ve Readiness Probe'ları Doğru Yapılandırın

Application başlamadan önce readiness probe fail etmeli. Crash loop backoff'a girmemek için liveness probe'u dikkatli ayarlayın.

livenessProbe:
  httpGet:
    path: /healthz
    port: 8080
  initialDelaySeconds: 30
  periodSeconds: 10
readinessProbe:
  httpGet:
    path: /ready
    port: 8080
  initialDelaySeconds: 5
  periodSeconds: 5

Common hata: initialDelaySeconds çok kısa → Pod sürekli restart. Çok uzun → Slow rollout.

3. Pod Disruption Budget (PDB) Kullanın

Node maintenance sırasında tüm pod'larınız aynı anda gitmesin diye PDB şart.

apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
  name: myapp-pdb
spec:
  minAvailable: 2
  selector:
    matchLabels:
      app: myapp

4. Network Policies ile Mikro-Segmentasyon

Default Kubernetes davranışı: Tüm pod'lar birbirine erişebilir. Bu production'da güvenlik riski.

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: api-allow-frontend
spec:
  podSelector:
    matchLabels:
      app: api
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: frontend

5. Image Tag Olarak "latest" Kullanmayın

latest tag production'da disaster recipe. Her zaman semantic versioning kullanın: myapp:v1.2.3

Neden? Rollback imkansız. Hangi version çalıştığını bilmiyorsunuz. Farklı node'larda farklı image versiyonları olabilir.

6. Secrets Management - External Vault Kullanın

Kubernetes secrets base64 encoding, encryption değil! Production'da HashiCorp Vault, AWS Secrets Manager veya Azure Key Vault entegre edin.

Alternatif: Sealed Secrets (Bitnami), External Secrets Operator

7. Horizontal Pod Autoscaler (HPA) Yapılandırın

Traffic spike'larda manuel scale etmeyin. HPA ile otomatik ölçeklendirme:

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: myapp-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: myapp
  minReplicas: 3
  maxReplicas: 10
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 70

8. Logging ve Monitoring Stack Kurun

Minimum Stack:

  • Logging: Loki + Promtail (lightweight) veya ELK
  • Metrics: Prometheus + Grafana
  • Tracing: Jaeger veya Tempo
  • Alerts: Alertmanager → Slack/PagerDuty

Kural: "You can't improve what you can't measure."

9. RBAC ile Least Privilege Principle

Default ServiceAccount yerine her uygulama için özel ServiceAccount + Role:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: myapp-sa
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: myapp-role
rules:
- apiGroups: [""]
  resources: ["configmaps"]
  verbs: ["get", "list"]

10. GitOps ile Deployment - ArgoCD/Flux

kubectl apply production'da manuel yapılmamalı. Git = Single Source of Truth.

ArgoCD Benefits:

  • Declarative deployments
  • Automated sync
  • Rollback tek tık
  • Audit trail (kim ne deploy etti?)
  • Multi-cluster management

Bonus: Disaster Recovery Planınız Var mı?

Velero ile cluster backup:

  • Tüm Kubernetes resources
  • Persistent Volumes
  • Scheduled backups (günlük)
  • Cross-cluster/cross-cloud restore

Sonuç

Kubernetes production'da "set and forget" değil. Sürekli monitoring, tuning ve optimization gerekiyor. Devups olarak müşterilerimizin K8s production journey'sinde yanlarındayız.

Yardım lazımsa: Kubernetes assessment, migration, 7/24 managed services - iletişime geçin.