Klasik DevOps
Agentic DevOps
Klasik hat betik koşturur. Agentic hat karar ister.
Agentic DevOps, yazılım geliştirme yaşam döngüsünün (SDLC) her aşamasına — plandan koda, testten dağıtıma, işletmeden izlemeye — hedef verilen, bağlam okuyan, araç kullanan yapay zekâ ajanlarını ekip arkadaşı olarak yerleştiren bir teslim yaklaşımıdır. DevOps’un “tekrarlanabilir, sürekli, her zaman açık hat” ilkesi durur. Değişen şey, hattın içine yalnızca statik otomasyon değil, sınırlı otonomi konmasıdır.
Somut hali tanıdıktır: hata çıktısını okuyup düzeltme öneren, issue’dan çekme isteği açan, bağımlılık açığını görüp yama dalı hazırlayan ajanlar. Bunlar sihir değildir. Hepsi aynı sözleşmeye bağlıdır: ajan önerir ve uygular; geri alınamayan yazma bir kapıdan geçer.
Bu ayrımı evrak hattı yazımızda süreç tarafında gördük. Orkestratör bir büyük dil modeli (LLM) değildi; graf ve durumdu. Agentic DevOps’ta da orkestratör GitHub Actions, dal koruması ve ortam onayıdır. Copilot coding agent, ajan kipindeki düzenleyici, CodeQL Autofix — bunlar düğümdür. Düğüm, kapının yerini tutmaz.
Betik koşulu bilir, bağlamı bilmez
Klasik hat, ‘test kırmızıysa dur’ der. Neden kırmızı olduğunu, hangi dosyanın sorumlu olduğunu, yamanın güvenli olup olmadığını çıkarmaz.
Ajan hedefi okur, sonra araç seçer
Issue’daki kabul kriteri, alarm özeti veya kırık test çıktısı bir görev tanımına dönüşür. Ajan planlar, repo’ya bakar, komut çalıştırır, sonucu geri okur.
Hız, birleştirme yetkisi değildir
Ajan dal açabilir, çekme isteği (pull request) üretebilir, inceleme yorumu bırakabilir. main’e yazma hâlâ kapıdır. Önceki yazımızdaki uygulayıcı ile aynı kural.
İskelet değişmez, içindeki karar değişir
Tekrarlanabilir, sürekli, her zaman açık bir hat durur. İçine yalnızca statik otomasyon değil; bütçeli, izlenen, onaylı ajan oturur.
Hattın faydası da aynı yerde durur: daha hızlı teslim, daha tutarlı test, daha az tekrarlayan el işi. Agentic katman bunu “daha çok commit” diye satmaz. Satılan şey, insanın zamanını mimariye ve kabul kriterine bırakmasıdır. Betik hâlâ derler, test eder, paketler. Ajan, betiğin cevaplayamadığı “şimdi ne yapmalıyız?” sorusunu sınırlı bir bütçeyle dener.
Üretici model yazar. Ajan tur atar.
Üretici yapay zekâ (generative AI) örüntüden içerik üretir: bir komut istemine (prompt) cevap verir, durur. Agentic sistem aynı modeli bir döngünün içine alır. Hedef alır, işi adımlara böler, araç çağırır, çıktıyı gözlemler, planı günceller. Kod ya derlenir ya derlenmez; bu, halüsinasyona karşı en ucuz doğrulamadır — yeter ki ajan testi silme yetkisine sahip olmasın.
Döngünün kendisi ürün adı değildir. Python’da on satırlık bir araç şeması da aynı desendir, Copilot coding agent da. Fark, production’a yaklaştıkça eklenen katmanlardır: izin listesi, adım tavanı, denetim izi (audit trail), insan onayı. “Ajan çalıştı” bir log satırı değil; hangi aracın, hangi argümanla, hangi kapıdan geçtiğinin kaydıdır.
async function hedefeYuru(hedef: string, azamiTur = 8) {
const bellek: Adim[] = []
for (let tur = 0; tur < azamiTur; tur++) {
const karar = await planla(hedef, bellek)
if (karar.bitti) return karar.ozet
if (!izinli(karar.arac)) throw new PolitikaReddi(karar.arac)
const gozlem = await araciCalistir(karar.arac)
bellek.push({ tur, arac: karar.arac, gozlem })
}
throw new ButceAsimi(hedef)
}Sekiz aşama durur. Her kutuya bir rol düşer.
Teslim hattı montaj bandı gibi anlatılır; pratikte döngüdür. Özellik lineer ilerlese bile sistem, yayınlandıktan sonra da izleme ile plana geri döner. Agentic DevOps bu sekiz kutuyu silmez. Her kutuya “burada ajan ne yapar, burada insan ne tutar” diye bir cümle ekler.
Plan
İyi yazılmış bir issue, ajan için görev sözleşmesidir. Kabul kriteri yoksa ajan da tahmin eder.
Kod
Ajan kipinde (agent mode) hedef verilir; dosyayı insan seçmez, ajan bulur. CLI aynı döngüyü terminalde koşturur.
Derle ve test
CI kırılınca ajan triyaj üretebilir. Testi ‘geçir’ demek yetmez; kırmızıyı yeşile boyamak yasaktır.
Yayın ve dağıt
Dağıtım betiği ajanın elinde olmamalı. Ortam (environment) onayı ve secret, ajan oturumunun dışında kalır.
İşlet ve izle
Alarm issue açar, issue ajan görevi olur, düzeltme PR’ı döner. Döngü kapanır; kapı kapanmaz.
Sürekli entegrasyon (CI) hâlâ sık birleştirmeyi ucuz kılar. Sürekli teslimat veya dağıtım (CD) hâlâ yeşil hattı ortama taşır. Sürekli test hâlâ kırmızıyı durdurur. Ajan bunları ikame etmez; kırmızı çıktıyı okuyan, issue’yu dala çeviren, incelemenin ilk turunu yapan katmandır. İnsan, ikinci turda mimariyi ve riski görür — noktalı virgülü değil.
Yığın örnek olsun diye GitHub. Kural yığından bağımsız.
Aşağıdaki isimler bir pazar listesi değil, bir hattın üzerine oturan somut düğümlerdir: Copilot coding agent issue’yu PR’a çevirir; ajan kipi ve Copilot CLI aynı döngüyü editörde ve terminalde koşturur; model bağlam protokolü (MCP) ajanı issue takip, veritabanı veya gözlemlenebilirlik aracına standart bağlar; Actions derler ve test eder; Copilot code review ilk bakışı yapar; Dependabot ve CodeQL güvenliği sola kaydırır. Araç değişir. Sözleşme değişmez: ajan yazabilir, birleştiremez.
# Ajan her görevde bunu okur
- Yeni davranış için birim testi yaz.
- main dalına doğrudan push yok; her zaman PR.
- Secret’ı dosyaya, yoruma, komut istemine yazma.
- Testi silerek veya atlayarak yeşil alma.
- Public API değişirse changelog güncelle.Issue tarafında da aynı netlik gerekir. “Bir retry ekle” ajanı serbest bırakır. Bağlam, dosya yolu, 4xx/5xx ayrımı ve test beklentisi bir görev sözleşmesidir. Ajanın kalitesi çoğu zaman modelden değil, issue’nun kabul kriterinden gelir.
const ajanYetkisi = {
dalAc: true,
prAc: true,
incelemeYorumu: true,
secretOku: false,
mainBirlestir: false,
} as const
function birlestirilebilirMi(pr: CekmeIstegi) {
return
pr.ciYesil &&
pr.otomatikIncelemeBitti &&
pr.insanOnayi >= 1 &&
!pr.ajanKendiniOnayladi
}CI kırıldığında ajanın yapabileceği en ucuz iş, logu insana çevirmektir — kök neden taslağı, PR yorumu. Yapmaması gereken iş, kırmızıyı sessizce yeşile boyamaktır. Dağıtım tarafında da aynı çizgi: production environment’ı ajanın permissions bloğuna yazılmaz; onay kapısı Actions’ta kalır. Alarm geldiğinde issue açılır, issue ajan görevi olur, düzeltici PR döner. İzleme, hattın başına plan olarak geri akar.
Ajan cluster’a değil, Git’e yazar.
Dağıtım aşamasında ajanın eline kubectl apply vermek, evrak hattındaki tek döngüyle aynı kırılmadır: okuma, karar ve geri alınamayan yazma aynı elde toplanır. Push tabanlı CD’de ajan (veya bir iş akışı) cluster’a doğrudan yazar. İz Git’te değil, o anki komutta kalır. Geri alma, bir revizyon değil bir umuttur.
GitOps bu yazmayı ters çevirir. Desired state (istenilen durum) Git’te durur. Argo CD cluster’ı o duruma yakınsar (reconcile). Ajanın işi image etiketini, replica sayısını veya bir ConfigMap anahtarını bir çekme isteğinde değiştirmektir. Birleştirme kapısı açılmadan Argo hiçbir şey görmez. Kapı açılınca Argo farkı görür; Kubernetes Deployment, servise ait tüm pod’ları RollingUpdate ile kademeli yeniler.
CI hâlâ doğrular. GitOps, CD’dir: Git kaynak-gerçektir (source of truth), cluster onun yansımasıdır. Ajan Git’e yazar. Uygulayıcı Argo CD’dir. Kapı, main merge ve Argo syncPolicy’dir.
Rolling update ve geri alma
Servisi güncellemek tek pod’u silmek değildir. Deployment, yeni ReplicaSet’i ayağa kaldırır;maxUnavailable ve maxSurge eski pod’ların ne kadarının duracağını, yenilerin ne kadarının önden geleceğini sınırlar. Readiness probe yeşil olmadan trafik kaymaz. Yeni pod Ready olmazsa rollout durur; ArgoselfHeal ve otomatik geri alma, önceki Git revizyonuna döner. Ajan bu noktada cluster’a “düzelt” demez — Git’teki son sağlıklı durum zaten düzeltmedir.
apiVersion: apps/v1
kind: Deployment
metadata:
name: bildirim-api
spec:
replicas: 3
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
maxSurge: 1
template:
spec:
containers:
- name: api
image: ghcr.io/kozmoz/bildirim-api:v1.4.2 # ajan yalnızca bu etiketi değiştirir
readinessProbe:
httpGet: { path: /healthz, port: 8080 }apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: bildirim-api
namespace: argocd
spec:
source:
repoURL: https://github.com/Kozmoz-Inovasyon/agentic-gitops-argocd
path: deploy
targetRevision: main
destination:
server: https://kubernetes.default.svc
namespace: bildirim
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=trueProduction’da automated sync bile kör değildir. Staging otomatik yakınsar; production Application’da manuel sync veya bir onay penceresi durabilir. Ajan yine Git’e yazar. Prod’a yazan el, Argo’dur — ve o el Git’ten başka bir şey okumaz.
Açık kaynak örnekKozmoz-Inovasyon/agentic-gitops-argocdAjan image etiketini Git’e yazar; yerel yakınlaştırıcı (reconciler) pod’ları kademeli günceller. Küme gerekmez. Sağlıksız sürümde otomatik geri almayı yerelde koşturabilirsiniz.Daha fazla otonomi, daha dar yetki ister.
Ajanlı hat, klasik otomasyonun risklerini silmez; yenilerini ekler. Komut enjeksiyonu, hassas veri sızıntısı, tedarik zinciri yüzeyi, önyargı ve hedef sapması. Bunların hiçbiri “modele güvenme” nutkuyla kapanmaz. Kapanan yer, yetki matrisidir.
Komut enjeksiyonu (prompt injection)
Issue, log veya dış doküman içindeki gizli talimat, ajanın sistem kuralını ezer. Dış metin veri olarak işaretlenir; talimat olarak yorumlanmaz.
Secret sızıntısı
Ajan bağlama aç olduğunda token’ı loga, yoruma veya model çağrısına yazar. Secret prompt’a girmez; Actions secret’ında kalır.
Tedarik zinciri
Bağımlılık PR’ı da bir ajan çıktısıdır. Otomatik birleştirme, Dependabot’u otonom savunma olmaktan çıkarıp otonom saldırı yüzeyine çevirir.
Uyumsuzluk (misalignment)
Hedef ‘testleri geçir’ ise ajan testi siler. Hedef ‘davranışı koru ve kanıtla’ olmalıdır. Ölçü, yeşil tik değil kabul kriteridir.
İnsan gözetiminde otonomi
Alt katman betik hattıdır: CI, secret, dal koruması, en az yetki. Orta katman ajandır: planlar, araç kullanır, uyarlanır. Üst katman insandır: hedefi yazar, yetkiyi keser, birleştirmeyi imzalar, izi okur. Bu yığın, “otomatik her şeyi yapsın” ile “hiç ajan olmasın” arasında durur. Evrak hattındaki kapı ile aynı cümledir: otonom yol mutlu patikadır; geri alınamayan yazma eşik altında insan döngüde (HITL) kalır. GitOps’ta aynı matris sürer: ajan Git’e yazar,main merge kapısı ve Argo syncPolicy cluster’a yazmayı sınırlar. Ajan prod’a yazmaz.
En az yetki
Workflow yalnızca gereken izni alır. Ajan firewall / allowlist dışarı çağırmaz.
Zorunlu inceleme
Ajanın PR’ı da bir insan onayı ister. Kendi kendini onaylamak yok.
Bütçe ve iz
Tur tavanı, token tavanı, oturum günlüğü. Sonsuz döngü bir özellik değildir.
Anahtarı çevirmek değil, bir depoda kanıtlamak.
Agentic DevOps bir platform alımı değildir. Önce hattın kendisi durur: her commit’te test, main’e doğrudan push yok, secret dosyada yok. Ajan, bu zemine oturur. Zemin yoksa ajan, kırık bir süreci daha hızlı kırar.
- 01
Pilot repo
Riski düşük, testi olan bir depo. İlk gün production faturası kesen hat değil.
- 02
Katkı kuralı
Ajan her turda okusun diye kökte kısa bir talimat dosyası. Stil, test, commit kuralı.
- 03
Küçük issue
Tek dosya + birim test. ‘Tüm teknik borcu kapat’ bir hedef değil, bir dilek.
- 04
Zorunlu CI ve dal koruması
Ajanın PR’ı da insani PR ile aynı kapıdan geçer.
- 05
Ölç
PR döngü süresi, yeniden açılan hata, olay çözüm süresi. His değil sayı.
Öğrendiğimiz cümle evrak hattıyla aynıdır. Modeli zeki tut, yetkiyi dar tut, süreci görünür tut. Agentic DevOps, bu üçünün yazılım teslim hattında durduğu yerin adıdır. Ajan sayısı hedef değildir. Hedef, hangi adımın otonom, hangisinin kapılı olduğunu dürüstçe çizebilmektir.
Açık kaynak örnekKozmoz-Inovasyon/agentic-gitops-argocdAjan image etiketini Git’e yazar; yerel yakınlaştırıcı (reconciler) pod’ları kademeli günceller. Küme gerekmez. Sağlıksız sürümde otomatik geri almayı yerelde koşturabilirsiniz.