DevOps and Infrastructure

Otomatik Altyapı Sağlama için Argo CD ve Flux ile GitOps Uygulamalarını Uygulama

Modern yazılım geliştirme ekipleri operasyonlarını ölçeklendirdikçe, güvenilir, otomatik altyapı sağlama ihtiyacının önemi artmıştır. GitOps, altyapı ve uygulama dağıtımları için tek doğruluk kaynağı olarak Git'i kullanan bir yöntemdir ve karmaşık Kubernetes ortamlarını yönetmek için altın standart haline gelmiştir. Bu blog gönderisi, iki güçlü açık kaynak aracı olan Argo CD ve Flux kullanarak GitOps uygulamalarını nasıl uygulayacağımızı incelemektedir.

GitOps Temellerini Anlamak

GitOps, altyapı ve uygulama yapılandırmaları için doğruluk kaynağını Git olarak kullanan bir dizi uygulamadır. Temel prensip, tüm altyapı değişikliklerinin bildirimsel, sürüm kontrolü altında ve Git iş akışları aracılığıyla otomatik olmasıdır. Bu yaklaşım, ortamlar arasında tutarlılığı, denetlenebilirliği ve geri dönüş yeteneklerini sağlar.

GitOps uygularken, Git'te depolanan istenen durumun gerçek küme durumuyla sürekli karşılaştırıldığı ve herhangi bir uyuşmazlığın otomatik olarak çözüldüğü bir senkronizasyon döngüsü kurarız.

Argo CD'ye Giriş

Argo CD, Kubernetes için bildirimsel, GitOps sürekli dağıtım aracıdır. GitOps prensibini uygulayarak Git depolarını izleyerek küme durumunu istenen yapılandırmayla otomatik olarak senkronize eder.

# Örnek Argo CD Uygulama bildirimi
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/myorg/my-app.git
    targetRevision: HEAD
    path: k8s
  destination:
    server: https://kubernetes.default.svc
    namespace: my-app
  syncPolicy:
    automated:
      prune: true
      selfHeal: true

Argo CD ile, Kubernetes bildirimlerini içeren Git depoları olarak uygulamalar tanımlayabilir ve bu yapılandırmaları otomatik olarak dağıtır ve korur.

Flux: Alternatif Bir GitOps Yaklaşımı

Flux, Kubernetes için popüler bir başka GitOps aracıdır ve senkronizasyon konusunda farklı bir yaklaşım sunar. Argo CD'nin push tabanlı modelinden farklı olarak, Flux, kümenin Git'ten yapılandırma güncellemelerini aktif olarak talep ettiği bir çekme tabanlı yaklaşımı kullanır.

# Flux kaynak tanımı
apiVersion: source.toolkit.fluxcd.io/v1beta1
kind: GitRepository
metadata:
  name: my-app
  namespace: flux-system
spec:
  interval: 1m0s
  url: https://github.com/myorg/my-app.git
  ref:
    branch: main

Flux, GitOps için daha dağıtık bir yaklaşım sunarak birden fazla küme ve ortamda yapılandırmaları daha kolay yönetmeyi sağlar.

GitOps Ortamınızı Kurma

Herhangi bir aracı uygulamadan önce, sorunları ayıran bir Git deposu yapısı kurmanız gerekir:

# Tipik GitOps deposu yapısı
├── apps/
│   ├── production/
│   │   └── my-app.yaml
│   └── staging/
│       └── my-app.yaml
├── infrastructure/
│   ├── base/
│   └── overlays/
└── kustomize/

Argo CD ve Flux, Kustomize, Helm chart'ları veya düz Kubernetes bildirimleriyle iyi çalışır. Anahtar, ortamların kolay yönetilebilmesini sağlayan tutarlı bir yapı sürdürmektir.

Pratik Uygulama Örneği

GitOps ilkelerini kullanarak bir mikro hizmet uygulaması dağıttığımız gerçek bir senaryoyu düşünelim:

# Üretim ortamı yapılandırması
apiVersion: v1
kind: Service
metadata:
  name: my-app-service
spec:
  selector:
    app: my-app
  ports:
    - port: 80
      targetPort: 8080
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: app
        image: myorg/my-app:1.2.3
        ports:
        - containerPort: 8080

Bu yapılandırmayı Git deposunuzda tutarak, hem Argo CD hem de Flux, üretim kümenizin bu yapılandırmayı koruyacağını ve herhangi bir sapmayı otomatik olarak algılayıp düzelttiğini garanti eder.

En İyi Uygulamalar ve Dikkat Edilmesi Gerekenler

GitOps'u başarılı bir şekilde uygulamak birkaç temel uygulamaya dikkat etmeyi gerektirir:

  • Tüm altyapı değişiklikleri için pull request kullanarak ekip değerlendirmesini etkinleştirin
  • Uygun dal stratejileri (özellik dalları, sürüm dalları) uygulayın
  • Otomatik test ve doğrulama için Git hook'larını kullanın
  • GitOps araçlarınız için uygun RBAC politikalarını yapılandırın
  • GitOps işlemleri için izleme ve uyarı kurulumu yapın

Sonuç

Argo CD ve Flux ile GitOps, otomatik altyapı sağlama ve dağıtım yönetimi için sağlam bir temel sağlar. Her iki araç da benzersiz avantajlar sunar: Argo CD, görsel yönetim ve senkronizasyonda üstünlük sağlarken, Flux yapılandırma yönetimi konusunda daha merkezi olmayan bir yaklaşım sunar. Bu uygulamaları uygulayarak, geliştirme ekipleri daha güvenilir, daha hızlı dağıtım döngüleri ve Kubernetes ortamlarında daha iyi operasyonel tutarlılık elde edebilirler.

Altyapı karmaşıklığı arttıkça, GitOps dağıtım süreçleriniz üzerinde kontrolü korumak açısından giderek daha değerli hale gelir. Argo CD, Flux ya da her ikisini birlikte seçtiğinizde, anahtar, açık süreçler kurmak ve organizasyonunuzun GitOps iş akışında tutarlı uygulamaları sürdürmektir.

Share: