Takip et

Argo CD ve EKS Entegrasyonu: AWS Ortamında GitOps’a Başlangıç

Argo CD ve EKS Entegrasyonu: AWS Ortamında GitOps’a Başlangıç Günümüzün hızlı tempolu yazılım geliştirme dünyasında, uygulamaların hızlı, …

Argo CD ve EKS Entegrasyonu: AWS Ortamında GitOps’a Başlangıç

Günümüzün hızlı tempolu yazılım geliştirme dünyasında, uygulamaların hızlı, güvenilir ve tekrarlanabilir bir şekilde dağıtılması kritik öneme sahiptir. GitOps, bu zorluklara çözüm sunan güçlü bir paradigma olarak öne çıkarken, Argo CD ve AWS EKS (Elastic Kubernetes Service) bu felsefeyi hayata geçirmek için mükemmel bir ikili oluşturur. Bu makale, Argo CD’yi EKS üzerinde nasıl kuracağınızı ve GitOps prensiplerini AWS bulut ortamınızda nasıl uygulayacağınızı adım adım açıklayacaktır.

GitOps ve Argo CD Nedir?

GitOps, uygulamaların ve altyapının dağıtımını otomatikleştirmek için Git’i tek doğruluk kaynağı olarak kullanan bir operasyonel çerçevedir. Bu yaklaşım, dağıtımları daha şeffaf, denetlenebilir ve güvenilir hale getirir. Argo CD ise, GitOps prensiplerini Kubernetes ortamında uygulamak için tasarlanmış deklaratif, Git tabanlı bir sürekli dağıtım (CD) aracıdır. Kubernetes manifestlerini, Helm grafiklerini veya Kustomize yapılandırmalarını bir Git deposundan otomatik olarak senkronize ederek kümedeki gerçek durumu, Git’teki beklenen durumla eşleştirir.

GitOps Felsefesi

GitOps, tüm sistemin istenen durumunu Git’te depolayarak, bu durumu otomatik olarak hedef ortama uygulayan bir süreçtir. Bu, geliştiricilerin Git’e kod göndermesiyle başlayan ve uygulamanın üretim ortamında çalışır duruma gelmesiyle sonuçlanan uçtan uca bir otomasyon sağlar. Git’in sürüm kontrolü, geri alma yetenekleri ve işbirliği özellikleri, GitOps’un temelini oluşturur. Bu sayede, herhangi bir zamanda sistemin geçmiş durumuna dönmek veya değişiklikleri denetlemek çok daha kolay hale gelir.

Argo CD’nin Rolü

Argo CD, Kubernetes kümenizdeki uygulamaların durumunu sürekli olarak izler ve Git deposundaki yapılandırma ile karşılaştırır. Herhangi bir sapma tespit ettiğinde (örneğin, birisi kümedeki bir kaynağı manuel olarak değiştirdiğinde), Argo CD bu durumu rapor eder ve isteğe bağlı olarak Git’teki beklenen duruma geri döndürebilir. Bu “drift detection” özelliği, küme yapılandırmasının tutarlılığını ve güvenliğini sağlamak için hayati öneme sahiptir. Argo CD, kullanıcı dostu bir web arayüzü ve güçlü bir CLI ile gelir, bu da uygulama yönetimi ve izlemesini oldukça kolaylaştırır.

EKS ve Yönetilen Kubernetes

AWS Elastic Kubernetes Service (EKS), AWS bulutunda Kubernetes kümelerini dağıtmak, yönetmek ve ölçeklendirmek için kullanılan yönetilen bir hizmettir. EKS, Kubernetes kontrol düzleminin yüksek erişilebilirliğini ve güvenliğini AWS’nin yönetmesine olanak tanırken, kullanıcıların yalnızca çalışan düğümleri yönetmesini gerektirir. Bu, operasyonel yükü azaltır ve ekiplerin uygulamalarına odaklanmasını sağlar. EKS’nin AWS ekosistemiyle derin entegrasyonu (IAM, VPC, ELB vb.) sayesinde, güvenli ve ölçeklenebilir Kubernetes ortamları oluşturmak oldukça basittir.

Neden Argo CD ve EKS Birlikte Kullanılmalı?

Argo CD ve EKS’nin birleşimi, modern bulut yerel uygulamaların dağıtımı ve yönetimi için güçlü, ölçeklenebilir ve güvenilir bir platform sunar. Bu entegrasyon, geliştirme ekiplerinin verimliliğini artırırken, operasyonel riskleri minimize eder.

Otomatik Dağıtım ve Senkronizasyon

Argo CD, Git deposundaki değişiklikleri algıladığında uygulamalarınızı EKS kümenize otomatik olarak dağıtabilir veya güncelleyebilir. Bu otomasyon, manuel hataları ortadan kaldırır ve dağıtım süreçlerini hızlandırır. Git’teki her commit, potansiyel bir dağıtım tetikleyicisi haline gelir, bu da sürekli entegrasyon ve sürekli dağıtım (CI/CD) boru hatlarının sorunsuz bir şekilde entegre edilmesini sağlar.

Güvenilirlik ve Geri Alma Kolaylığı

GitOps yaklaşımı sayesinde, tüm uygulama yapılandırmalarınız Git’te sürüm kontrolü altındadır. Bu, herhangi bir sorun durumunda uygulamanın önceki çalışan bir sürümüne kolayca geri dönmenizi sağlar. Argo CD’nin “drift detection” özelliği, kümedeki beklenmeyen değişiklikleri tespit ederek sistemin her zaman Git’teki istenen durumda kalmasını garanti eder. Bu, üretim ortamlarının güvenilirliğini artırır ve arıza sürelerini azaltır.

Ölçeklenebilirlik ve Yönetim Kolaylığı

EKS, AWS’nin sağlam altyapısı üzerinde yüksek oranda ölçeklenebilir Kubernetes kümeleri sunar. Argo CD ile birlikte kullanıldığında, birden fazla EKS kümesini tek bir Argo CD örneği üzerinden yönetmek mümkündür. Bu, farklı ortamlar (geliştirme, test, üretim) veya farklı coğrafi bölgelerdeki kümeler için merkezi bir dağıtım kontrol noktası sağlar. Yönetim kolaylığı, ekiplerin altyapı yerine uygulama geliştirmeye odaklanmasına olanak tanır.

Ön Gereksinimler ve Kurulum Adımları

Argo CD’yi EKS üzerine kurmaya başlamadan önce bazı temel araçlara ve yapılandırmalara ihtiyacımız var.

AWS Hesabı ve CLI Yapılandırması

Öncelikle aktif bir AWS hesabına ve AWS CLI’ın sisteminizde kurulu ve yapılandırılmış olmasına ihtiyacınız var. AWS CLI’ı yapılandırırken, EKS kümesini oluşturmak ve yönetmek için gerekli izinlere sahip bir IAM kullanıcısı veya rolü kullandığınızdan emin olun.

aws configure
# AWS Access Key ID: AKIA...
# AWS Secret Access Key: ...
# Default region name: eu-central-1 (veya tercih ettiğiniz bölge)
# Default output format: json

EKS Kümesi Oluşturma

EKS kümesi oluşturmak için eksctl aracını kullanmak en kolay yoldur. eksctl, EKS kümelerini yönetmek için basit bir CLI aracıdır. Eğer kurulu değilse, kurmanız gerekir.

# eksctl kurulumu (macOS örneği)
brew install eksctl

# EKS kümesi oluşturma (yaklaşık 15-20 dakika sürebilir)
eksctl create cluster \
  --name argo-cd-eks-cluster \
  --region eu-central-1 \
  --version 1.28 \
  --nodegroup-name argo-cd-nodes \
  --node-type t3.medium \
  --nodes 2 \
  --nodes-min 1 \
  --nodes-max 3 \
  --managed


Bu komut, argo-cd-eks-cluster adında, eu-central-1 bölgesinde, 1.28 sürümünde, iki adet t3.medium düğüme sahip bir EKS kümesi oluşturacaktır.

kubectl ve Helm Kurulumu

Kubernetes kümesiyle etkileşim kurmak için kubectl'e ve Argo CD'yi dağıtmak için Helm'e ihtiyacınız olacak.

# kubectl kurulumu (macOS örneği)
brew install kubernetes-cli

# Helm kurulumu (macOS örneği)
brew install helm

# kubectl'in EKS kümenizi tanıdığından emin olun
aws eks update-kubeconfig --name argo-cd-eks-cluster --region eu-central-1
kubectl get nodes

Argo CD'yi EKS Üzerine Kurulumu

Ön gereksinimler tamamlandıktan sonra, Argo CD'yi EKS kümenize kurmaya başlayabiliriz.

Argo CD Namespace Oluşturma

Argo CD'nin kendi kaynaklarını diğer sistem kaynaklarından izole etmek için ayrı bir Kubernetes namespace'i oluşturmak iyi bir pratiktir.

kubectl create namespace argocd

Helm ile Argo CD Kurulumu

Argo CD'yi Helm kullanarak kurmak en yaygın ve önerilen yöntemdir. Bu, yapılandırma ve güncellemeleri kolaylaştırır.

# Argo CD Helm deposunu ekleyin
helm repo add argo https://argoproj.github.io/argo-helm
helm repo update

# Argo CD'yi argocd namespace'ine kurun
helm install argocd argo/argo-cd --namespace argocd


Kurulum tamamlandıktan sonra, Argo CD pod'larının çalışır durumda olduğunu kontrol edebilirsiniz:

kubectl get pods -n argocd


Tüm pod'ların Running durumunda olduğundan emin olun.

Argo CD UI'a Erişim

Argo CD'nin web arayüzüne erişmek için argocd-server servisini dışarıya açmanız gerekir. Bunu bir LoadBalancer veya Port-Forwarding ile yapabilirsiniz. Geliştirme veya test ortamları için port-forwarding yeterlidir.

# Argo CD UI'a port-forwarding ile erişim
kubectl port-forward svc/argocd-server -n argocd 8080:443


Şimdi tarayıcınızdan https://localhost:8080 adresine giderek Argo CD UI'a erişebilirsiniz.

İlk giriş için kullanıcı adı admin'dir. Parolayı almak için aşağıdaki komutu kullanın:

kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d


Giriş yaptıktan sonra, güvenlik için admin parolasını değiştirmeniz önerilir.

İlk Uygulamanızı Dağıtma

Argo CD'yi kurduktan sonra, bir Git deposundan ilk uygulamanızı dağıtmaya hazırsınız.

Git Deposu Hazırlama

Öncelikle, dağıtmak istediğiniz uygulamanın Kubernetes manifestlerini içeren bir Git deposuna ihtiyacınız var. Basit bir Nginx dağıtımı için örnek bir Git deposu oluşturalım:

# my-app-repo/nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80
---
# my-app-repo/nginx-service.yaml
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  type: LoadBalancer


Bu dosyaları bir Git deposuna (örneğin GitHub, GitLab, Bitbucket) yükleyin. Örneğin, https://github.com/kullaniciadi/my-app-repo.git adresinde.

Argo CD'de Uygulama Tanımlama

Argo CD UI'ı kullanarak veya argocd CLI ile yeni bir uygulama tanımlayabilirsiniz.

Argo CD UI ile:
1. Argo CD UI'a giriş yapın.
2. Sol menüden "Applications" seçeneğine tıklayın.
3. "New App" düğmesine tıklayın.
4. Aşağıdaki bilgileri doldurun:
* Application Name: my-nginx-app
* Project: default
* Sync Policy: Automatic (veya Manual tercih edebilirsiniz)
* Repository URL: https://github.com/kullaniciadi/my-app-repo.git (kendi depo URL'nizi girin)
* Revision: HEAD
* Path: . (manifest dosyalarınız deponun kök dizinindeyse)
* Cluster: in-cluster (veya kümenizin adı)
* Namespace: default (veya uygulamanızı dağıtmak istediğiniz namespace)
5. "CREATE" düğmesine tıklayın.

CLI ile:

argocd app create my-nginx-app \
  --repo https://github.com/kullaniciadi/my-app-repo.git \
  --path . \
  --dest-server https://kubernetes.default.svc \
  --dest-namespace default \
  --sync-policy automatic


argocd login komutu ile Argo CD CLI'a giriş yapmanız gerekebilir.

Uygulama Senkronizasyonu ve Durum Takibi

Uygulama oluşturulduktan sonra, Argo CD otomatik olarak Git deposundaki manifestleri EKS kümenize senkronize etmeye başlayacaktır (eğer otomatik senkronizasyon seçtiyseniz). Argo CD UI'da uygulamanızın durumunu, dağıtılan kaynakları ve senkronizasyon sağlığını görsel olarak takip edebilirsiniz.

* OutOfSync: Git'teki durum ile kümedeki durum farklı.
* Synced: Git'teki durum ile kümedeki durum aynı.
* Healthy: Uygulama düzgün çalışıyor.
* Degraded: Uygulama sorunlu.

Argo CD, OutOfSync durumunu algıladığında, otomatik senkronizasyon açıksa kümedeki durumu Git'teki duruma göre düzeltir. Eğer manuel senkronizasyon seçtiyseniz, UI üzerinden "Sync" düğmesine tıklayarak senkronizasyonu tetikleyebilirsiniz.

# Uygulamanın durumunu CLI ile kontrol edin
argocd app get my-nginx-app

# Uygulamayı senkronize edin (eğer otomatik senkronizasyon kapalıysa)
argocd app sync my-nginx-app


Birkaç dakika sonra, Nginx uygulamanızın EKS kümenizde çalıştığını ve bir LoadBalancer IP'si aldığını göreceksiniz.

kubectl get svc -n default


nginx-service için EXTERNAL-IP sütununda bir IP adresi görünecektir. Bu IP adresini tarayıcınızda açarak Nginx'in varsayılan karşılama sayfasını görebilirsiniz.

Gelişmiş Özellikler ve Entegrasyonlar

Argo CD, temel dağıtım yeteneklerinin ötesinde birçok gelişmiş özellik sunar.

Otomatik Senkronizasyon ve Kaynak Sağlığı

Argo CD, uygulama manifestlerinizdeki değişiklikleri algıladığında otomatik olarak senkronize edebilir. Ayrıca, kümedeki kaynakların (pod'lar, deployment'lar, servisler) sağlığını sürekli olarak izler ve herhangi bir sorun durumunda sizi bilgilendirir. Bu, proaktif bir yönetim sağlar ve sorunların erken tespit edilmesine yardımcı olur. Argo CD'nin "Self-Healing" özelliği sayesinde, bir kaynak manuel olarak değiştirilse bile, Argo CD bu değişikliği geri alarak Git'teki duruma dönebilir.

Çoklu Küme Yönetimi

Argo CD, birden fazla Kubernetes kümesini tek bir Argo CD örneği üzerinden yönetmenize olanak tanır. Bu, farklı ortamlar (geliştirme, test, üretim) veya farklı AWS bölgelerindeki EKS kümelerinizi merkezi bir noktadan kontrol etmenizi sağlar. Her kümeyi Argo CD'ye bir hedef küme olarak kaydederek, uygulamalarınızı farklı kümelere kolayca dağıtabilir ve yönetebilirsiniz.

Tekrarlanabilirlik ve Güvenlik

GitOps yaklaşımı ve Argo CD, dağıtım süreçlerinin tamamen tekrarlanabilir olmasını sağlar. Git'teki her commit, belirli bir uygulama durumunu temsil eder ve bu durum herhangi bir zamanda geri yüklenebilir. Argo CD, Kubernetes RBAC (Role-Based Access Control) ile entegre çalışır ve dağıtım süreçlerinde güvenlik kontrolleri sağlar. Hangi kullanıcıların veya servis hesaplarının hangi uygulamaları ve küme kaynaklarını yönetebileceğini ince ayar yapabilirsiniz.

Sonuç

Argo CD ve AWS EKS entegrasyonu, modern yazılım geliştirme ekipleri için güçlü, ölçeklenebilir ve güvenilir bir GitOps platformu sunar. Bu makalede, Argo CD'yi bir EKS kümesi üzerine kurma, ilk uygulamanızı dağıtma ve bu iki teknolojinin birlikte sunduğu avantajları ele aldık. Git'i tek doğruluk kaynağı olarak kullanarak, dağıtım süreçlerinizi otomatikleştirebilir, operasyonel yükü azaltabilir ve uygulamalarınızın tutarlılığını ve güvenliğini sağlayabilirsiniz. AWS EKS'nin yönetilen Kubernetes hizmetiyle birleşen Argo CD'nin GitOps yetenekleri, ekiplerin altyapı yönetimi yerine yenilikçi uygulamalar geliştirmeye odaklanmasını sağlar.

Sıkça Sorulan Sorular (SSS)

1. Argo CD'yi EKS'ye kurmak için neden Helm kullanmalıyım?
Helm, Kubernetes uygulamalarını paketlemek ve dağıtmak için standart bir araçtır. Argo CD'yi Helm ile kurmak, kurulumu basitleştirir, yapılandırmayı yönetmeyi kolaylaştırır ve gelecekteki güncellemeleri sorunsuz hale getirir.

2. Argo CD, farklı Git depolarını destekler mi?
Evet, Argo CD GitHub, GitLab, Bitbucket gibi popüler Git servislerinin yanı sıra kendi barındırdığınız Git depolarını da destekler. SSH veya HTTPS kimlik doğrulama yöntemlerini kullanabilirsiniz.

3. Argo CD sadece Kubernetes manifestlerini mi dağıtır?
Hayır, Argo CD Kubernetes manifestlerinin yanı sıra Helm grafiklerini, Kustomize yapılandırmalarını ve Ksonnet uygulamalarını da destekler. Bu, farklı yapılandırma yönetim araçlarıyla esnek bir şekilde çalışmanıza olanak tanır.

4. Argo CD ile uygulamanın önceki bir sürümüne nasıl geri dönebilirim?
GitOps prensibi gereği, uygulamanızın önceki bir sürümüne geri dönmek için Git deponuzda ilgili commit'e geri dönmeniz (revert) yeterlidir. Argo CD bu değişikliği algılayacak ve kümedeki uygulamayı otomatik olarak önceki duruma senkronize edecektir.

5. Argo CD'nin "drift detection" özelliği nasıl çalışır?
Argo CD, Git deposundaki beklenen uygulama durumu ile Kubernetes kümesindeki gerçek durumu periyodik olarak karşılaştırır. Herhangi bir tutarsızlık tespit ettiğinde, uygulamayı OutOfSync olarak işaretler ve otomatik senkronizasyon etkinse Git'teki duruma geri döndürür.

6. EKS kümemdeki uygulamaların performansını Argo CD ile izleyebilir miyim?
Argo CD, uygulamanızın dağıtım ve senkronizasyon sağlığını izler, ancak uygulamanın kendisinin (CPU, bellek kullanımı vb.) performans metriklerini doğrudan sağlamaz. Bunun için Prometheus, Grafana gibi izleme araçlarını EKS kümenize entegre etmeniz gerekir. Argo CD bu tür araçlarla iyi bir şekilde entegre edilebilir.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.