Kubernetes ile Sıfırdan Production Ortamı Kurulumu

Kubernetes, container orchestration dünyasının standartı haline geldi. Bu rehberde sıfırdan production-ready bir K8s cluster kurulumunu, Helm ile uygulama dağıtımını ve otomatik ölçeklendirme stratejilerini inceliyoruz.

Neden Kubernetes?

Kubernetes (K8s), container'ları otomatik olarak dağıtan, ölçeklendiren ve yöneten açık kaynaklı bir platformdur. Production ortamında size şunları sağlar:

Cluster Kurulumu

Managed vs Self-hosted

Production için managed Kubernetes servisleri (EKS, GKE, AKS) önerilir. Self-hosted kurulum için kubeadm veya k3s kullanılabilir.

# kubeadm ile master node kurulumu
sudo kubeadm init \
  --pod-network-cidr=10.244.0.0/16 \
  --control-plane-endpoint="k8s-api.novpix.com"

# kubectl yapılandırması
mkdir -p $HOME/.kube
sudo cp /etc/kubernetes/admin.conf $HOME/.kube/config

# CNI (Flannel) kurulumu
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml

Helm ile Uygulama Dağıtımı

Helm, Kubernetes için bir paket yöneticisidir. Chart'lar ile uygulamalarınızı şablon halinde tanımlayabilir ve tekrarlanabilir şekilde dağıtabilirsiniz.

# Helm chart oluşturma
helm create my-app

# values.yaml yapılandırması
image:
  repository: registry.novpix.com/api-server
  tag: "v1.2.0"
replicaCount: 3
resources:
  requests:
    cpu: 250m
    memory: 256Mi
  limits:
    cpu: 500m
    memory: 512Mi
autoscaling:
  enabled: true
  minReplicas: 3
  maxReplicas: 10
  targetCPUUtilizationPercentage: 70

Ingress Controller Yapılandırması

Dış trafiği cluster içindeki servislere yönlendirmek için bir Ingress controller gereklidir. Nginx Ingress Controller en yaygın tercihlerden biridir.

# Nginx Ingress Controller kurulumu
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm install ingress-nginx ingress-nginx/ingress-nginx \
  --namespace ingress-nginx --create-namespace

# Ingress tanımı
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: api-ingress
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
  tls:
    - hosts: [api.novpix.com]
      secretName: api-tls
  rules:
    - host: api.novpix.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: api-server
                port:
                  number: 80

HPA ile Otomatik Ölçeklendirme

Horizontal Pod Autoscaler (HPA), CPU veya bellek kullanımına göre pod sayısını otomatik artırır veya azaltır.

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

Production Checklist

Kubernetes güçlü bir araçtır ama karmaşıklığı da beraberinde getirir. Her zaman en basit çözümle başlayın ve ihtiyaç duydukça ölçeklendirin.

Sonuç

Kubernetes ile production ortamı kurmak dikkat ve planlama gerektirir. Managed servisler ile başlamak, Helm ile standart deployment'lar yapmak ve HPA ile otomatik ölçeklendirme sağlamak en sağlıklı yoldur.

novpix olarak Kubernetes cluster tasarımı, kurulumu ve yönetimi konusunda uçtan uca destek veriyoruz.

← Tüm yazılar