Giriş
Modern yazılım geliştirme süreçlerinde Docker ve Kubernetes, uygulamaların bulut ortamlarında verimli ve ölçeklenebilir bir şekilde çalışmasını sağlayan temel teknolojiler haline gelmiştir. Docker, uygulamaları kapsayıcılara (container) yerleştirerek taşınabilir ve tutarlı bir çalışma ortamı sunarken, Kubernetes, bu kapsayıcıları yönetmek ve otomatikleştirmek için kullanılan güçlü bir orkestrasyon sistemidir. Bu yazıda, bulut sunucularında Docker ve Kubernetes kullanarak uygulama dağıtımının nasıl gerçekleştirileceğini adım adım ele alacağız.
1. Docker ve Kubernetes Nedir?
Docker
Docker, yazılım uygulamalarını kapsayıcılar içinde çalıştıran açık kaynaklı bir platformdur. Kapsayıcılar, uygulama kodu ve bağımlılıklarını içeren izole edilmiş çalışma ortamlarıdır. Böylece, uygulamalar farklı ortamlarda aynı şekilde çalışabilir.
Docker’ın Avantajları:
- Hafif ve taşınabilir kapsayıcı yapısı
- Çevik ve hızlı dağıtım
- Bağımlılık yönetimi kolaylığı
Kubernetes
Kubernetes (K8s), kapsayıcıların yönetimini otomatikleştiren bir orkestrasyon platformudur. Büyük ölçekli uygulamaların yüksek erişilebilirlik ve esneklikle yönetilmesini sağlar.
Kubernetes’in Avantajları:
- Otomatik ölçeklendirme
- Yük dengeleme ve hata toleransı
- Servis keşfi ve ağ yönetimi
2. Bulut Sunucuda Docker ve Kubernetes Kurulumu
Docker Kurulumu
- Sunucuyu Güncelleyin:
sudo apt update && sudo apt upgrade -y
2. Docker’ı Yükleyin:
sudo apt install docker.io -y
3. Docker Servisini Başlatın ve Etkinleştirin:
sudo systemctl start docker
sudo systemctl enable docker
4. Docker Kurulumunu Doğrulayın:
docker --version
Kubernetes Kurulumu
Kubernetes’in temel bileşenlerini içeren minikube veya kubeadm kullanılabilir.
- Kubernetes Paketlerini Kurun:
sudo apt install -y kubelet kubeadm kubectl
2. Kubernetes Kümesini Başlatın:
sudo kubeadm init
3. Kubeconfig Ayarlarını Yapın:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
4. İlk Node’u Kümeye Ekleyin:
kubeadm token create --print-join-command
5. Kubernetes Kümesini Kontrol Edin:
kubectl get nodes
3. Docker Kapsayıcısı ile Uygulama Dağıtımı
Docker kapsayıcıları kullanarak uygulamanızı çalıştırmak için şu adımları takip edebilirsiniz:
- Dockerfile Oluşturun:
FROM node:18
WORKDIR /app
COPY . .
RUN npm install
CMD ["node", "app.js"]
2. Docker İmajı Oluşturun:
docker build -t myapp .
3 . Kapsayıcıyı Çalıştırın:
docker run -d -p 8080:8080 myapp
4. Çalışan Kapsayıcıları Kontrol Edin:
docker ps
4. Kubernetes ile Uygulama Yönetimi
Docker kapsayıcılarını Kubernetes üzerinde çalıştırmak için Deployment ve Service nesneleri kullanılır.
Deployment Dosyası (deployment.yaml)
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp-deployment
spec:
replicas: 2
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp
image: myapp
ports:
- containerPort: 8080
Service Dosyası (service.yaml)
apiVersion: v1
kind: Service
metadata:
name: myapp-service
spec:
selector:
app: myapp
- ports: protocol: TCP
port: 80
targetPort: 8080
type: LoadBalancer
Komutları çalıştırarak Kubernetes ortamına uygulamanızı dağıtabilirsiniz:
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
Uygulamanızın durumu için şu komutları kullanabilirsiniz:
kubectl get pods
kubectl get services
5. Sonuç
Docker ve Kubernetes, bulut sunucularda ölçeklenebilir ve yönetilebilir uygulama dağıtımı için güçlü araçlardır. Docker ile uygulamalarınızı kapsayıcılara alabilir, Kubernetes ile bunları otomatik ölçekleyebilir ve yönetebilirsiniz. Bu süreç, uygulamalarınızın kesintisiz çalışmasını sağlar ve sistem kaynaklarını verimli kullanmanıza olanak tanır.