{"id":37854,"date":"2026-01-17T01:40:54","date_gmt":"2026-01-16T22:40:54","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=37854"},"modified":"2026-01-17T01:40:54","modified_gmt":"2026-01-16T22:40:54","slug":"fleet-ve-fleetctl-kullanarak-coreos-kumenizi-yonetme-rehberi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/fleet-ve-fleetctl-kullanarak-coreos-kumenizi-yonetme-rehberi\/","title":{"rendered":"Fleet ve Fleetctl Kullanarak CoreOS K\u00fcmenizi Y\u00f6netme Rehberi"},"content":{"rendered":"<p><body><\/p>\n<h2>Fleet ve Fleetctl Kullanarak CoreOS K\u00fcmenizi Y\u00f6netme Rehberi<\/h2>\n<h2>Giri\u015f<\/h2>\n<p>Modern bulut tabanl\u0131 uygulamalar\u0131n ve mikroservis mimarilerinin y\u00fckseli\u015fiyle birlikte, da\u011f\u0131t\u0131k sistemlerin y\u00f6netimi kritik bir hale gelmi\u015ftir. Bu ba\u011flamda, CoreOS gibi hafif, kapsay\u0131c\u0131 odakl\u0131 i\u015fletim sistemleri, k\u00fcme y\u00f6netimini kolayla\u015ft\u0131ran ara\u00e7larla birlikte \u00f6ne \u00e7\u0131km\u0131\u015ft\u0131r. CoreOS, temel olarak systemd, etcd ve Docker gibi bile\u015fenler \u00fczerine in\u015fa edilmi\u015f, otomatik g\u00fcncellemeler ve g\u00fcvenlik odakl\u0131 bir Linux da\u011f\u0131t\u0131m\u0131d\u0131r. Ancak, bir CoreOS k\u00fcmesindeki servisleri t\u00fcm d\u00fc\u011f\u00fcmler aras\u0131nda tutarl\u0131 ve \u00f6l\u00e7eklenebilir bir \u015fekilde y\u00f6netmek i\u00e7in ek bir orkestrasyon katman\u0131na ihtiya\u00e7 duyulur. \u0130\u015fte bu noktada Fleet ve onun komut sat\u0131r\u0131 aray\u00fcz\u00fc olan fleetctl devreye girer.<\/p>\n<p>Fleet, CoreOS&#8217;un ilk zamanlar\u0131nda, da\u011f\u0131t\u0131k bir init sistemi olarak tasarlanm\u0131\u015f, systemd unit dosyalar\u0131n\u0131 bir k\u00fcme genelinde \u00e7al\u0131\u015ft\u0131rman\u0131za olanak tan\u0131yan bir ara\u00e7t\u0131. Her ne kadar g\u00fcn\u00fcm\u00fczde Kubernetes gibi daha geli\u015fmi\u015f konteyner orkestrasyon platformlar\u0131 taraf\u0131ndan b\u00fcy\u00fck \u00f6l\u00e7\u00fcde g\u00f6lgede b\u0131rak\u0131lm\u0131\u015f ve aktif geli\u015ftirilmesi durdurulmu\u015f olsa da, Fleet&#8217;in \u00e7al\u0131\u015fma prensiplerini ve CoreOS ekosistemindeki yerini anlamak, da\u011f\u0131t\u0131k sistem y\u00f6netimi ve konteyner orkestrasyonunun temel kavramlar\u0131n\u0131 kavramak a\u00e7\u0131s\u0131ndan hala de\u011ferli bir \u00f6\u011frenme deneyimi sunmaktad\u0131r. Bu makale, Fleet ve fleetctl&#8217;in CoreOS k\u00fcmelerinde nas\u0131l kullan\u0131ld\u0131\u011f\u0131n\u0131, mimarisini, temel ve geli\u015fmi\u015f komutlar\u0131n\u0131, pratik \u00f6rneklerini ve g\u00fcncel durumu hakk\u0131nda kapsaml\u0131 bir rehber sunmaktad\u0131r.<\/p>\n<h2>CoreOS, etcd ve systemd: Temeller<\/h2>\n<p>Fleet&#8217;in nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 anlamak i\u00e7in CoreOS&#8217;un temel yap\u0131 ta\u015flar\u0131n\u0131 kavramak \u00f6nemlidir. CoreOS, da\u011f\u0131t\u0131k sistemlerin ihtiya\u00e7lar\u0131na \u00f6zel olarak tasarlanm\u0131\u015f bir i\u015fletim sistemidir ve etcd ile systemd gibi kilit teknolojileri b\u00fcnyesinde bar\u0131nd\u0131r\u0131r.<\/p>\n<h3>CoreOS&#8217;un Mimarisi<\/h3>\n<p>CoreOS, &#8220;immutable infrastructure&#8221; (de\u011fi\u015fmez altyap\u0131) felsefesiyle tasarlanm\u0131\u015ft\u0131r. Bu, i\u015fletim sisteminin kendisinin de\u011fi\u015ftirilemez oldu\u011fu ve g\u00fcncellemelerin atomik olarak t\u00fcm sistemin de\u011fi\u015ftirilmesiyle yap\u0131ld\u0131\u011f\u0131 anlam\u0131na gelir. Uygulamalar ise Docker konteynerleri i\u00e7inde \u00e7al\u0131\u015ft\u0131r\u0131l\u0131r. Bu yakla\u015f\u0131m, sistem tutarl\u0131l\u0131\u011f\u0131n\u0131 ve g\u00fcvenli\u011fini art\u0131r\u0131rken, karma\u015f\u0131k ba\u011f\u0131ml\u0131l\u0131k sorunlar\u0131n\u0131 da en aza indirir. CoreOS&#8217;un hafif yap\u0131s\u0131 ve konteyner odakl\u0131 yakla\u015f\u0131m\u0131, onu da\u011f\u0131t\u0131k servisler i\u00e7in ideal bir platform haline getirir.<\/p>\n<h3>etcd: Da\u011f\u0131t\u0131k Yap\u0131land\u0131rma Deposu<\/h3>\n<p>etcd, CoreOS&#8217;un kalbinde yer alan, da\u011f\u0131t\u0131k ve tutarl\u0131 bir anahtar-de\u011fer deposudur. Da\u011f\u0131t\u0131k sistemlerdeki yap\u0131land\u0131rma verilerini, servis ke\u015ffi bilgilerini ve koordinasyon durumlar\u0131n\u0131 g\u00fcvenilir bir \u015fekilde saklamak i\u00e7in kullan\u0131l\u0131r. etcd, Raft konsens\u00fcs algoritmas\u0131n\u0131 kullanarak y\u00fcksek eri\u015filebilirlik ve veri tutarl\u0131l\u0131\u011f\u0131 sa\u011flar. CoreOS k\u00fcmelerindeki t\u00fcm d\u00fc\u011f\u00fcmler, birbirleriyle ve di\u011fer servislerle ileti\u015fim kurmak i\u00e7in etcd&#8217;yi kullan\u0131r. Fleet de servislerin durumunu ve yerle\u015fim bilgilerini etcd \u00fczerinde depolar ve bu sayede k\u00fcme genelinde servislerin orkestrasyonunu m\u00fcmk\u00fcn k\u0131lar.<\/p>\n<h3>systemd: Servis Y\u00f6neticisi<\/h3>\n<p>systemd, Linux i\u015fletim sistemlerinde servisleri ve sistem kaynaklar\u0131n\u0131 y\u00f6netmek i\u00e7in kullan\u0131lan bir init sistemidir. Bir\u00e7ok modern Linux da\u011f\u0131t\u0131m\u0131nda varsay\u0131lan init sistemi olarak g\u00f6rev yapar. systemd, servisleri &#8220;unit&#8221; ad\u0131 verilen yap\u0131land\u0131rma dosyalar\u0131 arac\u0131l\u0131\u011f\u0131yla tan\u0131mlar ve y\u00f6netir. Bu unit dosyalar\u0131, servislerin nas\u0131l ba\u015flat\u0131laca\u011f\u0131n\u0131, durdurulaca\u011f\u0131n\u0131, hangi ba\u011f\u0131ml\u0131l\u0131klara sahip oldu\u011funu ve hangi kaynaklar\u0131 kullanaca\u011f\u0131n\u0131 belirler. CoreOS&#8217;ta her bir d\u00fc\u011f\u00fcmde systemd \u00e7al\u0131\u015f\u0131r ve yerel servisleri y\u00f6netir. Fleet ise bu yerel systemd&#8217;lerin \u00fczerine in\u015fa edilerek, unit dosyalar\u0131n\u0131 bir k\u00fcme genelinde da\u011f\u0131t\u0131k olarak y\u00f6netme yetene\u011fi kazand\u0131r\u0131r.<\/p>\n<h2>Fleet Nedir ve Neden \u0130htiya\u00e7 Duyulur?<\/h2>\n<p>CoreOS&#8217;un temel bile\u015fenleri olan etcd ve systemd, tek bir d\u00fc\u011f\u00fcm \u00fczerindeki servis y\u00f6netiminde olduk\u00e7a etkilidir. Ancak, birden fazla CoreOS d\u00fc\u011f\u00fcm\u00fcnden olu\u015fan bir k\u00fcmede, servislerin da\u011f\u0131t\u0131k olarak y\u00f6netilmesi, y\u00fck dengelemesi ve y\u00fcksek eri\u015filebilirlik gibi zorluklar ortaya \u00e7\u0131kar. \u0130\u015fte Fleet bu zorluklar\u0131 a\u015fmak i\u00e7in tasarlanm\u0131\u015ft\u0131r.<\/p>\n<h3>Fleet&#8217;in Tan\u0131m\u0131<\/h3>\n<p>Fleet, CoreOS k\u00fcmeleri i\u00e7in tasarlanm\u0131\u015f, da\u011f\u0131t\u0131k bir systemd olarak tan\u0131mlanabilir. Temel amac\u0131, systemd unit dosyalar\u0131n\u0131 al\u0131p bunlar\u0131 bir CoreOS k\u00fcmesindeki uygun d\u00fc\u011f\u00fcmlere da\u011f\u0131tmak ve y\u00f6netmektir. Bir servisi bir d\u00fc\u011f\u00fcmde ba\u015flatmak yerine, Fleet ile bir servisi k\u00fcme genelinde ba\u015flatma talimat\u0131 verirsiniz ve Fleet, etcd&#8217;yi kullanarak bu servisi hangi d\u00fc\u011f\u00fcmde \u00e7al\u0131\u015ft\u0131raca\u011f\u0131na karar verir ve o d\u00fc\u011f\u00fcmdeki yerel systemd&#8217;yi kullanarak servisi ba\u015flat\u0131r. Bu sayede, geli\u015ftiriciler ve sistem y\u00f6neticileri, servislerini tek bir mant\u0131ksal birim olarak d\u00fc\u015f\u00fcnebilir ve k\u00fcmenin karma\u015f\u0131kl\u0131\u011f\u0131yla do\u011frudan u\u011fra\u015fmak zorunda kalmazlar.<\/p>\n<h3>Da\u011f\u0131t\u0131k Servis Y\u00f6netimi Zorluklar\u0131<\/h3>\n<p>B\u00fcy\u00fck \u00f6l\u00e7ekli da\u011f\u0131t\u0131k sistemlerde servis y\u00f6netimi, \u00e7e\u015fitli zorluklar\u0131 beraberinde getirir:<br \/>\n*   <strong>Servis Yerle\u015fimi:<\/strong> Hangi servisin hangi sunucuda \u00e7al\u0131\u015faca\u011f\u0131 nas\u0131l belirlenir? Kaynak kullan\u0131m\u0131, performans ve g\u00fcvenlik gereksinimleri nas\u0131l dikkate al\u0131n\u0131r?<br \/>\n*   <strong>Y\u00fcksek Eri\u015filebilirlik:<\/strong> Bir sunucu ar\u0131zaland\u0131\u011f\u0131nda, o sunucudaki servisler otomatik olarak ba\u015fka bir sunucuya nas\u0131l ta\u015f\u0131n\u0131r veya yeniden ba\u015flat\u0131l\u0131r?<br \/>\n*   <strong>\u00d6l\u00e7eklenebilirlik:<\/strong> Servislere olan talep artt\u0131\u011f\u0131nda, yeni \u00f6rnekler otomatik olarak nas\u0131l ba\u015flat\u0131l\u0131r ve k\u00fcme genelinde nas\u0131l da\u011f\u0131t\u0131l\u0131r?<br \/>\n*   <strong>Yap\u0131land\u0131rma Y\u00f6netimi:<\/strong> Servislerin yap\u0131land\u0131rma bilgileri (portlar, IP adresleri, ba\u011f\u0131ml\u0131l\u0131klar) k\u00fcme genelinde nas\u0131l tutarl\u0131 bir \u015fekilde y\u00f6netilir ve g\u00fcncellenir?<br \/>\n*   <strong>Servis Ke\u015ffi:<\/strong> Bir servis, di\u011fer servislerin nerede \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 nas\u0131l \u00f6\u011frenir ve onlarla nas\u0131l ileti\u015fim kurar?<\/p>\n<h3>Fleet&#8217;in Sa\u011flad\u0131\u011f\u0131 \u00c7\u00f6z\u00fcmler<\/h3>\n<p>Fleet, bu zorluklara a\u015fa\u011f\u0131daki gibi \u00e7\u00f6z\u00fcmler sunar:<br \/>\n*   <strong>K\u00fcresel Servis G\u00f6r\u00fcn\u00fcm\u00fc:<\/strong> T\u00fcm k\u00fcme genelindeki \u00e7al\u0131\u015fan servislerin ve d\u00fc\u011f\u00fcmlerin merkezi bir g\u00f6r\u00fcn\u00fcm\u00fcn\u00fc sa\u011flar.<br \/>\n*   <strong>Servis Yerle\u015fim K\u0131s\u0131tlamalar\u0131:<\/strong> Geli\u015fmi\u015f unit dosyas\u0131 se\u00e7enekleri arac\u0131l\u0131\u011f\u0131yla, servislerin belirli \u00f6zelliklere sahip d\u00fc\u011f\u00fcmlerde (\u00f6rne\u011fin, belirli bir donan\u0131m etiketine sahip d\u00fc\u011f\u00fcmler) \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flayabilir veya belirli servislerin ayn\u0131 d\u00fc\u011f\u00fcmde \u00e7al\u0131\u015fmas\u0131n\u0131 engelleyebilirsiniz.<br \/>\n*   <strong>Otomatik Yeniden Planlama:<\/strong> Bir d\u00fc\u011f\u00fcm ar\u0131zaland\u0131\u011f\u0131nda, Fleet o d\u00fc\u011f\u00fcmdeki ba\u015far\u0131s\u0131z olan servisleri otomatik olarak k\u00fcmedeki ba\u015fka uygun bir d\u00fc\u011f\u00fcme ta\u015f\u0131yarak y\u00fcksek eri\u015filebilirlik sa\u011flamaya \u00e7al\u0131\u015f\u0131r.<br \/>\n*   <strong>Basitle\u015ftirilmi\u015f Da\u011f\u0131t\u0131m:<\/strong> Geli\u015ftiricilerin, servislerini da\u011f\u0131tmak i\u00e7in tek tek d\u00fc\u011f\u00fcmlerle u\u011fra\u015fmak yerine, fleetctl arac\u0131l\u0131\u011f\u0131yla k\u00fcme genelinde tek bir komutla da\u011f\u0131t\u0131m yapmas\u0131n\u0131 sa\u011flar.<\/p>\n<h2>Fleet Mimarisi ve \u00c7al\u0131\u015fma Prensibi<\/h2>\n<p>Fleet, etcd&#8217;yi temel alarak, CoreOS k\u00fcmesindeki t\u00fcm d\u00fc\u011f\u00fcmler aras\u0131nda servislerin orkestrasyonunu sa\u011flar. Mimarisini ve nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 anlamak, Fleet&#8217;i etkin bir \u015fekilde kullanmak i\u00e7in hayati \u00f6neme sahiptir.<\/p>\n<h3>Bile\u015fenler<\/h3>\n<p>Fleet mimarisi temel olarak \u00fc\u00e7 ana bile\u015fenden olu\u015fur:<br \/>\n*   <strong><code>fleetd<\/code> Agent:<\/strong> Her CoreOS d\u00fc\u011f\u00fcm\u00fcnde \u00e7al\u0131\u015fan bir Fleet ajan\u0131d\u0131r. Bu ajan, etcd&#8217;yi izler, etcd&#8217;deki servis durumu de\u011fi\u015fikliklerini alg\u0131lar ve yerel systemd ile etkile\u015fime girerek servisleri ba\u015flat\u0131r, durdurur veya yeniden ba\u015flat\u0131r. Ayr\u0131ca, d\u00fc\u011f\u00fcm\u00fcn kendi durumunu (\u00f6rne\u011fin, mevcut kaynaklar\u0131, meta verileri) etcd&#8217;ye yazar.<br \/>\n*   <strong>etcd:<\/strong> Daha \u00f6nce bahsedildi\u011fi gibi, etcd Fleet&#8217;in omurgas\u0131d\u0131r. T\u00fcm servis unit dosyalar\u0131, servislerin mevcut durumlar\u0131, beklenen durumlar\u0131, d\u00fc\u011f\u00fcm meta verileri ve Fleet&#8217;in dahili durum bilgileri etcd&#8217;de saklan\u0131r. Fleetd ajanlar\u0131 ve fleetctl istemcisi etcd \u00fczerinden ileti\u015fim kurar.<br \/>\n*   <strong><code>fleetctl<\/code> \u0130stemci:<\/strong> Kullan\u0131c\u0131lar\u0131n Fleet k\u00fcmesiyle etkile\u015fim kurmas\u0131n\u0131 sa\u011flayan komut sat\u0131r\u0131 aray\u00fcz\u00fcd\u00fcr. <code>fleetctl<\/code>, etcd&#8217;ye do\u011frudan veya bir <code>fleetd<\/code> ajan\u0131 arac\u0131l\u0131\u011f\u0131yla ba\u011flanarak servisleri g\u00f6nderme, ba\u015flatma, durdurma, silme ve k\u00fcme durumunu sorgulama gibi i\u015flemleri ger\u00e7ekle\u015ftirir.<\/p>\n<h3>Nas\u0131l \u00c7al\u0131\u015f\u0131r?<\/h3>\n<p>Fleet&#8217;in \u00e7al\u0131\u015fma prensibi olduk\u00e7a basittir ancak da\u011f\u0131t\u0131k sistemlerin karma\u015f\u0131kl\u0131\u011f\u0131n\u0131 gizler:<br \/>\n1.  <strong>Unit G\u00f6nderimi:<\/strong> Bir kullan\u0131c\u0131 <code>fleetctl submit my-service.service<\/code> komutunu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131nda, <code>fleetctl<\/code> bu unit dosyas\u0131n\u0131 etcd&#8217;ye yazar. Unit dosyas\u0131 etcd&#8217;de &#8220;bekleyen&#8221; (pending) bir durumla i\u015faretlenir.<br \/>\n2.  <strong>Planlama:<\/strong> <code>fleetd<\/code> ajanlar\u0131, etcd&#8217;deki de\u011fi\u015fiklikleri s\u00fcrekli olarak izler. Yeni bir unit dosyas\u0131 etcd&#8217;ye yaz\u0131ld\u0131\u011f\u0131nda, bir <code>fleetd<\/code> ajan\u0131 (veya i\u00e7indeki bir planlay\u0131c\u0131 bile\u015feni), bu unit dosyas\u0131n\u0131 hangi d\u00fc\u011f\u00fcmde \u00e7al\u0131\u015ft\u0131rmas\u0131 gerekti\u011fine karar verir. Bu karar, unit dosyas\u0131ndaki <code>X-Fleet<\/code> direktifleri (yerle\u015fim k\u0131s\u0131tlamalar\u0131) ve d\u00fc\u011f\u00fcmlerin mevcut durumu (kaynaklar, meta veriler) dikkate al\u0131narak verilir.<br \/>\n3.  <strong>Ba\u015flatma:<\/strong> Karar verilen d\u00fc\u011f\u00fcmdeki <code>fleetd<\/code> ajan\u0131, etcd&#8217;den ilgili unit dosyas\u0131n\u0131 al\u0131r ve yerel systemd&#8217;yi kullanarak servisi ba\u015flat\u0131r (<code>systemctl start my-service.service<\/code>).<br \/>\n4.  <strong>Durum G\u00fcncellemesi:<\/strong> Servis ba\u015flat\u0131ld\u0131ktan sonra, <code>fleetd<\/code> ajan\u0131 servisin durumunu (\u00e7al\u0131\u015f\u0131yor, durdu, ba\u015far\u0131s\u0131z oldu vb.) etcd&#8217;ye geri yazar. Bu durum, <code>fleetctl list-units<\/code> gibi komutlarla sorgulanabilir.<br \/>\n5.  <strong>Hata Durumunda Yeniden Planlama:<\/strong> E\u011fer bir d\u00fc\u011f\u00fcm ar\u0131zalan\u0131rsa veya bir servis beklenmedik bir \u015fekilde durursa, etcd&#8217;deki durum bilgisi g\u00fcncellenir. <code>fleetd<\/code> ajanlar\u0131 bu de\u011fi\u015fikli\u011fi alg\u0131lar ve ar\u0131zal\u0131 servisi k\u00fcmedeki ba\u015fka uygun bir d\u00fc\u011f\u00fcme otomatik olarak yeniden planlamaya \u00e7al\u0131\u015f\u0131r. Bu, Fleet&#8217;in temel y\u00fcksek eri\u015filebilirlik \u00f6zelliklerinden biridir.<\/p>\n<h2>Fleetctl Kullan\u0131m\u0131: Temel Komutlar ve \u0130\u015flemler<\/h2>\n<p><code>fleetctl<\/code>, Fleet k\u00fcmesiyle etkile\u015fim kurmak i\u00e7in kullan\u0131lan ana komut sat\u0131r\u0131 arac\u0131d\u0131r. Bu b\u00f6l\u00fcmde <code>fleetctl<\/code>&#8216;in kurulumu, k\u00fcme ba\u011flant\u0131s\u0131 ve temel servis y\u00f6netimi komutlar\u0131 ele al\u0131nacakt\u0131r.<\/p>\n<h3>Kurulum ve Ba\u011flant\u0131<\/h3>\n<p>CoreOS i\u015fletim sistemlerinde <code>fleetctl<\/code> genellikle \u00f6nceden y\u00fckl\u00fc olarak gelir. E\u011fer y\u00fckl\u00fc de\u011filse, CoreOS dok\u00fcmantasyonundan veya Fleet GitHub sayfas\u0131ndan indirilebilir. <code>fleetctl<\/code>&#8216;in k\u00fcme ile ileti\u015fim kurabilmesi i\u00e7in etcd&#8217;ye eri\u015fmesi gerekir. Bu genellikle iki yolla yap\u0131l\u0131r:<br \/>\n*   <strong>SSH T\u00fcnelleme (\u00d6nerilen):<\/strong> En g\u00fcvenli ve yayg\u0131n y\u00f6ntemdir. <code>fleetctl<\/code>, k\u00fcmedeki bir CoreOS d\u00fc\u011f\u00fcm\u00fcne SSH t\u00fcneli kurarak etcd&#8217;ye eri\u015fir.<\/p>\n<pre><code class=\"language-bash\">export FLEETCTL_TUNNEL=coreos-node-ip:22\n    fleetctl list-machines<\/code><\/pre>\n<p>    Bu komut, <code>coreos-node-ip<\/code> adresindeki CoreOS d\u00fc\u011f\u00fcm\u00fcne SSH \u00fczerinden ba\u011flan\u0131r ve etcd&#8217;ye eri\u015fmek i\u00e7in bir t\u00fcnel olu\u015fturur.<br \/>\n*   <strong>Do\u011frudan etcd U\u00e7 Noktas\u0131:<\/strong> Daha az g\u00fcvenli olmakla birlikte, etcd u\u00e7 noktalar\u0131n\u0131n do\u011frudan eri\u015filebilir oldu\u011fu durumlarda kullan\u0131labilir.<\/p>\n<pre><code class=\"language-bash\">export FLEETCTL_ENDPOINT=http:\/\/etcd-cluster-ip:2379\n    fleetctl list-machines<\/code><\/pre>\n<p>    Bu y\u00f6ntem, etcd&#8217;nin herkese a\u00e7\u0131k olmas\u0131 durumunda g\u00fcvenlik riskleri ta\u015f\u0131r ve genellikle \u00fcretim ortamlar\u0131nda \u00f6nerilmez.<\/p>\n<h3>K\u00fcme Durumunu G\u00f6r\u00fcnt\u00fcleme<\/h3>\n<p>K\u00fcmenin genel durumunu ve \u00e7al\u0131\u015fan servisleri g\u00f6r\u00fcnt\u00fclemek i\u00e7in a\u015fa\u011f\u0131daki komutlar kullan\u0131l\u0131r:<br \/>\n*   <strong><code>fleetctl list-machines<\/code>:<\/strong> K\u00fcmedeki t\u00fcm CoreOS d\u00fc\u011f\u00fcmlerini listeler. Her d\u00fc\u011f\u00fcm\u00fcn ID&#8217;si, IP adresi, durum bilgisi ve varsa meta verileri g\u00f6sterilir.<\/p>\n<pre><code class=\"language-bash\">fleetctl list-machines<\/code><\/pre>\n<p>    \u00c7\u0131kt\u0131 \u00f6rne\u011fi:<\/p>\n<pre><code class=\"language-\">MACHINE         IP              METADATA        STATE\n    4a1b2c3d...     192.168.1.101   role=web        up\n    5b2c3d4e...     192.168.1.102   role=db         up<\/code><\/pre>\n<p>*   <strong><code>fleetctl list-units<\/code>:<\/strong> K\u00fcme genelinde Fleet taraf\u0131ndan y\u00f6netilen t\u00fcm unit dosyalar\u0131n\u0131 listeler. Hangi unit&#8217;in hangi makinede \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131, durumunu ve istenen durumunu g\u00f6sterir.<\/p>\n<pre><code class=\"language-bash\">fleetctl list-units<\/code><\/pre>\n<p>    \u00c7\u0131kt\u0131 \u00f6rne\u011fi:<\/p>\n<pre><code class=\"language-\">UNIT            MACHINE         ACTIVE          SUB\n    my-app.service  4a1b2c3d...\/192.168.1.101  active          running\n    nginx.service   5b2c3d4e...\/192.168.1.102  active          running<\/code><\/pre>\n<p>*   <strong><code>fleetctl status <unit-ad\u0131><\/code>:<\/strong> Belirli bir unit&#8217;in detayl\u0131 durumunu, loglar\u0131n\u0131 ve systemd \u00e7\u0131kt\u0131s\u0131n\u0131 g\u00f6sterir.<\/p>\n<pre><code class=\"language-bash\">fleetctl status my-app.service<\/code><\/pre>\n<p>*   <strong><code>fleetctl journal <unit-ad\u0131><\/code>:<\/strong> Belirli bir unit&#8217;in systemd journal loglar\u0131n\u0131 g\u00f6r\u00fcnt\u00fcler. Bu, servislerdeki sorunlar\u0131 gidermek i\u00e7in \u00e7ok kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<pre><code class=\"language-bash\">fleetctl journal my-app.service<\/code><\/pre>\n<h3>Unit Dosyalar\u0131 Olu\u015fturma<\/h3>\n<p>Fleet, standart systemd unit dosyalar\u0131n\u0131 kullan\u0131r. Ancak, da\u011f\u0131t\u0131k davran\u0131\u015f\u0131n\u0131 kontrol etmek i\u00e7in <code>[X-Fleet]<\/code> b\u00f6l\u00fcm\u00fcnde \u00f6zel direktifler de ekleyebilirsiniz. Bir \u00f6rnek Nginx servis unit dosyas\u0131:<\/p>\n<pre><code class=\"language-ini\"># nginx.service\n[Unit]\nDescription=Nginx Web Server\nAfter=docker.service\nRequires=docker.service\n\n[Service]\nTimeoutStartSec=0\nExecStartPre=-\/usr\/bin\/docker kill nginx\nExecStartPre=-\/usr\/bin\/docker rm nginx\nExecStartPre=\/usr\/bin\/docker pull nginx:latest\nExecStart=\/usr\/bin\/docker run --name nginx -p 80:80 nginx:latest\nExecStop=\/usr\/bin\/docker stop nginx\nExecStopPost=\/usr\/bin\/docker rm nginx\n\n[Install]\nWantedBy=multi-user.target\n\n[X-Fleet]\n<h2>Bu servisin k\u00fcme genelinde tek bir \u00f6rnek olarak \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar<\/h2>\n<h2>X-Fleet-Global=true # E\u011fer her d\u00fc\u011f\u00fcmde \u00e7al\u0131\u015fmas\u0131n\u0131 isteseydik<\/h2>\nConflicts=nginx.service # Ayn\u0131 isimde ba\u015fka bir nginx servisiyle \u00e7ak\u0131\u015fmas\u0131n\u0131 engeller<\/code><\/pre>\n<p>Yukar\u0131daki \u00f6rnekte:<br \/>\n*   <code>[Unit]<\/code> b\u00f6l\u00fcm\u00fc, servisin tan\u0131m\u0131n\u0131 ve ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 i\u00e7erir. <code>After=docker.service<\/code> ve <code>Requires=docker.service<\/code> Docker&#8217;\u0131n \u00e7al\u0131\u015f\u0131r durumda olmas\u0131n\u0131 sa\u011flar.<br \/>\n*   <code>[Service]<\/code> b\u00f6l\u00fcm\u00fc, servisin nas\u0131l ba\u015flat\u0131laca\u011f\u0131n\u0131 (<code>ExecStart<\/code>), durdurulaca\u011f\u0131n\u0131 (<code>ExecStop<\/code>) ve \u00f6n\/son ad\u0131mlar\u0131 (<code>ExecStartPre<\/code>, <code>ExecStopPost<\/code>) tan\u0131mlar. Docker konteynerlerini y\u00f6netmek i\u00e7in Docker komutlar\u0131 kullan\u0131l\u0131r.<br \/>\n*   <code>[Install]<\/code> b\u00f6l\u00fcm\u00fc, servisin systemd taraf\u0131ndan nas\u0131l etkinle\u015ftirilece\u011fini belirtir.<br \/>\n*   <code>[X-Fleet]<\/code> b\u00f6l\u00fcm\u00fc, Fleet&#8217;e \u00f6zel talimatlar i\u00e7erir. <code>Conflicts=nginx.service<\/code> direktifi, k\u00fcmede yaln\u0131zca bir tane <code>nginx.service<\/code> \u00f6rne\u011finin \u00e7al\u0131\u015fmas\u0131n\u0131 garanti eder.<\/p>\n<h3>Unitleri Y\u00fckleme ve Ba\u015flatma<\/h3>\n<p>Unit dosyalar\u0131n\u0131 olu\u015fturduktan sonra, bunlar\u0131 Fleet k\u00fcmesine g\u00f6ndermeniz ve ba\u015flatman\u0131z gerekir:<br \/>\n1.  <strong>Unit Dosyas\u0131n\u0131 G\u00f6nderme (Submit):<\/strong> Unit dosyas\u0131n\u0131 etcd&#8217;ye kaydeder, ancak hen\u00fcz ba\u015flatmaz.<\/p>\n<pre><code class=\"language-bash\">fleetctl submit nginx.service<\/code><\/pre>\n<p>2.  <strong>Unit&#8217;i Ba\u015flatma (Start):<\/strong> Etcd&#8217;ye kaydedilmi\u015f unit&#8217;i k\u00fcmede ba\u015flatma talimat\u0131n\u0131 verir. Fleet, uygun bir d\u00fc\u011f\u00fcm bulup servisi orada \u00e7al\u0131\u015ft\u0131r\u0131r.<\/p>\n<pre><code class=\"language-bash\">fleetctl start nginx.service<\/code><\/pre>\n<p>    Bu iki ad\u0131m\u0131 tek bir komutla da yapabilirsiniz: <code>fleetctl load nginx.service<\/code> (y\u00fckler ve ba\u015flat\u0131r) veya <code>fleetctl start nginx.service<\/code> (e\u011fer zaten submit edilmi\u015fse).<br \/>\n3.  <strong>Durumu Kontrol Etme:<\/strong> Servisin ba\u015far\u0131yla ba\u015flat\u0131l\u0131p ba\u015flat\u0131lmad\u0131\u011f\u0131n\u0131 kontrol edin.<\/p>\n<pre><code class=\"language-bash\">fleetctl list-units\n    fleetctl status nginx.service<\/code><\/pre>\n<h3>Unitleri Durdurma ve Kald\u0131rma<\/h3>\n<p>Bir servisi durdurmak veya k\u00fcmeden tamamen kald\u0131rmak i\u00e7in a\u015fa\u011f\u0131daki komutlar\u0131 kullan\u0131n:<br \/>\n*   <strong>Unit&#8217;i Durdurma (Stop):<\/strong> Servisi \u00e7al\u0131\u015ft\u0131ran d\u00fc\u011f\u00fcmdeki yerel systemd&#8217;ye durdurma sinyali g\u00f6nderir. Unit dosyas\u0131 etcd&#8217;de kal\u0131r.<\/p>\n<pre><code class=\"language-bash\">fleetctl stop nginx.service<\/code><\/pre>\n<p>*   <strong>Unit&#8217;i Kald\u0131rma (Destroy):<\/strong> Servisi durdurur ve unit dosyas\u0131n\u0131 etcd&#8217;den tamamen siler.<\/p>\n<pre><code class=\"language-bash\">fleetctl destroy nginx.service<\/code><\/pre>\n<h3>Unitlerin G\u00fcncellenmesi<\/h3>\n<p>Bir unit dosyas\u0131n\u0131 g\u00fcncelledikten sonra, de\u011fi\u015fiklikleri k\u00fcmede uygulamak i\u00e7in servisi yeniden g\u00f6ndermeniz ve ba\u015flatman\u0131z gerekir:<br \/>\n1.  <strong>Mevcut Servisi Durdur ve Kald\u0131r:<\/strong><\/p>\n<pre><code class=\"language-bash\">fleetctl stop my-app.service\n    fleetctl destroy my-app.service<\/code><\/pre>\n<p>2.  <strong>G\u00fcncellenmi\u015f Unit Dosyas\u0131n\u0131 G\u00f6nder ve Ba\u015flat:<\/strong><\/p>\n<pre><code class=\"language-bash\">fleetctl submit my-app.service\n    fleetctl start my-app.service<\/code><\/pre>\n<p>S\u0131f\u0131r kesinti s\u00fcreli g\u00fcncellemeler i\u00e7in, servisin birden fazla \u00f6rne\u011fini \u00e7al\u0131\u015ft\u0131r\u0131p, yeni s\u00fcr\u00fcm\u00fc ayr\u0131 bir isimle ba\u015flat\u0131p, eski s\u00fcr\u00fcm\u00fc durdurmadan \u00f6nce yeni s\u00fcr\u00fcm\u00fcn haz\u0131r olmas\u0131n\u0131 beklemek gibi daha geli\u015fmi\u015f stratejiler gerekebilir. Fleet, bu t\u00fcr karma\u015f\u0131k senaryolar\u0131 do\u011frudan desteklemese de, temel mekanizmalar\u0131 sa\u011flayarak bu t\u00fcr stratejilerin uygulanmas\u0131na olanak tan\u0131r.<\/p>\n<h2>Geli\u015fmi\u015f Fleet Kullan\u0131m\u0131 ve Stratejiler<\/h2>\n<p>Fleet, sadece servisleri ba\u015flat\u0131p durdurmaktan daha fazlas\u0131n\u0131 yapabilir. Geli\u015fmi\u015f \u00f6zellikleri sayesinde, servis yerle\u015fimini kontrol edebilir, ba\u011f\u0131ml\u0131l\u0131klar\u0131 y\u00f6netebilir ve daha dayan\u0131kl\u0131 uygulamalar olu\u015fturabilirsiniz.<\/p>\n<h3>Unit Ba\u011flant\u0131lar\u0131 ve Ba\u011f\u0131ml\u0131l\u0131klar<\/h3>\n<p>Systemd unit dosyalar\u0131nda oldu\u011fu gibi, Fleet unit dosyalar\u0131nda da servisler aras\u0131 ba\u011f\u0131ml\u0131l\u0131klar\u0131 tan\u0131mlayabilirsiniz. Bu, bir servisin ba\u015fka bir servis ba\u015flat\u0131lmadan \u00f6nce \u00e7al\u0131\u015fmamas\u0131n\u0131 veya ba\u015fka bir servisle birlikte ba\u015flat\u0131lmas\u0131n\u0131 sa\u011flamak i\u00e7in \u00f6nemlidir.<br \/>\n*   <strong><code>Requires=<\/code>:<\/strong> Bu unit&#8217;in ba\u015flamas\u0131 i\u00e7in belirtilen unit&#8217;in ba\u015far\u0131l\u0131 bir \u015fekilde ba\u015flamas\u0131 gerekti\u011fini belirtir. E\u011fer ba\u011f\u0131ml\u0131 unit ba\u015far\u0131s\u0131z olursa, bu unit de ba\u015flat\u0131lamaz.<br \/>\n*   <strong><code>After=<\/code>:<\/strong> Bu unit&#8217;in, belirtilen unit ba\u015flad\u0131ktan sonra ba\u015flat\u0131lmas\u0131 gerekti\u011fini belirtir. Ba\u011f\u0131ml\u0131 unit&#8217;in ba\u015far\u0131s\u0131z olmas\u0131 bu unit&#8217;in ba\u015flamas\u0131n\u0131 engellemez, sadece s\u0131ras\u0131n\u0131 belirler.<br \/>\n*   <strong><code>BindsTo=<\/code>:<\/strong> <code>Requires<\/code> gibidir, ancak ba\u011f\u0131ml\u0131 unit durduruldu\u011funda bu unit&#8217;in de durdurulmas\u0131n\u0131 sa\u011flar.<\/p>\n<p>\u00d6rnek: Bir veritaban\u0131 servisi ba\u015flat\u0131lmadan \u00f6nce bir uygulaman\u0131n ba\u015flamamas\u0131n\u0131 sa\u011flamak:<\/p>\n<pre><code class=\"language-ini\"># my-app.service\n[Unit]\nDescription=My Web Application\nAfter=docker.service my-db.service\nRequires=docker.service my-db.service\n...<\/code><\/pre>\n<p>Bu, <code>my-app.service<\/code>&#8216;in ba\u015flamas\u0131 i\u00e7in <code>docker.service<\/code> ve <code>my-db.service<\/code>&#8216;in aktif olmas\u0131 gerekti\u011fini belirtir.<\/p>\n<h3>Servis Yerle\u015fim K\u0131s\u0131tlamalar\u0131<\/h3>\n<p>Fleet&#8217;in en g\u00fc\u00e7l\u00fc \u00f6zelliklerinden biri, servislerin k\u00fcmedeki belirli d\u00fc\u011f\u00fcmlere yerle\u015ftirilmesi i\u00e7in k\u0131s\u0131tlamalar tan\u0131mlayabilme yetene\u011fidir. Bu, <code>[X-Fleet]<\/code> b\u00f6l\u00fcm\u00fcndeki \u00f6zel direktiflerle yap\u0131l\u0131r.<br \/>\n*   <strong><code>X-Fleet-MachineMetadata=<key>=<value><\/code>:<\/strong> D\u00fc\u011f\u00fcmlere meta veri etiketleri atayabilir ve servislerin yaln\u0131zca bu etiketlere sahip d\u00fc\u011f\u00fcmlerde \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flayabilirsiniz. \u00d6rne\u011fin, &#8220;role=web&#8221; etiketli d\u00fc\u011f\u00fcmlerde web sunucular\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rmak i\u00e7in:<\/p>\n<pre><code class=\"language-ini\"># web-server.service\n    [X-Fleet]\n    MachineMetadata=role=web<\/code><\/pre>\n<p>    D\u00fc\u011f\u00fcme meta veri eklemek i\u00e7in: <code>fleetctl start --metadata role=web<\/code> (bu komut <code>fleetctl<\/code>&#8216;in eski s\u00fcr\u00fcmlerinde \u00e7al\u0131\u015f\u0131yordu, yeni s\u00fcr\u00fcmler i\u00e7in <code>fleetctl set-machine-metadata<\/code> kullanmak veya <code>cloud-config<\/code> ile d\u00fc\u011f\u00fcm ba\u015flat\u0131rken belirtmek daha yayg\u0131nd\u0131r).<br \/>\n*   <strong><code>X-Fleet-Conflicts=<unit-ad\u0131><\/code>:<\/strong> Bu direktif, belirtilen unit&#8217;in bu unit ile ayn\u0131 d\u00fc\u011f\u00fcmde \u00e7al\u0131\u015fmas\u0131n\u0131 engeller. Y\u00fcksek eri\u015filebilirlik i\u00e7in ayn\u0131 servisin birden fazla \u00f6rne\u011fini farkl\u0131 d\u00fc\u011f\u00fcmlere da\u011f\u0131tmak istedi\u011finizde kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<pre><code class=\"language-ini\"># my-app@.service (template unit)\n    [X-Fleet]\n    Conflicts=my-app@*.service<\/code><\/pre>\n<p>    Bu, <code>my-app@1.service<\/code> ve <code>my-app@2.service<\/code> gibi farkl\u0131 \u00f6rneklerin ayn\u0131 d\u00fc\u011f\u00fcmde \u00e7al\u0131\u015fmamas\u0131n\u0131 sa\u011flar.<br \/>\n<em>   <strong><code>X-Fleet-Global=true<\/code>:<\/strong> Bu direktif, servisin k\u00fcmedeki <\/em>her* d\u00fc\u011f\u00fcmde otomatik olarak ba\u015flat\u0131lmas\u0131n\u0131 sa\u011flar. \u00d6rne\u011fin, bir log toplama ajan\u0131 veya bir izleme arac\u0131 gibi servisler i\u00e7in idealdir.<\/p>\n<pre><code class=\"language-ini\"># fluentd.service\n    [X-Fleet]\n    Global=true<\/code><\/pre>\n<h3>Y\u00fcksek Eri\u015filebilirlik ve \u00d6l\u00e7eklenebilirlik<\/h3>\n<p>Fleet, temel y\u00fcksek eri\u015filebilirlik ve \u00f6l\u00e7eklenebilirlik mekanizmalar\u0131n\u0131 sunar:<br \/>\n*   <strong>Birden Fazla \u00d6rnek \u00c7al\u0131\u015ft\u0131rma:<\/strong> Bir servisin birden fazla \u00f6rne\u011fini (\u00f6rne\u011fin, <code>my-app@1.service<\/code>, <code>my-app@2.service<\/code>) ba\u015flatarak y\u00fck\u00fc da\u011f\u0131tabilir ve bir \u00f6rnek ba\u015far\u0131s\u0131z oldu\u011funda di\u011ferlerinin \u00e7al\u0131\u015fmaya devam etmesini sa\u011flayabilirsiniz. <code>Conflicts<\/code> direktifi ile bu \u00f6rneklerin farkl\u0131 d\u00fc\u011f\u00fcmlere da\u011f\u0131t\u0131lmas\u0131n\u0131 garanti edebilirsiniz.<br \/>\n*   <strong>Otomatik Yeniden Planlama:<\/strong> Bir d\u00fc\u011f\u00fcm ar\u0131zaland\u0131\u011f\u0131nda veya bir servis durdu\u011funda, Fleet otomatik olarak ba\u015far\u0131s\u0131z olan unit&#8217;i ba\u015fka uygun bir d\u00fc\u011f\u00fcme ta\u015f\u0131maya \u00e7al\u0131\u015f\u0131r. Bu, temel bir kendini iyile\u015ftirme mekanizmas\u0131d\u0131r.<\/p>\n<h3>Da\u011f\u0131t\u0131k Uygulama Kal\u0131plar\u0131<\/h3>\n<p>Fleet, CoreOS ekosisteminde \u00e7e\u015fitli da\u011f\u0131t\u0131k uygulama kal\u0131plar\u0131n\u0131 desteklemek i\u00e7in kullan\u0131labilir:<br \/>\n*   <strong>Sidekick Pattern:<\/strong> Bir ana uygulaman\u0131n yan\u0131nda \u00e7al\u0131\u015fan yard\u0131mc\u0131 servisler (sidekick&#8217;ler) i\u00e7in kullan\u0131l\u0131r. \u00d6rne\u011fin, bir web uygulamas\u0131n\u0131n yan\u0131nda bir <code>registrator<\/code> konteyneri \u00e7al\u0131\u015ft\u0131rarak servis ke\u015ffini otomatikle\u015ftirebilirsiniz. <code>registrator<\/code>, Docker konteynerlerini izler ve yeni konteynerleri etcd&#8217;ye kaydeder.<br \/>\n*   <strong>Servis Ke\u015ffi:<\/strong> Fleet&#8217;in kendisi do\u011frudan bir servis ke\u015fif sistemi de\u011fildir, ancak etcd&#8217;yi kullanarak servis ke\u015ffi yapmay\u0131 kolayla\u015ft\u0131r\u0131r. <code>registrator<\/code> gibi ara\u00e7lar, \u00e7al\u0131\u015fan konteynerlerin IP adreslerini ve portlar\u0131n\u0131 etcd&#8217;ye kaydedebilir ve <code>confd<\/code> gibi ara\u00e7lar bu bilgiyi kullanarak yap\u0131land\u0131rma dosyalar\u0131n\u0131 (\u00f6rne\u011fin, Nginx proxy yap\u0131land\u0131rmas\u0131) dinamik olarak g\u00fcncelleyebilir.<\/p>\n<h3>Fleet ve Di\u011fer Ara\u00e7lar<\/h3>\n<p>Fleet, CoreOS&#8217;un ilk zamanlar\u0131nda konteyner orkestrasyonunda \u00f6nemli bir rol oynam\u0131\u015f olsa da, zamanla Kubernetes, Docker Swarm ve Mesos gibi daha kapsaml\u0131 ve \u00f6zellikli platformlar ortaya \u00e7\u0131km\u0131\u015ft\u0131r. Fleet, \u00f6zellikle CoreOS&#8217;un &#8220;distributed systemd&#8221; felsefesine uygun, daha hafif ve basit orkestrasyon ihtiya\u00e7lar\u0131 i\u00e7in tasarlanm\u0131\u015ft\u0131r. Bu nedenle, karma\u015f\u0131k mikroservis mimarileri veya \u00e7ok b\u00fcy\u00fck \u00f6l\u00e7ekli da\u011f\u0131t\u0131mlar i\u00e7in Kubernetes gibi ara\u00e7lar daha uygunken, daha k\u00fc\u00e7\u00fck veya \u00f6zel CoreOS k\u00fcmeleri i\u00e7in Fleet hala anla\u015f\u0131lmas\u0131 gereken bir ara\u00e7t\u0131r.<\/p>\n<h2>Pratik Bir \u00d6rnek: Basit Bir Web Uygulamas\u0131 Da\u011f\u0131t\u0131m\u0131<\/h2>\n<p>\u015eimdiye kadar \u00f6\u011frendiklerimizi peki\u015ftirmek i\u00e7in, Fleet ve fleetctl kullanarak basit bir web uygulamas\u0131n\u0131 CoreOS k\u00fcmesine nas\u0131l da\u011f\u0131tabilece\u011fimize dair pratik bir \u00f6rnek inceleyelim.<\/p>\n<h3>Senaryo Tan\u0131m\u0131<\/h3>\n<p>Bir CoreOS k\u00fcmemiz var ve bu k\u00fcmeye a\u015fa\u011f\u0131daki servisleri da\u011f\u0131tmak istiyoruz:<br \/>\n*   <strong>Nginx Web Sunucusu:<\/strong> Gelen istekleri dinleyecek ve statik i\u00e7erik sunacak veya di\u011fer servislere proxy yapacak.<br \/>\n*   <strong>Python Flask Uygulamas\u0131:<\/strong> Basit bir dinamik web uygulamas\u0131 (\u00f6rne\u011fin, &#8220;Hello, CoreOS!&#8221; mesaj\u0131n\u0131 d\u00f6nd\u00fcren bir Flask uygulamas\u0131).<\/p>\n<p>Her iki servis de Docker konteynerleri olarak \u00e7al\u0131\u015facak. Nginx&#8217;in 80 portundan d\u0131\u015far\u0131ya a\u00e7\u0131k olmas\u0131n\u0131 ve Flask uygulamas\u0131n\u0131n ise Nginx&#8217;in proxy yapabilece\u011fi dahili bir portta \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flayaca\u011f\u0131z.<\/p>\n<h3>Nginx Unit Dosyas\u0131 (nginx.service)<\/h3>\n<pre><code class=\"language-ini\"># \/etc\/systemd\/system\/nginx.service\n[Unit]\nDescription=Nginx Web Server\nAfter=docker.service\nRequires=docker.service\n\n[Service]\nTimeoutStartSec=0\nExecStartPre=-\/usr\/bin\/docker kill nginx-proxy\nExecStartPre=-\/usr\/bin\/docker rm nginx-proxy\nExecStartPre=\/usr\/bin\/docker pull nginx:latest\nExecStart=\/usr\/bin\/docker run --name nginx-proxy -p 80:80 -d nginx:latest\nExecStop=\/usr\/bin\/docker stop nginx-proxy\nExecStopPost=\/usr\/bin\/docker rm nginx-proxy\nRestart=on-failure\nRestartSec=10\n\n[Install]\nWantedBy=multi-user.target\n\n[X-Fleet]\n<h2>Nginx'in k\u00fcmede tek bir yerde \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flayal\u0131m<\/h2>\nConflicts=nginx.service<\/code><\/pre>\n<p>Bu unit dosyas\u0131, Nginx konteynerini <code>nginx-proxy<\/code> ad\u0131yla ba\u015flat\u0131r ve host&#8217;un 80 portunu konteynerin 80 portuna e\u015fler. <code>Conflicts=nginx.service<\/code> ile k\u00fcmede sadece bir Nginx \u00f6rne\u011finin \u00e7al\u0131\u015fmas\u0131n\u0131 garanti ederiz.<\/p>\n<h3>Flask Uygulamas\u0131 Unit Dosyas\u0131 (flask-app.service)<\/h3>\n<p>Basit bir Flask uygulamas\u0131 i\u00e7in bir Dockerfile:<\/p>\n<pre><code class=\"language-dockerfile\"># Dockerfile\nFROM python:3.9-slim-buster\nWORKDIR \/app\nCOPY requirements.txt .\nRUN pip install -r requirements.txt\nCOPY app.py .\nEXPOSE 5000\nCMD [\"python\", \"app.py\"]<\/code><\/pre>\n<p><code>app.py<\/code> i\u00e7eri\u011fi:<\/p>\n<pre><code class=\"language-python\"># app.py\nfrom flask import Flask\napp = Flask(__name__)\n\n@app.route('\/')\ndef hello():\n    return \"Hello from Flask on CoreOS!\"\n\nif __name__ == '__main__':\n    app.run(host='0.0.0.0', port=5000)<\/code><\/pre>\n<p>Bu Dockerfile ve <code>app.py<\/code> ile bir Docker imaj\u0131 olu\u015fturup bir Docker kay\u0131t defterine (\u00f6rne\u011fin Docker Hub) g\u00f6ndermeniz gerekir. \u00d6rne\u011fin, <code>yourusername\/flask-app:latest<\/code>.<\/p>\n<p>\u015eimdi Flask uygulamas\u0131 i\u00e7in unit dosyas\u0131:<\/p>\n<pre><code class=\"language-ini\"># \/etc\/systemd\/system\/flask-app.service\n[Unit]\nDescription=Flask Web Application\nAfter=docker.service\nRequires=docker.service\n\n[Service]\nTimeoutStartSec=0\nExecStartPre=-\/usr\/bin\/docker kill flask-web-app\nExecStartPre=-\/usr\/bin\/docker rm flask-web-app\nExecStartPre=\/usr\/bin\/docker pull yourusername\/flask-app:latest\nExecStart=\/usr\/bin\/docker run --name flask-web-app -p 5000:5000 -d yourusername\/flask-app:latest\nExecStop=\/usr\/bin\/docker stop flask-web-app\nExecStopPost=\/usr\/bin\/docker rm flask-web-app\nRestart=on-failure\nRestartSec=10\n\n[Install]\nWantedBy=multi-user.target\n\n[X-Fleet]\n<h2>Flask uygulamas\u0131n\u0131n da k\u00fcmede tek bir yerde \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flayal\u0131m<\/h2>\nConflicts=flask-app.service<\/code><\/pre>\n<p>Bu unit dosyas\u0131, Flask uygulamas\u0131n\u0131 <code>flask-web-app<\/code> ad\u0131yla ba\u015flat\u0131r ve host&#8217;un 5000 portunu konteynerin 5000 portuna e\u015fler.<\/p>\n<h3>Da\u011f\u0131t\u0131m Ad\u0131mlar\u0131<\/h3>\n<p>1.  <strong>Unit Dosyalar\u0131n\u0131 Olu\u015fturun:<\/strong> <code>nginx.service<\/code> ve <code>flask-app.service<\/code> dosyalar\u0131n\u0131 yerel makinenizde olu\u015fturun.<br \/>\n2.  <strong>Unitleri G\u00f6nderin ve Ba\u015flat\u0131n:<\/strong><\/p>\n<pre><code class=\"language-bash\">fleetctl submit nginx.service\n    fleetctl start nginx.service\n\n    fleetctl submit flask-app.service\n    fleetctl start flask-app.service<\/code><\/pre>\n<p>3.  <strong>Durumlar\u0131 Kontrol Edin:<\/strong><\/p>\n<pre><code class=\"language-bash\">fleetctl list-units\n    fleetctl status nginx.service\n    fleetctl status flask-app.service<\/code><\/pre>\n<p>    <code>list-units<\/code> \u00e7\u0131kt\u0131s\u0131nda, her iki servisin de <code>active<\/code> ve <code>running<\/code> durumda oldu\u011funu ve farkl\u0131 veya ayn\u0131 d\u00fc\u011f\u00fcmlerde (e\u011fer <code>Conflicts<\/code> k\u0131s\u0131tlamas\u0131 farkl\u0131 bir d\u00fc\u011f\u00fcme yerle\u015fimi zorlam\u0131yorsa) \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6rmelisiniz.<br \/>\n4.  <strong>Uygulamay\u0131 Test Edin:<\/strong><br \/>\n    Nginx&#8217;in \u00e7al\u0131\u015ft\u0131\u011f\u0131 d\u00fc\u011f\u00fcm\u00fcn IP adresini (<code>fleetctl list-machines<\/code> \u00e7\u0131kt\u0131s\u0131ndan al\u0131n) kullanarak taray\u0131c\u0131n\u0131zdan bu IP adresine gidin. Nginx&#8217;in varsay\u0131lan kar\u015f\u0131lama sayfas\u0131n\u0131 veya yap\u0131land\u0131rd\u0131\u011f\u0131n\u0131z statik i\u00e7eri\u011fi g\u00f6rmelisiniz.<br \/>\n    Flask uygulamas\u0131n\u0131n \u00e7al\u0131\u015ft\u0131\u011f\u0131 d\u00fc\u011f\u00fcm\u00fcn IP adresini ve 5000 portunu kullanarak (\u00f6rn: <code>http:\/\/flask-app-ip:5000<\/code>) Flask uygulaman\u0131za eri\u015fin. &#8220;Hello from Flask on CoreOS!&#8221; mesaj\u0131n\u0131 g\u00f6rmelisiniz.<\/p>\n<p>Bu \u00f6rnek, Fleet&#8217;in nas\u0131l temel bir Docker tabanl\u0131 uygulamay\u0131 CoreOS k\u00fcmesinde da\u011f\u0131tmak i\u00e7in kullan\u0131labilece\u011fini g\u00f6stermektedir. Daha karma\u015f\u0131k senaryolarda, Nginx&#8217;i bir reverse proxy olarak yap\u0131land\u0131r\u0131p Flask uygulamas\u0131na y\u00f6nlendirmek, servis ke\u015ffi ara\u00e7lar\u0131n\u0131 kullanmak ve daha fazla \u00f6l\u00e7eklenebilirlik sa\u011flamak i\u00e7in unit \u015fablonlar\u0131n\u0131 (<code>my-app@.service<\/code>) kullanmak gibi ad\u0131mlar eklenebilir.<\/p>\n<h2>G\u00fcvenlik ve En \u0130yi Uygulamalar<\/h2>\n<p>Fleet ve CoreOS k\u00fcmelerini y\u00f6netirken g\u00fcvenlik ve en iyi uygulamalar \u00f6nemlidir.<\/p>\n<h3>fleetctl Eri\u015fimi G\u00fcvenli\u011fi<\/h3>\n<p>*   <strong>SSH T\u00fcnelleme Kullan\u0131n:<\/strong> <code>FLEETCTL_TUNNEL<\/code> kullanarak SSH t\u00fcneli \u00fczerinden etcd&#8217;ye ba\u011flanmak, etcd u\u00e7 noktas\u0131n\u0131 internete a\u00e7\u0131k b\u0131rakmaktan \u00e7ok daha g\u00fcvenlidir. SSH anahtarlar\u0131n\u0131z\u0131n g\u00fcvenli\u011fini sa\u011flay\u0131n.<br \/>\n*   <strong>etcd Eri\u015fimi K\u0131s\u0131tlamalar\u0131:<\/strong> etcd k\u00fcmenizin d\u0131\u015far\u0131dan eri\u015fime kapal\u0131 oldu\u011fundan ve yaln\u0131zca g\u00fcvenilir istemcilerin eri\u015febildi\u011finden emin olun. TLS\/SSL kullanarak etcd ileti\u015fimini \u015fifreleyin ve istemci kimlik do\u011frulamas\u0131n\u0131 etkinle\u015ftirin.<br \/>\n*   <strong>Eri\u015fim Kontrol\u00fc:<\/strong> <code>fleetctl<\/code> komutlar\u0131na eri\u015fimi, yetkili kullan\u0131c\u0131larla s\u0131n\u0131rlay\u0131n.<\/p>\n<h3>Unit Dosyalar\u0131 G\u00fcvenli\u011fi<\/h3>\n<p>*   <strong>Ayr\u0131cal\u0131kl\u0131 Konteynerlerden Ka\u00e7\u0131n\u0131n:<\/strong> M\u00fcmk\u00fcn oldu\u011funca <code>privileged<\/code> Docker konteynerlerinden ka\u00e7\u0131n\u0131n. Bir konteynere gereksiz ayr\u0131cal\u0131klar vermek, g\u00fcvenlik a\u00e7\u0131klar\u0131na yol a\u00e7abilir.<br \/>\n*   <strong>S\u0131n\u0131rl\u0131 Kaynak Kullan\u0131m\u0131:<\/strong> Unit dosyalar\u0131nda Docker&#8217;\u0131n <code>--memory<\/code>, <code>--cpu-shares<\/code> gibi se\u00e7eneklerini kullanarak konteynerlerin kaynak kullan\u0131m\u0131n\u0131 s\u0131n\u0131rlay\u0131n. Bu, bir konteynerin t\u00fcm d\u00fc\u011f\u00fcm kaynaklar\u0131n\u0131 t\u00fcketmesini \u00f6nler.<br \/>\n*   <strong>En Az Yetki Prensibi:<\/strong> Konteynerler i\u00e7inde \u00e7al\u0131\u015fan uygulamalar\u0131n yaln\u0131zca ihtiya\u00e7 duyduklar\u0131 izinlere sahip oldu\u011fundan emin olun.<br \/>\n*   <strong>G\u00fcvenilir \u0130majlar Kullan\u0131n:<\/strong> Docker imajlar\u0131n\u0131 g\u00fcvenilir kaynaklardan (\u00f6rne\u011fin, Docker Hub&#8217;daki resmi imajlar veya kendi g\u00fcvenli kay\u0131t defterinizdeki imajlar) \u00e7ekin.<\/p>\n<h3>Bak\u0131m ve \u0130zleme<\/h3>\n<p>*   <strong>Log Y\u00f6netimi:<\/strong> Servislerinizin loglar\u0131n\u0131 d\u00fczenli olarak kontrol edin (<code>fleetctl journal <unit-ad\u0131><\/code>). Merkezi bir log y\u00f6netim sistemi (\u00f6rne\u011fin, Fluentd, ELK Stack) kullanarak t\u00fcm k\u00fcme loglar\u0131n\u0131 tek bir yerden toplamak ve analiz etmek faydal\u0131d\u0131r.<br \/>\n*   <strong>Metrik Toplama:<\/strong> K\u00fcme d\u00fc\u011f\u00fcmlerinin ve \u00e7al\u0131\u015fan servislerin performans metriklerini (CPU, bellek, disk, a\u011f kullan\u0131m\u0131) izleyin. Prometheus, Grafana gibi ara\u00e7lar bu konuda yard\u0131mc\u0131 olabilir.<br \/>\n*   <strong>Otomatik G\u00fcncellemeler:<\/strong> CoreOS&#8217;un otomatik g\u00fcncelleme mekanizmas\u0131ndan faydalan\u0131n. Ancak, g\u00fcncellemelerin uygulaman\u0131z \u00fczerindeki etkilerini test etmek i\u00e7in bir haz\u0131rl\u0131k ortam\u0131 kullan\u0131n.<\/p>\n<h2>Fleet&#8217;in Gelece\u011fi ve Alternatifler<\/h2>\n<p>Fleet, CoreOS ekosisteminde \u00f6nemli bir rol oynam\u0131\u015f olsa da, konteyner orkestrasyon d\u00fcnyas\u0131 h\u0131zla geli\u015fmi\u015ftir ve Fleet&#8217;in konumu de\u011fi\u015fmi\u015ftir.<\/p>\n<h3>Fleet&#8217;in Durumu<\/h3>\n<p>CoreOS&#8217;un Red Hat taraf\u0131ndan sat\u0131n al\u0131nmas\u0131 ve ard\u0131ndan Red Hat OpenShift ve Kubernetes&#8217;e odaklan\u0131lmas\u0131yla birlikte, Fleet&#8217;in aktif geli\u015ftirilmesi durdurulmu\u015ftur. Red Hat, CoreOS&#8217;un gelece\u011fini Kubernetes tabanl\u0131 OpenShift Container Platform&#8217;a entegre etmi\u015ftir. Bu nedenle, <strong>Fleet art\u0131k aktif olarak geli\u015ftirilmeyen ve &#8220;deprecated&#8221; (kullan\u0131mdan kald\u0131r\u0131lm\u0131\u015f) bir ara\u00e7t\u0131r.<\/strong><\/p>\n<p>Bu bilgi, Fleet&#8217;i \u00f6\u011frenen veya mevcut bir Fleet kurulumunu y\u00f6neten herkes i\u00e7in kritik \u00f6neme sahiptir. Yeni projeler i\u00e7in Fleet kullanmak yerine, modern konteyner orkestrasyon ara\u00e7lar\u0131na y\u00f6nelmek \u015fiddetle tavsiye edilir. Ancak, eski CoreOS kurulumlar\u0131n\u0131 anlamak veya da\u011f\u0131t\u0131k sistemlerin temel prensiplerini \u00f6\u011frenmek amac\u0131yla Fleet&#8217;i bilmek hala de\u011ferlidir.<\/p>\n<h3>Modern Alternatifler<\/h3>\n<p>G\u00fcn\u00fcm\u00fczde, Fleet&#8217;in yerini alan veya ondan \u00e7ok daha kapsaml\u0131 \u00f6zellikler sunan bir\u00e7ok konteyner orkestrasyon platformu bulunmaktad\u0131r:<br \/>\n*   <strong>Kubernetes:<\/strong> A\u00e7\u0131k ara en pop\u00fcler ve kapsaml\u0131 konteyner orkestrasyon platformudur. Da\u011f\u0131t\u0131k sistemlerin t\u00fcm y\u00f6nlerini (servis ke\u015ffi, y\u00fck dengeleme, otomatik \u00f6l\u00e7ekleme, depolama y\u00f6netimi, yap\u0131land\u0131rma y\u00f6netimi vb.) y\u00f6netmek i\u00e7in zengin bir API ve ekosistem sunar. CoreOS da art\u0131k Kubernetes&#8217;e odaklanm\u0131\u015ft\u0131r.<br \/>\n*   <strong>Docker Swarm:<\/strong> Docker&#8217;\u0131n kendi yerle\u015fik orkestrasyon arac\u0131d\u0131r. Kubernetes&#8217;e g\u00f6re daha basit bir yap\u0131ya sahiptir ve Docker Compose ile iyi entegre olur. Daha k\u00fc\u00e7\u00fck \u00f6l\u00e7ekli da\u011f\u0131t\u0131mlar i\u00e7in iyi bir se\u00e7enek olabilir.<br \/>\n*   <strong>Nomad:<\/strong> HashiCorp taraf\u0131ndan geli\u015ftirilen, genel ama\u00e7l\u0131 bir i\u015f zamanlay\u0131c\u0131s\u0131d\u0131r. Konteynerlerin yan\u0131 s\u0131ra, sanal makineleri ve di\u011fer i\u015f y\u00fcklerini de orkestra edebilir. Esnekli\u011fi ve basitli\u011fi ile \u00f6ne \u00e7\u0131kar.<\/p>\n<p>Bu modern alternatifler, Fleet&#8217;in sundu\u011fu temel orkestrasyon yeteneklerinin \u00e7ok \u00f6tesine ge\u00e7erek, daha karma\u015f\u0131k, \u00f6l\u00e7eklenebilir ve dayan\u0131kl\u0131 da\u011f\u0131t\u0131k uygulamalar\u0131n y\u00f6netimi i\u00e7in gerekli ara\u00e7lar\u0131 sunar.<\/p>\n<h2>Sonu\u00e7<\/h2>\n<p>Fleet ve fleetctl, CoreOS&#8217;un ilk zamanlar\u0131nda, da\u011f\u0131t\u0131k systemd unit y\u00f6netimi i\u00e7in yenilik\u00e7i ve g\u00fc\u00e7l\u00fc bir \u00e7\u00f6z\u00fcm sunmu\u015ftur. CoreOS&#8217;un etcd ve systemd gibi temel bile\u015fenlerini kullanarak, geli\u015ftiricilerin ve sistem y\u00f6neticilerinin Docker konteynerlerini bir k\u00fcme genelinde tutarl\u0131 ve g\u00fcvenilir bir \u015fekilde da\u011f\u0131tmas\u0131na ve y\u00f6netmesine olanak tan\u0131m\u0131\u015ft\u0131r. Servis yerle\u015fim k\u0131s\u0131tlamalar\u0131, otomatik yeniden planlama ve unit ba\u011f\u0131ml\u0131l\u0131klar\u0131 gibi \u00f6zellikleri sayesinde, Fleet, da\u011f\u0131t\u0131k servis y\u00f6netiminin temel zorluklar\u0131na etkili \u00e7\u00f6z\u00fcmler getirmi\u015ftir.<\/p>\n<p>Ancak, teknoloji d\u00fcnyas\u0131n\u0131n h\u0131zl\u0131 evrimiyle birlikte, Kubernetes gibi daha geli\u015fmi\u015f ve kapsaml\u0131 konteyner orkestrasyon platformlar\u0131 Fleet&#8217;in yerini alm\u0131\u015ft\u0131r. Fleet&#8217;in aktif geli\u015ftirilmesinin durdurulmu\u015f olmas\u0131 ve &#8220;deprecated&#8221; olarak kabul edilmesi, yeni projeler i\u00e7in alternatif \u00e7\u00f6z\u00fcmlere y\u00f6nelmenin gereklili\u011fini ortaya koymaktad\u0131r.<\/p>\n<p>Yine de, Fleet&#8217;in \u00e7al\u0131\u015fma prensiplerini ve CoreOS ekosistemindeki rol\u00fcn\u00fc anlamak, da\u011f\u0131t\u0131k sistem mimarileri, servis orkestrasyonu ve konteyner y\u00f6netimi alan\u0131ndaki temel kavramlar\u0131 \u00f6\u011frenmek i\u00e7in hala de\u011ferli bir kaynakt\u0131r. Bu makale, Fleet ve fleetctl&#8217;in nas\u0131l kullan\u0131laca\u011f\u0131na dair kapsaml\u0131 bir rehber sunarak, bu eski ama \u00f6nemli teknolojinin anla\u015f\u0131lmas\u0131na katk\u0131da bulunmay\u0131 ama\u00e7lam\u0131\u015ft\u0131r. Modern konteyner orkestrasyonuna ge\u00e7i\u015f yaparken, Fleet&#8217;in sundu\u011fu dersler ve CoreOS&#8217;un felsefesi, daha iyi ve daha dayan\u0131kl\u0131 da\u011f\u0131t\u0131k sistemler tasarlamak i\u00e7in bir temel olu\u015fturabilir.<br \/>\n<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Fleet ve Fleetctl Kullanarak CoreOS K\u00fcmenizi Y\u00f6netme Rehberi\nGiri\u015f\nModern bulut tabanl\u0131 uygulamalar\u0131n ve mikroservis mimarilerinin y\u00fckseli\u015fiy","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":[1],"tags":[],"class_list":{"0":"post-37854","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","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>Fleet ve Fleetctl Kullanarak CoreOS K\u00fcmenizi Y\u00f6netme Rehberi - 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\/fleet-ve-fleetctl-kullanarak-coreos-kumenizi-yonetme-rehberi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Fleet ve Fleetctl Kullanarak CoreOS K\u00fcmenizi Y\u00f6netme Rehberi\" \/>\n<meta property=\"og:description\" content=\"Fleet ve Fleetctl Kullanarak CoreOS K\u00fcmenizi Y\u00f6netme Rehberi Giri\u015f Modern bulut tabanl\u0131 uygulamalar\u0131n ve mikroservis mimarilerinin y\u00fckseli\u015fiy\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/fleet-ve-fleetctl-kullanarak-coreos-kumenizi-yonetme-rehberi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-16T22:40:54+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=\"25 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/fleet-ve-fleetctl-kullanarak-coreos-kumenizi-yonetme-rehberi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/fleet-ve-fleetctl-kullanarak-coreos-kumenizi-yonetme-rehberi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Fleet ve Fleetctl Kullanarak CoreOS K\u00fcmenizi Y\u00f6netme Rehberi\",\"datePublished\":\"2026-01-16T22:40:54+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/fleet-ve-fleetctl-kullanarak-coreos-kumenizi-yonetme-rehberi\/\"},\"wordCount\":4488,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/fleet-ve-fleetctl-kullanarak-coreos-kumenizi-yonetme-rehberi\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/fleet-ve-fleetctl-kullanarak-coreos-kumenizi-yonetme-rehberi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/fleet-ve-fleetctl-kullanarak-coreos-kumenizi-yonetme-rehberi\/\",\"name\":\"Fleet ve Fleetctl Kullanarak CoreOS K\u00fcmenizi Y\u00f6netme Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-01-16T22:40:54+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/fleet-ve-fleetctl-kullanarak-coreos-kumenizi-yonetme-rehberi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/fleet-ve-fleetctl-kullanarak-coreos-kumenizi-yonetme-rehberi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/fleet-ve-fleetctl-kullanarak-coreos-kumenizi-yonetme-rehberi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Fleet ve Fleetctl Kullanarak CoreOS K\u00fcmenizi Y\u00f6netme Rehberi\"}]},{\"@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":"Fleet ve Fleetctl Kullanarak CoreOS K\u00fcmenizi Y\u00f6netme Rehberi - 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\/fleet-ve-fleetctl-kullanarak-coreos-kumenizi-yonetme-rehberi\/","og_locale":"tr_TR","og_type":"article","og_title":"Fleet ve Fleetctl Kullanarak CoreOS K\u00fcmenizi Y\u00f6netme Rehberi","og_description":"Fleet ve Fleetctl Kullanarak CoreOS K\u00fcmenizi Y\u00f6netme Rehberi Giri\u015f Modern bulut tabanl\u0131 uygulamalar\u0131n ve mikroservis mimarilerinin y\u00fckseli\u015fiy","og_url":"https:\/\/fatihsoysal.com\/blog\/fleet-ve-fleetctl-kullanarak-coreos-kumenizi-yonetme-rehberi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-01-16T22:40:54+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"25 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/fleet-ve-fleetctl-kullanarak-coreos-kumenizi-yonetme-rehberi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/fleet-ve-fleetctl-kullanarak-coreos-kumenizi-yonetme-rehberi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Fleet ve Fleetctl Kullanarak CoreOS K\u00fcmenizi Y\u00f6netme Rehberi","datePublished":"2026-01-16T22:40:54+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/fleet-ve-fleetctl-kullanarak-coreos-kumenizi-yonetme-rehberi\/"},"wordCount":4488,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/fleet-ve-fleetctl-kullanarak-coreos-kumenizi-yonetme-rehberi\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/fleet-ve-fleetctl-kullanarak-coreos-kumenizi-yonetme-rehberi\/","url":"https:\/\/fatihsoysal.com\/blog\/fleet-ve-fleetctl-kullanarak-coreos-kumenizi-yonetme-rehberi\/","name":"Fleet ve Fleetctl Kullanarak CoreOS K\u00fcmenizi Y\u00f6netme Rehberi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-01-16T22:40:54+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/fleet-ve-fleetctl-kullanarak-coreos-kumenizi-yonetme-rehberi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/fleet-ve-fleetctl-kullanarak-coreos-kumenizi-yonetme-rehberi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/fleet-ve-fleetctl-kullanarak-coreos-kumenizi-yonetme-rehberi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Fleet ve Fleetctl Kullanarak CoreOS K\u00fcmenizi Y\u00f6netme Rehberi"}]},{"@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\/37854","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=37854"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37854\/revisions"}],"predecessor-version":[{"id":37855,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37854\/revisions\/37855"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=37854"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=37854"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=37854"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}