Spring Boot ve Kubernetes ile CI/CD Süreçleri

CI/CD Nedir?
CI/CD, Continuous Integration (Sürekli Entegrasyon) ve Continuous Deployment (Sürekli Dağıtım) anlamına gelir. Bu süreçler, kod değişikliklerinin otomatik olarak entegrasyonunu, test edilmesini ve üretim ortamına dağıtılmasını sağlar. CI/CD, geliştirme sürecini hızlandırır ve hataları minimize eder.
Spring Boot ve Kubernetes ile CI/CD Süreci Kurma
Spring Boot ve Kubernetes ile CI/CD sürecini kurmak için Jenkins, GitLab CI, GitHub Actions gibi araçları kullanabilirsiniz. Bu yazıda, GitHub Actions kullanarak örnek bir CI/CD süreci oluşturacağız.
1. GitHub Repository Oluşturma
Öncelikle, Spring Boot projenizi barındıracak bir GitHub repository oluşturun.
2. GitHub Actions Workflow Dosyası Oluşturma
Projenizin ana dizininde .github/workflows
klasörü oluşturun ve bu klasörde ci-cd.yml
adında bir dosya oluşturun. Bu dosya, CI/CD süreçlerini tanımlayacaktır.
name: CI/CD Pipeline
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up JDK 17
uses: actions/setup-java@v2
with:
java-version: '17'
- name: Build with Maven
run: mvn clean install
- name: Build Docker image
run: docker build -t your-dockerhub-username/spring-boot-demo .
- name: Log in to Docker Hub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Push Docker image
run: docker push your-dockerhub-username/spring-boot-demo
deploy:
needs: build
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up kubectl
uses: azure/k8s-set-context@v1
with:
method: kubeconfig
kubeconfig: ${{ secrets.KUBECONFIG }}
- name: Deploy to Kubernetes
run: |
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
Bu workflow dosyası, kodunuzu build eder, Docker imajını oluşturur ve Docker Hub’a push eder. Ardından, Kubernetes cluster’ınıza dağıtır.
3. GitHub Secrets Ayarları
GitHub repository’nizde, gerekli secrets ayarlarını yapın. DOCKER_USERNAME
, DOCKER_PASSWORD
ve KUBECONFIG
secrets bilgilerini ekleyin.
4. Kubernetes Konfigürasyon Dosyaları
Projenizin ana dizininde deployment.yaml
ve service.yaml
dosyalarını oluşturun. Daha önce oluşturduğumuz dosyaları kullanabilirsiniz:
Deployment Konfigürasyonu (deployment.yaml
)
apiVersion: apps/v1
kind: Deployment
metadata:
name: spring-boot-demo
spec:
replicas: 3
selector:
matchLabels:
app: spring-boot-demo
template:
metadata:
labels:
app: spring-boot-demo
spec:
containers:
- name: spring-boot-demo
image: your-dockerhub-username/spring-boot-demo
ports:
- containerPort: 8080
Service Konfigürasyonu (service.yaml
)
apiVersion: v1
kind: Service
metadata:
name: spring-boot-demo
spec:
selector:
app: spring-boot-demo
ports:
- protocol: TCP
port: 80
targetPort: 8080
type: LoadBalancer
Sonuç
Bu makalede, Spring Boot ve Kubernetes ile CI/CD sürecini nasıl kuracağınızı öğrendiniz. Bu süreç, kod değişikliklerinizi otomatik olarak test eder, Docker imajını oluşturur ve Kubernetes cluster’ınıza dağıtır. Bir sonraki yazımızda, izleme ve loglama araçlarını kullanarak uygulamanızın sağlığını nasıl takip edebileceğinizi ele alacağız.