FluxCD Nedir ve Nasıl Kullanılır?

Berkehan Bendivar
5 min readFeb 12, 2025

--

FluxCD, Kubernetes için bir açık kaynaklı sürekli teslimat (CD) aracıdır ve GitOps felsefesiyle çalışır. Uygulama ve altyapı yapılandırmalarını Git depolarında tutarak, her değişikliği otomatik olarak izler ve Kubernetes kümelerine dağıtarak sürekli güncellemeler sağlar. FluxCD, uygulama dağıtım süreçlerini güvenli, şeffaf ve tekrarlanabilir hale getirir. Kullanıcılar, GitOps yaklaşımıyla uygulama güncellemelerini ve roll-out işlemlerini kolayca yönetebilir, hem küçük projelerde hem de büyük ölçekli sistemlerde yüksek verimlilik elde edebilir. Basit kurulumu ve esnek yapılandırma seçenekleriyle, FluxCD farklı ortamlarla uyumlu çalışabilir ve otomatikleştirilmiş süreçler sunar.

FluxCD Nedir?

FluxCD, Kubernetes tabanlı sürekli dağıtım (CD) süreçlerini yönetmek için kullanılan açık kaynaklı bir araçtır. GitOps felsefesine uygun çalışarak, Kubernetes cluster’larındaki kaynakların her zaman Git deposundaki tanımlı durumla uyumlu olmasını sağlar. FluxCD, özellikle Cloud Native Computing Foundation (CNCF) tarafından desteklenir ve modern Kubernetes uygulamaları için güçlü bir çözüm sunar.

Öne Çıkan Özellikler

  • Tam GitOps Desteği: Uygulama dağıtımlarını Git üzerinden yönetir.
  • Kolay İzlenebilirlik: Kubernetes cluster’larının durumunu ve geçmiş değişiklikleri Git’ten takip etme imkanı sağlar.
  • Sürekli Senkronizasyon: Kubernetes kaynaklarını sürekli olarak Git deposuyla uyumlu tutar.
  • Rollback Desteği: Önceki bir Git commit’ine kolayca geri dönmeyi sağlar.
  • Entegrasyonlar: Helm, Kustomize ve diğer Kubernetes araçları ile uyumludur.
  • Kaynak Verimliliği: Hafif, hızlı ve Kubernetes-native bir çözüm sunar.

FluxCD Hangi Uygulamalarda Kullanılır?

FluxCD, Kubernetes tabanlı projelerde şu durumlarda tercih edilir:

  1. GitOps Yönetimi: Kubernetes manifest dosyalarını Git üzerinden merkezi bir şekilde yönetir.
  2. Kubernetes Cluster Yönetimi: Kaynakları sürekli izler ve otomatik olarak Git ile senkronize eder.
  3. Çoklu Ortam Yönetimi: Geliştirme, test ve üretim ortamlarını ayrı Git dalları ile düzenler.
  4. Bulut Tabanlı Çözümler: AWS, Azure, GCP gibi platformlarla çalışan Kubernetes projelerinde kullanılır.
  5. Microservice Mimarileri: Birden fazla servis için merkezi bir yönetim sağlar.

FluxCD’nin Avantajları

1. Tam GitOps Desteği

FluxCD, Kubernetes kaynaklarını ve uygulama dağıtımlarını Git üzerinden kontrol eder.

2. Sürekli Senkronizasyon

Cluster’daki kaynakları Git deposundaki tanımlı durumla sürekli olarak eşitler.

3. Rollback Desteği

Hatalı bir dağıtım durumunda, uygulamayı kolayca önceki bir sürüme döndürebilirsiniz.

4. Helm ve Kustomize Entegrasyonu

Helm chart’larını ve Kustomize yapılandırmalarını destekler.

5. Kaynak Verimliliği

Hafif bir çözüm olması sayesinde kaynak tüketimini minimize eder.

FluxCD Kullanırken Nelere Dikkat Edilmeli?

  1. Git Yönetimi
    Manifest dosyalarının iyi organize edilmesi ve düzenli tutulması önemlidir.
  2. RBAC Yapılandırması
    Kullanıcı erişim izinlerini dikkatli bir şekilde yapılandırın.
  3. Cluster Kaynakları
    FluxCD’nin sürekli çalışması kaynak tüketimini artırabilir; özellikle büyük projelerde performans izleme yapılmalıdır.
  4. Manuel Değişikliklerden Kaçının
    Kubernetes cluster’ında manuel değişiklik yapılması durumunda, FluxCD bu değişiklikleri geri alabilir.

FluxCD Nasıl Kullanılır?

1. Temel Bileşenler

  • Source Controller: Git, Helm veya OCI tabanlı kaynakları izler.
  • Kustomize Controller: Kubernetes manifest dosyalarını yönetir ve uygular.
  • Helm Controller: Helm chart’larını yönetir ve dağıtır.
  • Notification Controller: Slack, Discord veya Microsoft Teams gibi araçlara bildirimler gönderir.

2. FluxCD Kurulumu

Adım 1: CLI Aracını Yükleme

FluxCD’nin CLI aracını yüklemek için:

curl -s https://fluxcd.io/install.sh | sudo bash

Adım 2: Namespace Oluşturma

FluxCD bileşenlerini ayrı bir namespace içinde çalıştırın:

kubectl create namespace flux-system

Adım 3: FluxCD Bileşenlerini Yükleme

flux install

3. FluxCD ile Git Deposunu Bağlama

Git Deposu Tanımlama

flux create source git my-app \

— url=https://github.com/my-org/my-app-repo.git \

— branch=main \

— interval=1m \

— export > git-source.yaml

Kustomize Uygulama Tanımlama

flux create kustomization my-app \

— target-namespace=default \

— source=GitRepository/my-app \

— path=”./manifests” \

— prune=true \

— interval=1m \

— export > kustomization.yaml

Manifest Dosyalarını Uygulama

kubectl apply -f git-source.yaml

kubectl apply -f kustomization.yaml

4. Kullanım Örnekleri

Örnek 1: Basit Bir Kubernetes Uygulaması

Git deposuna aşağıdaki deployment.yaml dosyasını eklediğinizde FluxCD bu dosyayı Kubernetes cluster’ınıza uygular:

apiVersion: apps/v1

kind: Deployment

metadata:

name: nginx-deployment

labels:

app: nginx

spec:

replicas: 2

selector:

matchLabels:

app: nginx

template:

metadata:

labels:

app: nginx

spec:

containers:

- name: nginx

image: nginx:1.21

ports:

- containerPort: 80

Örnek 2: Helm Chart Dağıtımı

Helm chart’ını FluxCD ile dağıtmak için:

flux create source helm my-helm-repo \

— url=https://charts.bitnami.com/bitnami \

— interval=1m

flux create helmrelease my-helm-app \

— source=HelmRepository/my-helm-repo \

— chart=nginx \

— release-name=my-nginx \

— target-namespace=default \

— interval=1m \

— export > helm-release.yaml

FluxCD için arayüz: Weave GitOps

Adım 1: Weave GitOps’un Helm Chart’ını Ekleyin

Weave GitOps’un Helm Chart’ını repository’e eklemek için aşağıdaki komutu çalıştırın:

helm repo add weave-gitops https://weaveworks.github.io/weave-gitops
helm repo update

Adım 2: Weave GitOps’u Yükleyin

Weave GitOps’un FluxCD ile entegre bir şekilde çalışabilmesi için Helm Chart’ı kullanarak yükleme yapıyoruz. Aşağıdaki komut Weave GitOps Core bileşenlerini yükler:

helm install weave-gitops weave-gitops/weave-gitops \
— namespace flux-system \
— create-namespace

  • --namespace flux-system: FluxCD'nin genelde kurulu olduğu namespace. Eğer FluxCD başka bir namespace'de yüklüyse, bunu değiştirin.
  • --create-namespace: Namespace yoksa otomatik oluşturur.

Adım 3: Weave GitOps Dashboard’u Erişime Açın

Weave GitOps’un bir web arayüzü (dashboard) vardır. Dashboard’u erişime açmak için aşağıdaki komutu çalıştırabilirsiniz:

kubectl port-forward svc/weave-gitops 9001:9001 -n flux-system

Bu komut ile Weave GitOps Dashboard’u yerel makinenizde 9001 portundan erişilebilir hale gelir. Tarayıcınızda şu URL’yi ziyaret edin:

http://localhost:9001/

Adım 4: Weave GitOps Dashboard’a Giriş Yapın

  1. Dashboard açıldığında sizden kimlik doğrulama isteyebilir.
  2. Kubernetes cluster’ınızdaki default-token bilgisiyle giriş yapabilirsiniz. Bu token’ı almak için şu komutu kullanabilirsiniz:

kubectl get secret -n flux-system

  1. Ardından kubectl describe secret <secret-ismi> ile token'ı alabilirsiniz.

Adım 5: FluxCD ve GitOps Yönetimi

Weave GitOps Dashboard üzerinden:

  • Uygulamaların durumu kontrol edilebilir.
  • Git repository’leri FluxCD’ye bağlanabilir.
  • Canlı olarak senkronizasyon ve hata durumları izlenebilir.

Adım 6: Weave GitOps CLI (Opsiyonel)

Weave GitOps’un CLI aracını da yükleyerek komut satırı üzerinden işlemlerinizi kolaylaştırabilirsiniz:

curl -s https://dl.weave.works/gitops-core/osx-arm64 | sudo install /usr/local/bin/gitops

CLI kullanımı için:

gitops run

FluxCD Kullanırken Dikkat Edilmesi Gerekenler

  1. Gizli Bilgilerin Yönetimi
    Secrets ve ConfigMaps gibi hassas bilgilerin doğru bir şekilde şifrelenmesi önemlidir.
  2. Git Deposu Organizasyonu
    Manifest dosyalarını ve Helm chart’larını ayrı dizinlerde düzenleyerek yönetilebilirlik sağlayın.
  3. Performans İzleme
    Kubernetes kaynak kullanımını sürekli izleyerek optimize edin.
  4. Git Commit Süreçleri
    Commit mesajlarını net ve anlaşılır yaparak olası karışıklıkları önleyin.

FluxCD, Kubernetes tabanlı projeler için güçlü bir GitOps çözümüdür. Kubernetes manifest dosyalarını ve Helm chart’larını otomatik olarak senkronize ederek uygulama dağıtım süreçlerini basitleştirir.

FluxCD, modern Kubernetes projelerinde dağıtımları otomatize etmek, güvenilirliği artırmak ve operasyonel süreçleri optimize etmek için etkili bir araçtır. Git’i merkezde tutarak uygulama yönetimini kolaylaştırabilirsiniz.

Bir sonraki makalede farklı bir konuyu ele alacağız. Sorularınız veya önerileriniz varsa yorum yapmayı unutmayın! 😊

--

--

No responses yet