Ana içeriğe geç

Kubernetes CI/CD Kurulumu: Tekton, Argo CD ve Knative ile Serverless Otomasyon

Bu Rehberde Ne Öğreneceksiniz?

Bu rehberde Kubernetes üzerinde tamamen otomatik, event-driven ve serverless bir CI/CD hattı kuracaksınız.
GitHub’a kod gönderirsiniz, gerisini sistem halleder.
Build, deploy, SSL… insan eli değmez. Hacı abi tam DevOps zen modu 🧘‍♂️


Teknik Özet

Konu: Kubernetes tabanlı modern CI/CD mimarisi
Problem: Jenkins gibi geleneksel araçların Kubernetes’e yabancı kalması
Çözüm: Kubernetes-native açık kaynak araçlarla uçtan uca otomasyon

Bu rehberde:

  • oaicite:0
    ile CI,
  • oaicite:1
    ile CD,
  • Kaniko ile güvenli imaj üretimi,
  • Knative ile event-driven ve serverless çalışma modeli kurulur.

Mimari Akış (Google’ın Sevdiği Netlikte)

  1. Kod
    oaicite:2
    reposuna push edilir
  2. Knative Eventing olayı yakalar
  3. Tekton Pipeline otomatik tetiklenir
  4. Kaniko Docker imajını üretir
  5. Argo CD GitOps senkronizasyonu yapar
  6. Knative Service HTTPS üzerinden yayına alınır

Push → kahve → prod ☕🚀


Ön Gereksinimler

  • Size ait bir alan adı
  • oaicite:3
    v1.21+ cluster
  • En az 2 node (2 CPU / 4 GB RAM)
  • kubectl, helm, tkn, argocd, kn CLI araçları
  • GitHub hesabı ve Personal Access Token

Kullanılan Temel Bileşenler

  • Kaniko: Docker daemon olmadan imaj üretir
  • Tekton Pipelines & Triggers: CI sürecini yürütür
  • Argo CD: GitOps tabanlı deploy yönetimi
  • Knative Serving: Serverless uygulama yayını
  • Knative Eventing: GitHub olaylarını yakalar
  • Cert-Manager: Otomatik TLS ve SSL yönetimi

Adım 1: Cert-Manager Kurulumu

HTTPS olmadan prod olmaz reis.

kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.13.0/cert-manager.yaml
  • Bu komut TLS sertifikalarının otomatik yönetimini sağlar.

Adım 2: Tekton Kurulumu (CI Katmanı)


kubectl apply -f https://storage.googleapis.com/tekton-releases/pipeline/latest/release.yaml
kubectl apply -f https://storage.googleapis.com/tekton-releases/triggers/latest/release.yaml
kubectl apply -f https://storage.googleapis.com/tekton-releases/dashboard/latest/tekton-dashboard-release.yaml

  • Tekton Dashboard erişimi:

kubectl port-forward svc/tekton-dashboard -n tekton-pipelines 9097:9097
  • Bu panel pipeline’ları canlı izlemek içindir.

Adım 3: Argo CD Kurulumu (CD Katmanı)


kubectl create namespace argocd
kubectl apply -n argocd \
-f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
  • Argo CD, cluster durumunu Git ile senkron tutar.

Adım 4: Knative Kurulumu (Serverless + Eventing)


kubectl apply -f https://github.com/knative/operator/releases/download/knative-v1.11.0/operator.yaml
kubectl apply -f https://github.com/knative/operator/releases/download/knative-v1.11.0/serving-core.yaml
kubectl apply -f https://github.com/knative/operator/releases/download/knative-v1.11.0/eventing-core.yaml
  • Knative sayesinde trafik yokken pod sıfıra iner.

Adım 5: DNS ve Otomatik SSL Ayarları

  1. Kourier LoadBalancer IP’sini öğrenin:

kubectl get svc -n knative-serving

Domain panelinde şu formatta wildcard A kaydı ekleyin:

  • *.doks-ci-cd.domaininiz.com → LOAD_BALANCER_IP

Knative domain eşlemesi:


kubectl patch configmap/config-domain \
-n knative-serving \
--type merge \
--patch '{"data":{"domaininiz.com":""}}'

Adım 6: GitHub Eventing Entegrasyonu

  1. GitHub push olaylarını dinleyen kaynak:

apiVersion: sources.knative.dev/v1alpha1
kind: GitHubSource
metadata:
name: uygulama-github-source
spec:
eventTypes:
- push
ownerAndRepository: kullanici/proje
sink:
ref:
apiVersion: triggers.tekton.dev/v1alpha1
kind: EventListener
name: tekton-listener
  • Bu yapı push olunca pipeline’ı tetikler.

Adım 7: Tekton CI/CD Pipeline

  1. Pipeline akışı:
  • Git clone

  • Kaniko ile imaj üretimi

  • Argo CD sync



kind: Pipeline
spec:
tasks:
- name: kodu-cek
taskRef:
name: git-clone
- name: imaji-derle
runAfter: [kodu-cek]
taskRef:
name: kaniko
- name: dagitimi-baslat
runAfter: [imaji-derle]
taskRef:
name: argocd-task-sync-and-wait

Test ve Doğrulama

  1. Repo’ya küçük bir commit at

  2. Tekton Dashboard’u aç

  3. PipelineRun yeşil mi bak

  4. Knative URL’yi aç

  5. HTTPS kilidi var mı kontrol et 🔒


Sıkça Sorulan Sorular

1. Kaniko neden Docker’dan iyi? Docker daemon yok, güvenli, Kubernetes uyumlu.

2. Tekton deploy yapamaz mı? Yapar ama Argo CD GitOps için daha stabil.

3. Knative şart mı? Şart değil ama serverless ve event-driven fark yaratır.

4. Prod ortamda kullanılır mı? Evet. Hepsi endüstri standardı.


Sonuç

Bu rehberle:

  • Kubernetes-native CI/CD kurdunuz

  • Event-driven DevOps yaptınız

  • Serverless mimariye geçtiniz

Rabisu Bulut Kubernetes altyapısında birebir uygulanabilir.