Projenizi Dockerize Ederek Kubernetes Ortamına Taşıma Rehberi
Modern DevOps süreçlerinde uygulamaların Docker ile containerize edilmesi ve ardından Kubernetes ortamına deploy edilmesi artık standart hale gelmiştir. Bu rehberde bir projeyi adım adım Dockerize edip Kubernetes cluster’a nasıl taşıyacağınızı gösteriyoruz.
Eğer Docker temelini öğrenmek istiyorsanız önce Docker Nedir? rehberine göz atabilirsiniz.
🔧 Dockerize Süreci: Adım Adım
Adım 1: Dockerfile Oluşturma
Dockerfile, bir Docker imajının nasıl oluşturulacağını belirleyen temel dosyadır. Bağımlılıkların yüklenmesi ve uygulamanın nasıl çalıştırılacağı burada tanımlanır.
Spring Boot Örneği
FROM eclipse-temurin:17-jdk-alpine
WORKDIR /app
COPY target/uygulama.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]
Not: Alpine tabanlı imaj kullanmak image boyutunu küçültür.
Adım 2: Docker Build ve İmaj Oluşturma
docker build -t benim-projem:1.0 .
Oluşturulan imajları kontrol etmek için:
docker images
Container çalıştırma testi:
docker run -p 8080:8080 benim-projem:1.0
Adım 3: Docker Registry’ye İmaj Yükleme
İmajınızı Docker Hub veya özel bir registry’ye göndermeniz gerekir.
docker login
docker tag benim-projem:1.0 kullanici_adi/benim-projem:1.0
docker push kullanici_adi/benim-projem:1.0
CI/CD süreçlerinde bu adım genellikle otomatik yapılır.
Adım 4: Kubernetes Deployment YAML Oluşturma
Şimdi uygulamamızı Kubernetes cluster’a deploy ediyoruz.
apiVersion: apps/v1
kind: Deployment
metadata:
name: benim-projem-deployment
spec:
replicas: 3
selector:
matchLabels:
app: benim-projem
template:
metadata:
labels:
app: benim-projem
spec:
containers:
- name: benim-projem
image: kullanici_adi/benim-projem:1.0
ports:
- containerPort: 8080
Adım 5: Kubernetes Cluster’a Deploy
kubectl apply -f deployment.yaml
Pod durumunu kontrol et:
kubectl get pods
Servis oluştur:
kubectl expose deployment benim-projem-deployment \
--type=LoadBalancer --port=80 --target-port=8080
Servisleri listele:
kubectl get svc
Production İçin Önemli İyileştirmeler
- Readiness ve Liveness probe ekleyin
- Resource limit (CPU/Memory) tanımlayın
- ConfigMap ve Secret kullanın
- Horizontal Pod Autoscaler yapılandırın
resources:
requests:
memory: "256Mi"
cpu: "200m"
limits:
memory: "512Mi"
cpu: "500m"
Docker + Kubernetes Akış Şeması
Kod
↓
Dockerfile
↓
Docker Image
↓
Docker Registry
↓
Kubernetes Deployment
↓
Pod → Service → LoadBalancer
🎯 Sonuç
Bu rehberde bir uygulamanın nasıl Dockerize edilip Docker Registry’ye yükleneceğini ve Kubernetes ortamına deploy edileceğini adım adım gördük.
Bir sonraki adım olarak: GitHub Actions ile otomatik Docker deploy rehberine geçebilirsiniz.