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:0ile CI,
- oaicite:1ile CD,
- Kaniko ile güvenli imaj üretimi,
- Knative ile event-driven ve serverless çalışma modeli kurulur.
Mimari Akış (Google’ın Sevdiği Netlikte)
- Kod oaicite:2reposuna push edilir
- Knative Eventing olayı yakalar
- Tekton Pipeline otomatik tetiklenir
- Kaniko Docker imajını üretir
- Argo CD GitOps senkronizasyonu yapar
- Knative Service HTTPS üzerinden yayına alınır
Push → kahve → prod ☕🚀
Ön Gereksinimler
- Size ait bir alan adı
- oaicite:3v1.21+ cluster
- En az 2 node (2 CPU / 4 GB RAM)
kubectl,helm,tkn,argocd,knCLI 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ı
- 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
- 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
- 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
-
Repo’ya küçük bir commit at
-
Tekton Dashboard’u aç
-
PipelineRun yeşil mi bak
-
Knative URL’yi aç
-
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.