{"id":38283,"date":"2026-01-27T16:30:38","date_gmt":"2026-01-27T13:30:38","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/kubernetese-gecis-sonrasi-3-dakikadan-15-dakikaya-cikan-ci-surecleri-iste-nasil-duzelttik\/"},"modified":"2026-01-27T16:30:38","modified_gmt":"2026-01-27T13:30:38","slug":"kubernetese-gecis-sonrasi-3-dakikadan-15-dakikaya-cikan-ci-surecleri-iste-nasil-duzelttik","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/kubernetese-gecis-sonrasi-3-dakikadan-15-dakikaya-cikan-ci-surecleri-iste-nasil-duzelttik\/","title":{"rendered":"Kubernetes&#8217;e Ge\u00e7i\u015f Sonras\u0131 3 Dakikadan 15 Dakikaya \u00c7\u0131kan CI S\u00fcre\u00e7leri: \u0130\u015fte Nas\u0131l D\u00fczelttik!"},"content":{"rendered":"<h2>Kubernetes&#8217;e Ge\u00e7i\u015f Sonras\u0131 3 Dakikadan 15 Dakikaya \u00c7\u0131kan CI S\u00fcre\u00e7leri: \u0130\u015fte Nas\u0131l D\u00fczelttik!<\/h2>\n<p>Kubernetes, modern uygulama da\u011f\u0131t\u0131m\u0131n\u0131n ve y\u00f6netiminin vazge\u00e7ilmez bir par\u00e7as\u0131 haline geldi. \u00d6l\u00e7eklenebilirlik, esneklik ve kaynak verimlili\u011fi vaatleriyle bir\u00e7ok ekibi kendine \u00e7ekiyor. Biz de bu avantajlardan faydalanmak amac\u0131yla CI\/CD altyap\u0131m\u0131z\u0131 Kubernetes \u00fczerine ta\u015f\u0131ma karar\u0131 ald\u0131k. Ancak bu ge\u00e7i\u015fin beklenmedik bir yan etkisi oldu: 3 dakika s\u00fcren CI pipeline&#8217;lar\u0131m\u0131z aniden 15 dakikaya f\u0131rlad\u0131! Bu durum, geli\u015ftirme h\u0131z\u0131m\u0131z\u0131 ciddi \u015fekilde d\u00fc\u015f\u00fcrd\u00fc ve ekibin moralini bozdu. Neyse ki, kapsaml\u0131 bir inceleme ve bir dizi optimizasyon sayesinde bu sorunu \u00e7\u00f6zmeyi ba\u015fard\u0131k. Bu makalede, kar\u015f\u0131la\u015ft\u0131\u011f\u0131m\u0131z zorluklar\u0131, k\u00f6k nedenleri ve pipeline s\u00fcrelerimizi tekrar kabul edilebilir seviyelere \u00e7ekmek i\u00e7in uygulad\u0131\u011f\u0131m\u0131z \u00e7\u00f6z\u00fcmleri detayl\u0131 bir \u015fekilde payla\u015faca\u011f\u0131z.<\/p>\n<h2>1. Performans D\u00fc\u015f\u00fc\u015f\u00fcn\u00fcn K\u00f6k Nedenlerini Anlamak<\/h2>\n<p>\u0130lk \u015fokun ard\u0131ndan, sorunun tam olarak nerede yatt\u0131\u011f\u0131n\u0131 anlamak i\u00e7in kapsaml\u0131 bir analiz s\u00fcrecine girdik. Kubernetes&#8217;in karma\u015f\u0131kl\u0131\u011f\u0131, bir\u00e7ok farkl\u0131 bile\u015fenin performans \u00fczerinde etkili olabilece\u011fi anlam\u0131na geliyordu. \u0130\u015fte tespit etti\u011fimiz ba\u015fl\u0131ca k\u00f6k nedenler:<\/p>\n<h3>1.1. Yanl\u0131\u015f Kaynak Tahsisi ve Kubernetes Scheduler Etkisi<\/h3>\n<p>Kubernetes&#8217;te pod&#8217;lara CPU ve bellek i\u00e7in <code>requests<\/code> (istekler) ve <code>limits<\/code> (limitler) tan\u0131mlamak kritik \u00f6neme sahiptir. Ba\u015flang\u0131\u00e7ta, bu ayarlar\u0131 ya hi\u00e7 yapmam\u0131\u015f ya da \u00e7ok d\u00fc\u015f\u00fck tutmu\u015ftuk. Bu durum, CI pod&#8217;lar\u0131m\u0131z\u0131n yeterli kayna\u011f\u0131 alamamas\u0131na veya k\u00fcme \u00fczerinde &#8220;noisy neighbor&#8221; etkisi yaratmas\u0131na neden oluyordu. D\u00fc\u015f\u00fck <code>requests<\/code> de\u011ferleri, Kubernetes Scheduler&#8217;\u0131n pod&#8217;lar\u0131 yetersiz kaynaklara sahip node&#8217;lara yerle\u015ftirmesine yol a\u00e7arak performans\u0131 olumsuz etkiliyordu.<\/p>\n<h3>1.2. B\u00fcy\u00fck Docker \u0130majlar\u0131 ve \u0130maj \u00c7ekme S\u00fcreleri<\/h3>\n<p>CI pipeline&#8217;lar\u0131m\u0131z\u0131n her ad\u0131m\u0131nda kullan\u0131lan Docker imajlar\u0131n\u0131n boyutlar\u0131 olduk\u00e7a b\u00fcy\u00fckt\u00fc. Bu imajlar, her CI job&#8217;\u0131 ba\u015flad\u0131\u011f\u0131nda Kubernetes node&#8217;lar\u0131na \u00e7ekilmek zorundayd\u0131. Her seferinde y\u00fczlerce megabaytl\u0131k (hatta gigabaytl\u0131k) imajlar\u0131n indirilmesi, pipeline&#8217;\u0131n ba\u015flang\u0131\u00e7 s\u00fcresini \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131r\u0131yordu. \u00d6zellikle \u00e7ok say\u0131da ba\u011f\u0131ml\u0131l\u0131\u011f\u0131 olan monolitik uygulamalar\u0131n imajlar\u0131 bu konuda ba\u015f\u0131 \u00e7ekiyordu.<\/p>\n<h3>1.3. \u00d6nbellekleme Eksikli\u011fi ve Tekrarlanan \u0130\u015flemler<\/h3>\n<p>Eski CI sistemimizde yerel disk \u00f6nbellekleme gibi mekanizmalarla ba\u011f\u0131ml\u0131l\u0131k indirme ve ara derleme \u00e7\u0131kt\u0131lar\u0131n\u0131 \u00f6nbelle\u011fe alabiliyorduk. Kubernetes&#8217;e ge\u00e7i\u015fle birlikte bu \u00f6nbellekleme stratejileri kaybolmu\u015ftu. Her CI job&#8217;\u0131, s\u0131f\u0131rdan ba\u015fl\u0131yor, t\u00fcm ba\u011f\u0131ml\u0131l\u0131klar\u0131 yeniden indiriyor ve t\u00fcm derleme ad\u0131mlar\u0131n\u0131 tekrarl\u0131yordu. Bu, \u00f6zellikle Node.js projelerinde <code>node_modules<\/code> klas\u00f6r\u00fcn\u00fcn her seferinde yeniden indirilmesi veya Maven\/Gradle ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131n tekrar tekrar \u00e7ekilmesi gibi durumlarda b\u00fcy\u00fck zaman kay\u0131plar\u0131na yol a\u00e7\u0131yordu.<\/p>\n<h3>1.4. A\u011f Gecikmeleri ve Harici Ba\u011f\u0131ml\u0131l\u0131klar<\/h3>\n<p>CI pipeline&#8217;lar\u0131m\u0131z, d\u0131\u015f Maven\/NPM depolar\u0131, veritabanlar\u0131 veya harici API&#8217;ler gibi bir\u00e7ok harici servisle ileti\u015fim kuruyordu. Kubernetes k\u00fcmesinin a\u011f yap\u0131land\u0131rmas\u0131, DNS \u00e7\u00f6z\u00fcmleme s\u00fcreleri veya harici servislere eri\u015fimdeki gecikmeler, pipeline&#8217;\u0131n toplam s\u00fcresine ekleniyordu. \u00d6zellikle DNS sorgular\u0131n\u0131n yava\u015flamas\u0131, her ba\u011f\u0131ml\u0131l\u0131k indirme veya API \u00e7a\u011fr\u0131s\u0131nda hissedilir bir gecikme yarat\u0131yordu.<\/p>\n<h2>2. Docker \u0130maj Optimizasyonu ve Katman \u00d6nbellekleme<\/h2>\n<p>Pipeline s\u00fcrelerimizi k\u0131saltman\u0131n ilk ve en etkili ad\u0131mlar\u0131ndan biri, Docker imajlar\u0131m\u0131z\u0131 optimize etmek oldu. \u0130maj boyutunu k\u00fc\u00e7\u00fcltmek ve katman \u00f6nbelleklemesini do\u011fru kullanmak, imaj \u00e7ekme s\u00fcrelerini dramatik \u015fekilde azaltt\u0131.<\/p>\n<h3>2.1. \u00c7ok A\u015famal\u0131 (Multi-stage) Derlemeler<\/h3>\n<p>Uygulama derleme ve \u00e7al\u0131\u015ft\u0131rma ortamlar\u0131n\u0131 ay\u0131rmak i\u00e7in \u00e7ok a\u015famal\u0131 Dockerfile&#8217;lar kullanmaya ba\u015flad\u0131k. Bu sayede, derleme i\u00e7in gerekli olan b\u00fcy\u00fck ara\u00e7lar (SDK&#8217;lar, derleyiciler vb.) nihai imaja dahil edilmedi. Sonu\u00e7 olarak, sadece uygulaman\u0131n \u00e7al\u0131\u015fmas\u0131 i\u00e7in gerekli olan ba\u011f\u0131ml\u0131l\u0131klar\u0131 i\u00e7eren \u00e7ok daha k\u00fc\u00e7\u00fck imajlar elde ettik.<\/p>\n<pre><code>\n# \u0130lk a\u015fama: Derleme ortam\u0131\nFROM node:18-alpine AS builder\nWORKDIR \/app\nCOPY package*.json .\/\nRUN npm install\nCOPY . .\nRUN npm run build\n\n# \u0130kinci a\u015fama: \u00c7al\u0131\u015fma zaman\u0131 ortam\u0131\nFROM node:18-alpine\nWORKDIR \/app\nCOPY --from=builder \/app\/node_modules .\/node_modules\nCOPY --from=builder \/app\/dist .\/dist\nCOPY --from=builder \/app\/package.json .\/package.json\nCMD [\"npm\", \"start\"]\n<\/pre>\n<p><\/code><\/p>\n<h3>2.2. Daha K\u00fc\u00e7\u00fck Temel \u0130majlar Kullan\u0131m\u0131<\/h3>\n<p>B\u00fcy\u00fck taban imajlar yerine (\u00f6rne\u011fin <code>ubuntu:latest<\/code>), Alpine Linux tabanl\u0131 daha minimalist imajlara ge\u00e7i\u015f yapt\u0131k. Alpine imajlar\u0131, boyut olarak \u00e7ok daha k\u00fc\u00e7\u00fck oldu\u011fu i\u00e7in indirme s\u00fcrelerini \u00f6nemli \u00f6l\u00e7\u00fcde k\u0131saltt\u0131.<\/p>\n<h3>2.3. Ak\u0131ll\u0131 Katman \u00d6nbellekleme<\/h3>\n<p>Dockerfile'daki komutlar\u0131n s\u0131ras\u0131n\u0131 optimize ederek Docker'\u0131n katman \u00f6nbellekleme mekanizmas\u0131ndan daha iyi faydaland\u0131k. S\u0131k de\u011fi\u015fmeyen katmanlar\u0131 (\u00f6rne\u011fin ba\u011f\u0131ml\u0131l\u0131k kurulumu) Dockerfile'\u0131n \u00fcst k\u0131s\u0131mlar\u0131na ta\u015f\u0131d\u0131k ve daha s\u0131k de\u011fi\u015fen kod kopyalama gibi ad\u0131mlar\u0131 alt k\u0131s\u0131mlara yerle\u015ftirdik. Bu sayede, sadece de\u011fi\u015fen katmanlar\u0131n yeniden derlenmesini sa\u011flad\u0131k.<\/p>\n<h2>3. Kubernetes Kaynak Y\u00f6netimi ve Planlay\u0131c\u0131 Optimizasyonu<\/h2>\n<p>Kubernetes'in kaynak y\u00f6netimini do\u011fru yapmak, CI pod'lar\u0131m\u0131z\u0131n istikrarl\u0131 ve h\u0131zl\u0131 \u00e7al\u0131\u015fmas\u0131 i\u00e7in hayati \u00f6nem ta\u015f\u0131yordu.<\/p>\n<h3>3.1. Do\u011fru Kaynak \u0130stekleri (Requests) ve Limitleri (Limits)<\/h3>\n<p>Her CI pod'u i\u00e7in CPU ve bellek <code>requests<\/code> ve <code>limits<\/code> de\u011ferlerini dikkatlice ayarlad\u0131k. <code>requests<\/code> de\u011ferlerini, pod'un minimum ihtiya\u00e7lar\u0131n\u0131 kar\u015f\u0131layacak \u015fekilde belirledik ki Kubernetes Scheduler pod'u uygun kaynaklara sahip bir node'a yerle\u015ftirebilsin. <code>limits<\/code> de\u011ferlerini ise, pod'un a\u015f\u0131r\u0131 kaynak t\u00fcketerek di\u011fer pod'lar\u0131 etkilemesini engellemek i\u00e7in kulland\u0131k. Bu ayarlar\u0131, CI pod'lar\u0131n\u0131n ger\u00e7ek t\u00fcketimlerini g\u00f6zlemleyerek kademeli olarak optimize ettik.<\/p>\n<pre><code>\nresources:\n  requests:\n    memory: \"512Mi\"\n    cpu: \"1000m\" # 1 CPU \u00e7ekirde\u011fi\n  limits:\n    memory: \"2Gi\"\n    cpu: \"2000m\" # 2 CPU \u00e7ekirde\u011fi\n<\/pre>\n<p><\/code><\/p>\n<h3>3.2. \u00d6zel CI Node'lar\u0131 ve Node Selector'lar<\/h3>\n<p>Kritik CI i\u015f y\u00fcklerimizi, di\u011fer uygulamalar\u0131m\u0131zdan izole etmek i\u00e7in belirli node'lar\u0131 \"CI node'lar\u0131\" olarak etiketledik ve bu node'lara \u00f6zel taints (kirlilikler) uygulad\u0131k. CI pod'lar\u0131m\u0131za da bu taints'lere uygun tolerations (toleranslar) ve node selector'lar ekleyerek sadece bu \u00f6zel node'larda \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flad\u0131k. Bu, CI i\u015flerinin di\u011fer i\u015f y\u00fcklerinden etkilenmemesini ve her zaman yeterli kayna\u011fa sahip olmas\u0131n\u0131 garanti etti.<\/p>\n<h3>3.3. Pod Anti-Affinity Kullan\u0131m\u0131<\/h3>\n<p>Ayn\u0131 anda \u00e7al\u0131\u015fan birden fazla CI job'\u0131n\u0131n ayn\u0131 node \u00fczerinde yo\u011funla\u015farak performans d\u00fc\u015f\u00fc\u015f\u00fcne neden olmas\u0131n\u0131 engellemek i\u00e7in <code>pod anti-affinity<\/code> kurallar\u0131 uygulad\u0131k. Bu sayede, ayn\u0131 tipteki CI pod'lar\u0131n\u0131n farkl\u0131 node'lara da\u011f\u0131t\u0131lmas\u0131n\u0131 sa\u011flayarak kaynak \u00e7ak\u0131\u015fmalar\u0131n\u0131 minimuma indirdik.<\/p>\n<h2>4. Ak\u0131ll\u0131 \u00d6nbellekleme Stratejileri<\/h2>\n<p>Tekrarlanan i\u015flemleri ortadan kald\u0131rmak ve ba\u011f\u0131ml\u0131l\u0131k indirme s\u00fcrelerini k\u0131saltmak i\u00e7in \u00e7e\u015fitli \u00f6nbellekleme stratejileri uygulad\u0131k.<\/p>\n<h3>4.1. Ba\u011f\u0131ml\u0131l\u0131k \u00d6nbellekleme (Shared Volumes veya S3)<\/h3>\n<p>Node.js (<code>node_modules<\/code>), Maven (<code>.m2<\/code>), Python (<code>pip cache<\/code>) gibi ba\u011f\u0131ml\u0131l\u0131klar\u0131, CI job'lar\u0131 aras\u0131nda payla\u015f\u0131labilen bir mekanizma ile \u00f6nbelle\u011fe ald\u0131k. Bunun i\u00e7in iki ana yakla\u015f\u0131m kulland\u0131k:<\/p>\n<ul>\n<li><b>Persistent Volume Claims (PVC):<\/b> Kubernetes k\u00fcmesi i\u00e7inde kal\u0131c\u0131 bir depolama birimi olu\u015fturarak ba\u011f\u0131ml\u0131l\u0131klar\u0131 burada saklad\u0131k. Her CI job'\u0131 bu PVC'yi mount ederek \u00f6nbelle\u011fe eri\u015febildi. Ancak bu yakla\u015f\u0131m, farkl\u0131 node'larda \u00e7al\u0131\u015fan pod'lar aras\u0131nda performans sorunlar\u0131 yaratabildi\u011finden dikkatli kullan\u0131lmas\u0131 gerekir.<\/li>\n<li><b>Harici Depolama (S3\/MinIO):<\/b> Ba\u011f\u0131ml\u0131l\u0131k \u00f6nbelle\u011fini Amazon S3 veya k\u00fcme i\u00e7inde \u00e7al\u0131\u015fan MinIO gibi nesne depolama servislerinde tuttuk. CI job'lar\u0131, ba\u015flang\u0131\u00e7ta \u00f6nbelle\u011fi indirip sonunda g\u00fcncelleyerek geri y\u00fckledi. Bu y\u00f6ntem, da\u011f\u0131t\u0131k sistemler i\u00e7in daha esnek ve \u00f6l\u00e7eklenebilirdi.<\/li>\n<\/ul>\n<h3>4.2. Docker Katman \u00d6nbellekleme (BuildKit ve Kaniko)<\/h3>\n<p>Kubernetes ortam\u0131nda Docker derleme i\u015flemleri i\u00e7in BuildKit veya Kaniko gibi ara\u00e7lar\u0131 kulland\u0131k. Bu ara\u00e7lar, Docker daemon'a ihtiya\u00e7 duymadan container imajlar\u0131n\u0131 derleyebilir ve Docker katman \u00f6nbelleklemesini verimli bir \u015fekilde y\u00f6netebilir. \u00d6zellikle Kaniko, derleme \u00e7\u0131kt\u0131s\u0131n\u0131 bir registry'ye do\u011frudan g\u00f6nderebildi\u011fi i\u00e7in CI pipeline'lar\u0131nda \u00e7ok faydal\u0131 oldu.<\/p>\n<h3>4.3. Derleme \u00c7\u0131kt\u0131lar\u0131n\u0131 \u00d6nbellekleme<\/h3>\n<p>B\u00fcy\u00fck projelerde ara derleme \u00e7\u0131kt\u0131lar\u0131 (\u00f6rne\u011fin, derlenmi\u015f JAR dosyalar\u0131 veya frontend build \u00e7\u0131kt\u0131lar\u0131) da \u00f6nemli zaman alabilir. Bu \u00e7\u0131kt\u0131lar\u0131 da S3 gibi harici depolama birimlerinde \u00f6nbelle\u011fe alarak, sadece de\u011fi\u015fen k\u0131s\u0131mlar\u0131n yeniden derlenmesini sa\u011flad\u0131k.<\/p>\n<h2>5. A\u011f Performans\u0131 ve Harici Ba\u011f\u0131ml\u0131l\u0131klar<\/h2>\n<p>A\u011f gecikmelerini azaltmak ve harici ba\u011f\u0131ml\u0131l\u0131klara eri\u015fimi h\u0131zland\u0131rmak i\u00e7in ad\u0131mlar att\u0131k.<\/p>\n<h3>5.1. Yerel veya \u00d6zel \u0130maj Kay\u0131t Defterleri (Registry)<\/h3>\n<p>Docker imajlar\u0131m\u0131z\u0131 Docker Hub yerine, kendi Kubernetes k\u00fcmemizin i\u00e7inde veya k\u00fcmemize \u00e7ok yak\u0131n bir konumda \u00e7al\u0131\u015fan \u00f6zel bir imaj kay\u0131t defterinde (\u00f6rne\u011fin Harbor veya k\u00fcme i\u00e7i Docker Registry) bar\u0131nd\u0131rmaya ba\u015flad\u0131k. Bu, imaj \u00e7ekme s\u00fcrelerini \u00f6nemli \u00f6l\u00e7\u00fcde azaltt\u0131 \u00e7\u00fcnk\u00fc a\u011f gecikmesi ve bant geni\u015fli\u011fi sorunlar\u0131 ortadan kalkt\u0131.<\/p>\n<h3>5.2. DNS Optimizasyonu<\/h3>\n<p>CoreDNS yap\u0131land\u0131rmam\u0131z\u0131 inceledik ve harici DNS sorgular\u0131n\u0131n gecikmesini azaltmak i\u00e7in gerekli optimizasyonlar\u0131 yapt\u0131k. Gerekirse, daha h\u0131zl\u0131 yan\u0131t veren DNS sunucular\u0131n\u0131 kullanmak \u00fczere CoreDNS'i yap\u0131land\u0131rd\u0131k.<\/p>\n<h3>5.3. Harici Servislere Eri\u015fim Optimizasyonu<\/h3>\n<p>CI pipeline'lar\u0131m\u0131zda s\u0131k\u00e7a eri\u015filen harici veritabanlar\u0131 veya API'ler i\u00e7in, Kubernetes k\u00fcmesi ile bu servisler aras\u0131nda daha h\u0131zl\u0131 ve g\u00fcvenli ba\u011flant\u0131lar (\u00f6rne\u011fin, VPC peering veya \u00f6zel a\u011f ge\u00e7itleri) kurduk. Bu, her bir API \u00e7a\u011fr\u0131s\u0131n\u0131n veya veritaban\u0131 sorgusunun daha h\u0131zl\u0131 tamamlanmas\u0131n\u0131 sa\u011flad\u0131.<\/p>\n<h2>6. CI S\u00fcre\u00e7lerinin Paralelle\u015ftirilmesi ve \u0130yile\u015ftirilmesi<\/h2>\n<p>Pipeline'\u0131n i\u00e7 yap\u0131s\u0131n\u0131 g\u00f6zden ge\u00e7irerek daha verimli hale getirdik.<\/p>\n<h3>6.1. Paralel Ad\u0131mlar<\/h3>\n<p>CI pipeline'lar\u0131m\u0131zdaki ba\u011f\u0131ms\u0131z derleme, test veya linting ad\u0131mlar\u0131n\u0131 paralel olarak \u00e7al\u0131\u015facak \u015fekilde yeniden d\u00fczenledik. \u00d6rne\u011fin, farkl\u0131 mod\u00fcllerin testlerini veya farkl\u0131 linting kontrollerini ayn\u0131 anda ba\u015flatarak toplam s\u00fcreyi k\u0131saltt\u0131k. CI\/CD arac\u0131m\u0131z\u0131n (Jenkins, GitLab CI, Argo Workflows vb.) paralel y\u00fcr\u00fctme \u00f6zelliklerinden tam olarak faydaland\u0131k.<\/p>\n<h3>6.2. Monolitik Derlemeleri Par\u00e7alama<\/h3>\n<p>B\u00fcy\u00fck monolitik uygulamalar\u0131, m\u00fcmk\u00fcn oldu\u011funca mikroservis veya mod\u00fcler yap\u0131lar halinde par\u00e7alad\u0131k. Her bir mikroservisin veya mod\u00fcl\u00fcn kendi ba\u011f\u0131ms\u0131z CI pipeline'\u0131 olmas\u0131, sadece de\u011fi\u015fen bile\u015fenlerin derlenip test edilmesini sa\u011flayarak genel CI s\u00fcresini azaltt\u0131.<\/p>\n<h3>6.3. Daha H\u0131zl\u0131 Derleme Ara\u00e7lar\u0131<\/h3>\n<p>M\u00fcmk\u00fcn olan yerlerde, geleneksel derleme ara\u00e7lar\u0131 yerine Esbuild, SWC gibi daha h\u0131zl\u0131 ve modern derleyicileri veya bundler'lar\u0131 kullanmay\u0131 de\u011ferlendirdik. \u00d6zellikle frontend projelerinde bu t\u00fcr ara\u00e7lar ciddi h\u0131z art\u0131\u015flar\u0131 sa\u011flayabiliyor.<\/p>\n<h2>7. \u0130zleme ve G\u00f6zlemlenebilirlik<\/h2>\n<p>Optimizasyon s\u00fcrecimiz boyunca ve sonras\u0131nda, performans\u0131 s\u00fcrekli olarak izlemek ve darbo\u011fazlar\u0131 tespit etmek i\u00e7in g\u00fc\u00e7l\u00fc izleme ara\u00e7lar\u0131na g\u00fcvendik.<\/p>\n<h3>7.1. Kubernetes Metrikleri<\/h3>\n<p>Prometheus ve Grafana gibi ara\u00e7larla Kubernetes k\u00fcmemizin CPU, bellek, a\u011f I\/O gibi temel metriklerini s\u00fcrekli olarak izledik. \u00d6zellikle CI pod'lar\u0131m\u0131z\u0131n kaynak t\u00fcketimini yak\u0131ndan takip ederek, kaynak istekleri ve limitleri i\u00e7in en uygun de\u011ferleri bulduk.<\/p>\n<h3>7.2. CI Arac\u0131 Loglar\u0131 ve Analizi<\/h3>\n<p>CI\/CD arac\u0131m\u0131z\u0131n (\u00f6rne\u011fin Jenkins, GitLab CI) sa\u011flad\u0131\u011f\u0131 detayl\u0131 loglar\u0131 ve s\u00fcre raporlar\u0131n\u0131 analiz ettik. Hangi ad\u0131m\u0131n ne kadar s\u00fcrd\u00fc\u011f\u00fcn\u00fc belirleyerek, iyile\u015ftirme i\u00e7in en y\u00fcksek potansiyele sahip alanlar\u0131 tespit ettik.<\/p>\n<h3>7.3. Da\u011f\u0131t\u0131k \u0130zleme (Distributed Tracing)<\/h3>\n<p>Baz\u0131 durumlarda, pipeline i\u00e7indeki karma\u015f\u0131k etkile\u015fimleri ve a\u011f \u00e7a\u011fr\u0131lar\u0131n\u0131 izlemek i\u00e7in Jaeger veya Zipkin gibi da\u011f\u0131t\u0131k izleme ara\u00e7lar\u0131n\u0131 kulland\u0131k. Bu, \u00f6zellikle harici servislere yap\u0131lan \u00e7a\u011fr\u0131lar\u0131n gecikmelerini anlamak i\u00e7in faydal\u0131 oldu.<\/p>\n<h2>Sonu\u00e7<\/h2>\n<p>Kubernetes'e ge\u00e7i\u015f, CI pipeline'lar\u0131m\u0131z i\u00e7in ba\u015flang\u0131\u00e7ta beklenmedik bir performans d\u00fc\u015f\u00fc\u015f\u00fcyle sonu\u00e7lansa da, bu s\u00fcreci derinlemesine bir \u00f6\u011frenme ve optimizasyon f\u0131rsat\u0131na d\u00f6n\u00fc\u015ft\u00fcrd\u00fck. Docker imaj optimizasyonundan Kubernetes kaynak y\u00f6netimine, ak\u0131ll\u0131 \u00f6nbellekleme stratejilerinden a\u011f performans iyile\u015ftirmelerine kadar bir\u00e7ok alanda yapt\u0131\u011f\u0131m\u0131z de\u011fi\u015fiklikler sayesinde, pipeline s\u00fcrelerimizi 15 dakikadan tekrar 3-5 dakika aral\u0131\u011f\u0131na \u00e7ekmeyi ba\u015fard\u0131k. Bu s\u00fcre\u00e7 bize, Kubernetes'in g\u00fcc\u00fcnden tam olarak faydalanmak i\u00e7in sadece ge\u00e7i\u015f yapmakla kalmay\u0131p, platformun dinamiklerini iyi anlamak ve s\u00fcrekli optimizasyon yapmak gerekti\u011fini \u00f6\u011fretti. Her projenin kendine \u00f6zg\u00fc ihtiya\u00e7lar\u0131 olsa da, burada payla\u015ft\u0131\u011f\u0131m\u0131z stratejilerin benzer sorunlarla kar\u015f\u0131la\u015fan ekiplere yol g\u00f6sterece\u011fini umuyoruz. Unutmay\u0131n, performans optimizasyonu tek seferlik bir i\u015f de\u011fil, s\u00fcrekli bir yolculuktur.<\/p>\n<h2>S\u0131k Sorulan Sorular (SSS)<\/h2>\n<h3>Kubernetes'e ge\u00e7i\u015f neden CI'\u0131 yava\u015flatabilir?<\/h3>\n<p>Kubernetes, pod'lar\u0131n ba\u015flamas\u0131, imajlar\u0131n \u00e7ekilmesi, a\u011f yap\u0131land\u0131rmas\u0131 ve kaynak tahsisi gibi ek katmanlar getirir. Yanl\u0131\u015f yap\u0131land\u0131r\u0131ld\u0131\u011f\u0131nda (b\u00fcy\u00fck imajlar, yetersiz kaynaklar, \u00f6nbellekleme eksikli\u011fi), bu katmanlar CI s\u00fcre\u00e7lerine \u00f6nemli gecikmeler ekleyebilir.<\/p>\n<h3>Multi-stage Dockerfile'lar ger\u00e7ekten ne kadar fark yarat\u0131r?<\/h3>\n<p>\u00c7ok a\u015famal\u0131 Dockerfile'lar, nihai imaj boyutunu \u00f6nemli \u00f6l\u00e7\u00fcde k\u00fc\u00e7\u00fclterek imaj \u00e7ekme s\u00fcrelerini azalt\u0131r. Bu da her CI job'\u0131n\u0131n daha h\u0131zl\u0131 ba\u015flamas\u0131na olanak tan\u0131r. \u00d6zellikle derleme ba\u011f\u0131ml\u0131l\u0131klar\u0131 b\u00fcy\u00fck olan projelerde (\u00f6rne\u011fin Java, Node.js) b\u00fcy\u00fck fark yarat\u0131r.<\/p>\n<h3>CI\/CD i\u00e7in Persistent Volume kullanmak iyi bir fikir mi?<\/h3>\n<p>Evet, \u00f6zellikle ba\u011f\u0131ml\u0131l\u0131k \u00f6nbellekleme veya derleme \u00e7\u0131kt\u0131lar\u0131n\u0131 saklamak i\u00e7in Persistent Volume'lar faydal\u0131 olabilir. Ancak, farkl\u0131 node'larda \u00e7al\u0131\u015fan pod'lar aras\u0131nda \u00f6nbellek tutarl\u0131l\u0131\u011f\u0131 ve performans sorunlar\u0131 ya\u015fanmamas\u0131 i\u00e7in dikkatli planlama (\u00f6rne\u011fin, ReadWriteOnce yerine ReadWriteMany destekleyen depolama \u00e7\u00f6z\u00fcmleri) gereklidir. S3 gibi nesne depolama \u00e7\u00f6z\u00fcmleri genellikle daha esnek bir alternatif sunar.<\/p>\n<h3>Hangi metrikleri izlemeliyim?<\/h3>\n<p>Kubernetes taraf\u0131nda CPU\/bellek kullan\u0131m\u0131, a\u011f I\/O, pod ba\u015flang\u0131\u00e7 s\u00fcreleri ve disk I\/O gibi metrikleri izlemelisiniz. CI\/CD arac\u0131n\u0131zda ise her bir pipeline ad\u0131m\u0131n\u0131n s\u00fcresi, toplam pipeline s\u00fcresi ve ba\u015far\u0131s\u0131zl\u0131k oranlar\u0131 gibi metrikler kritik \u00f6neme sahiptir.<\/p>\n<h3>Bu optimizasyonlar maliyeti art\u0131r\u0131r m\u0131?<\/h3>\n<p>Baz\u0131 optimizasyonlar (\u00f6rne\u011fin, \u00f6zel CI node'lar\u0131, daha fazla depolama alan\u0131) ba\u015flang\u0131\u00e7ta maliyeti art\u0131rabilir. Ancak, daha h\u0131zl\u0131 CI s\u00fcre\u00e7leri, geli\u015ftirici verimlili\u011fini art\u0131r\u0131r, bekleme s\u00fcrelerini azalt\u0131r ve daha h\u0131zl\u0131 \u00fcr\u00fcn teslimat\u0131na olanak tan\u0131r. Uzun vadede, bu verimlilik art\u0131\u015f\u0131 genellikle maliyet art\u0131\u015f\u0131n\u0131 telafi eder ve hatta toplam maliyeti d\u00fc\u015f\u00fcrebilir.<\/p>\n","protected":false},"excerpt":{"rendered":"Kubernetes, modern uygulama da\u011f\u0131t\u0131m\u0131n\u0131n ve y\u00f6netiminin vazge\u00e7ilmez bir par\u00e7as\u0131 haline geldi. \u00d6l\u00e7eklenebilirlik, esneklik ve kaynak verimlili\u011fi va&#8230;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1491],"tags":[],"class_list":{"0":"post-38283","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-kubernetes","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Kubernetes&#039;e Ge\u00e7i\u015f Sonras\u0131 3 Dakikadan 15 Dakikaya \u00c7\u0131kan CI S\u00fcre\u00e7leri: \u0130\u015fte Nas\u0131l D\u00fczelttik! - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/kubernetese-gecis-sonrasi-3-dakikadan-15-dakikaya-cikan-ci-surecleri-iste-nasil-duzelttik\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kubernetes&#039;e Ge\u00e7i\u015f Sonras\u0131 3 Dakikadan 15 Dakikaya \u00c7\u0131kan CI S\u00fcre\u00e7leri: \u0130\u015fte Nas\u0131l D\u00fczelttik!\" \/>\n<meta property=\"og:description\" content=\"Kubernetes, modern uygulama da\u011f\u0131t\u0131m\u0131n\u0131n ve y\u00f6netiminin vazge\u00e7ilmez bir par\u00e7as\u0131 haline geldi. \u00d6l\u00e7eklenebilirlik, esneklik ve kaynak verimlili\u011fi va...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/kubernetese-gecis-sonrasi-3-dakikadan-15-dakikaya-cikan-ci-surecleri-iste-nasil-duzelttik\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-27T13:30:38+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kubernetese-gecis-sonrasi-3-dakikadan-15-dakikaya-cikan-ci-surecleri-iste-nasil-duzelttik\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kubernetese-gecis-sonrasi-3-dakikadan-15-dakikaya-cikan-ci-surecleri-iste-nasil-duzelttik\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Kubernetes&#8217;e Ge\u00e7i\u015f Sonras\u0131 3 Dakikadan 15 Dakikaya \u00c7\u0131kan CI S\u00fcre\u00e7leri: \u0130\u015fte Nas\u0131l D\u00fczelttik!\",\"datePublished\":\"2026-01-27T13:30:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kubernetese-gecis-sonrasi-3-dakikadan-15-dakikaya-cikan-ci-surecleri-iste-nasil-duzelttik\/\"},\"wordCount\":2429,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Kubernetes\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/kubernetese-gecis-sonrasi-3-dakikadan-15-dakikaya-cikan-ci-surecleri-iste-nasil-duzelttik\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kubernetese-gecis-sonrasi-3-dakikadan-15-dakikaya-cikan-ci-surecleri-iste-nasil-duzelttik\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/kubernetese-gecis-sonrasi-3-dakikadan-15-dakikaya-cikan-ci-surecleri-iste-nasil-duzelttik\/\",\"name\":\"Kubernetes'e Ge\u00e7i\u015f Sonras\u0131 3 Dakikadan 15 Dakikaya \u00c7\u0131kan CI S\u00fcre\u00e7leri: \u0130\u015fte Nas\u0131l D\u00fczelttik! - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-01-27T13:30:38+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kubernetese-gecis-sonrasi-3-dakikadan-15-dakikaya-cikan-ci-surecleri-iste-nasil-duzelttik\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/kubernetese-gecis-sonrasi-3-dakikadan-15-dakikaya-cikan-ci-surecleri-iste-nasil-duzelttik\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kubernetese-gecis-sonrasi-3-dakikadan-15-dakikaya-cikan-ci-surecleri-iste-nasil-duzelttik\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kubernetes&#8217;e Ge\u00e7i\u015f Sonras\u0131 3 Dakikadan 15 Dakikaya \u00c7\u0131kan CI S\u00fcre\u00e7leri: \u0130\u015fte Nas\u0131l D\u00fczelttik!\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Kubernetes'e Ge\u00e7i\u015f Sonras\u0131 3 Dakikadan 15 Dakikaya \u00c7\u0131kan CI S\u00fcre\u00e7leri: \u0130\u015fte Nas\u0131l D\u00fczelttik! - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/kubernetese-gecis-sonrasi-3-dakikadan-15-dakikaya-cikan-ci-surecleri-iste-nasil-duzelttik\/","og_locale":"tr_TR","og_type":"article","og_title":"Kubernetes'e Ge\u00e7i\u015f Sonras\u0131 3 Dakikadan 15 Dakikaya \u00c7\u0131kan CI S\u00fcre\u00e7leri: \u0130\u015fte Nas\u0131l D\u00fczelttik!","og_description":"Kubernetes, modern uygulama da\u011f\u0131t\u0131m\u0131n\u0131n ve y\u00f6netiminin vazge\u00e7ilmez bir par\u00e7as\u0131 haline geldi. \u00d6l\u00e7eklenebilirlik, esneklik ve kaynak verimlili\u011fi va...","og_url":"https:\/\/fatihsoysal.com\/blog\/kubernetese-gecis-sonrasi-3-dakikadan-15-dakikaya-cikan-ci-surecleri-iste-nasil-duzelttik\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-01-27T13:30:38+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"12 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/kubernetese-gecis-sonrasi-3-dakikadan-15-dakikaya-cikan-ci-surecleri-iste-nasil-duzelttik\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/kubernetese-gecis-sonrasi-3-dakikadan-15-dakikaya-cikan-ci-surecleri-iste-nasil-duzelttik\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Kubernetes&#8217;e Ge\u00e7i\u015f Sonras\u0131 3 Dakikadan 15 Dakikaya \u00c7\u0131kan CI S\u00fcre\u00e7leri: \u0130\u015fte Nas\u0131l D\u00fczelttik!","datePublished":"2026-01-27T13:30:38+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/kubernetese-gecis-sonrasi-3-dakikadan-15-dakikaya-cikan-ci-surecleri-iste-nasil-duzelttik\/"},"wordCount":2429,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Kubernetes"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/kubernetese-gecis-sonrasi-3-dakikadan-15-dakikaya-cikan-ci-surecleri-iste-nasil-duzelttik\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/kubernetese-gecis-sonrasi-3-dakikadan-15-dakikaya-cikan-ci-surecleri-iste-nasil-duzelttik\/","url":"https:\/\/fatihsoysal.com\/blog\/kubernetese-gecis-sonrasi-3-dakikadan-15-dakikaya-cikan-ci-surecleri-iste-nasil-duzelttik\/","name":"Kubernetes'e Ge\u00e7i\u015f Sonras\u0131 3 Dakikadan 15 Dakikaya \u00c7\u0131kan CI S\u00fcre\u00e7leri: \u0130\u015fte Nas\u0131l D\u00fczelttik! - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-01-27T13:30:38+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/kubernetese-gecis-sonrasi-3-dakikadan-15-dakikaya-cikan-ci-surecleri-iste-nasil-duzelttik\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/kubernetese-gecis-sonrasi-3-dakikadan-15-dakikaya-cikan-ci-surecleri-iste-nasil-duzelttik\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/kubernetese-gecis-sonrasi-3-dakikadan-15-dakikaya-cikan-ci-surecleri-iste-nasil-duzelttik\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Kubernetes&#8217;e Ge\u00e7i\u015f Sonras\u0131 3 Dakikadan 15 Dakikaya \u00c7\u0131kan CI S\u00fcre\u00e7leri: \u0130\u015fte Nas\u0131l D\u00fczelttik!"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/38283","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=38283"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/38283\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=38283"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=38283"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=38283"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}