Flux ile Kubernetes Continuous Delivery Kurulumu (GitOps Rehberi)
Kubernetes tek başına CI/CD sunmaz.
Bu rehberde, GitOps yaklaşımı ile Kubernetes dağıtımlarını otomatik ve izlenebilir hale getireceksiniz.
Flux kullanarak Git deposunu tek doğruluk kaynağı yapacak ve tüm değişiklikleri kümeye otomatik uygulayacaksınız.
Bu Rehberde Ne Öğreneceksiniz?
- GitOps yaklaşımının Kubernetes’te nasıl çalıştığını
- Flux kurulumu ve GitHub ile entegrasyonu
- Uygulamaların otomatik dağıtımını
- Slack üzerinden anlık dağıtım bildirimleri almayı
- (Opsiyonel) Helm chart otomasyonu
Ön Gereksinimler
Başlamadan önce aşağıdakiler hazır olmalıdır:
- Kubernetes Kümesi: Kubectl yapılandırılmış (örn: Rabisu Kubernetes)
- GitHub Hesabı: Personal Access Token oluşturulmuş
- Slack Workspace: Webhook oluşturma yetkisi
- Yerel Ortam: Git ve kubectl kurulu
1. Flux Kurulumu ve Bootstrap İşlemi
Flux, GitOps tabanlı Continuous Delivery aracıdır.
Önce yerel makinenize kurulur, sonra kümeye bağlanır.
Flux Kurulumu
curl https://fluxcd.io/install.sh -so flux-install.sh
chmod +x flux-install.sh
./flux-install.sh
- Bu komut Flux CLI aracını sisteme kurar.
Otomatik tamamlama ekleyin:
echo ". <(flux completion bash)" >> ~/.bashrc
source ~/.bashrc
- Ön kontrolleri çalıştırın:
flux check --pre
- Bu komut Kubernetes sürüm uyumluluğunu kontrol eder.
2. Flux’u GitHub ile Kümenize Kurma (Bootstrap)
- Flux, yapılandırmasını Git deposunda tutar.
- Bu depo aynı zamanda dağıtımın tek kaynağıdır.
GitHub bilgilerinizi değişken olarak tanımlayın:
export GITHUB_USER=kullanici_adiniz
export GITHUB_TOKEN=github_tokeniniz
Bootstrap işlemini başlatın:
flux bootstrap github \
--owner=$GITHUB_USER \
--repository=flux-config \
--branch=main \
--path=./clusters/my-cluster \
--personal
- Bu işlem:
-
GitHub’da özel bir repo oluşturur
-
Flux bileşenlerini kümeye kurar
-
Git ile Kubernetes’i senkronize eder
3. Uygulama Dağıtımını Otomatize Etme
- Flux’un bir uygulamayı izlemesi için iki şeye ihtiyacı vardır:
-
GitRepository: Kaynağın nerede olduğu
-
Kustomization: Neyin deploy edileceği
Flux Konfigürasyon Deposunu Klonlama
git clone https://github.com/$GITHUB_USER/flux-config ~/flux-config
cd ~/flux-config
Kaynak Repo Tanımlama
flux create source git podinfo \
--url=https://github.com/$GITHUB_USER/podinfo \
--branch=master \
--interval=30s \
--export > ./clusters/my-cluster/podinfo-source.yaml
- Bu dosya, Flux’a hangi Git reposunu izleyeceğini söyler.
Kustomization Oluşturma
flux create kustomization podinfo \
--source=podinfo \
--path="./kustomize" \
--prune=true \
--interval=5m \
--export > ./clusters/my-cluster/podinfo-kustomization.yaml
- Bu yapı:
-
Kubernetes manifestlerini otomatik uygular
-
Manuel değişiklikleri geri alır
-
Git dışı müdahaleleri engeller
-
Dosyaları gönderin:
git add . && git commit -m "podinfo eklendi"
git push
4. Slack Bildirimlerini Ayarlama
-Flux, dağıtım olaylarını Slack’e gönderebilir.
Slack Webhook Secret Oluşturma
kubectl -n flux-system create secret generic slack-url \
--from-literal=address=SLACK_WEBHOOK_URL
- Bu komut Slack webhook adresini güvenli şekilde saklar.
Alert Provider Tanımlama
flux create alert-provider slack \
--type slack \
--channel general \
--secret-ref slack-url \
--export > ./clusters/my-cluster/slack-alert-provider.yaml
Alert Tanımı Oluşturma
flux create alert slack-alert \
--event-severity info \
--event-source Kustomization/* \
--provider-ref slack \
--export > ./clusters/my-cluster/slack-alert.yaml
Değişiklikleri gönderin:
git add . && git commit -m "Slack bildirimleri eklendi"
git push
- Artık her deploy Slack’e düşer 🔔
5. (Opsiyonel) Helm Chart Otomasyonu
- Flux, Helm chart’ları da izleyebilir.
Helm Repo Tanımlama
flux create source helm podinfo \
--url=https://stefanprodan.github.io/podinfo \
--interval=10m \
--export > ./clusters/my-cluster/podinfo-helm-repo.yaml
HelmRelease Oluşturma
flux create hr podinfo \
--source=HelmRepository/podinfo \
--chart=podinfo \
--target-namespace=podinfo-helm \
--export > ./clusters/my-cluster/podinfo-helm-chart.yaml
Namespace oluşturun ve push edin:
kubectl create namespace podinfo-helm
git add . && git commit -m "Helm chart eklendi" && git push
##Sıkça Sorulan Sorular (SSS)
1. Flux neden manuel değişiklikleri geri alıyor? GitOps mantığında Git tek doğruluk kaynağıdır.
2. Canlıda acil değişiklik yapabilir miyim? Evet, Kustomization suspend edilerek yapılabilir.
3. Flux CI yerine geçer mi? Hayır. Flux CD aracıdır, CI için Jenkins/GitHub Actions gerekir.
4. Slack yerine başka araç kullanabilir miyim? Evet. Teams, Discord ve webhook destekli tüm sistemler çalışır.
Sonuç
Flux ile Kubernetes dağıtımlarınızı tamamen Git tabanlı, izlenebilir ve geri alınabilir hale getirdiniz. Artık her commit otomatik deploy edilir ve tüm süreç kayıt altındadır.
Bu GitOps mimarisini Rabisu Bulut Kubernetes altyapısı üzerinde kurarak projelerinizi güvenle ölçekleyebilirsiniz 🚀