{"id":16284,"date":"2019-12-02T09:20:00","date_gmt":"2019-12-02T06:20:00","guid":{"rendered":"https:\/\/fatihboy.com\/?p=16284"},"modified":"2019-12-02T09:20:00","modified_gmt":"2019-12-02T06:20:00","slug":"kubernetes-operatorleri-ve-operator-framework","status":"publish","type":"post","link":"https:\/\/fatihboy.com\/en\/kubernetes-operatorleri-ve-operator-framework\/","title":{"rendered":"Kubernetes Operator&#8217;leri ve Operator Framework"},"content":{"rendered":"<p>Kubernetes tasar\u0131m\u0131n\u0131 her zaman lego&#8217;ya benzetirim. Uygun par\u00e7alar\u0131n bir araya getirilmesi ile bir b\u00fct\u00fcn olu\u015fuyor. Bu tasar\u0131m, zaman i\u00e7erisinde eskiyen bile\u015fenlerin yerine daha modern mimarilerin eklenmesine olanak vermesi yan\u0131nda yeni bile\u015fenlerin eklenmesine de olanak vermekte. Makalemin konusu olan Operator&#8217;ler bu tasar\u0131m\u0131n getirisinin en g\u00fczel kan\u0131t\u0131. Makalemin devam\u0131nda Kubernetes Operator&#8217;lerinin ve Operator Framework&#8217;\u00fcn ne oldu\u011funu, nas\u0131l bir mimariye sahip oldu\u011funu ve nas\u0131l kullanmaya ba\u015flayabilece\u011finizi \u00f6\u011frenebilirsiniz.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"> Operator Deseni<\/h2>\n\n\n\n<p>Kubernetes&#8217;in 1.7 s\u00fcr\u00fcm\u00fc ile birlikte <a rel=\"noreferrer noopener\" aria-label=\"Custom Controllers (yeni sekmede a\u00e7\u0131l\u0131r)\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/extend-kubernetes\/api-extension\/custom-resources\/#custom-controllers\" target=\"_blank\">Custom Controllers<\/a> \u00f6zelli\u011fi kar\u015f\u0131m\u0131za \u00e7\u0131kt\u0131. Bu \u00f6zellik, geli\u015ftiricilerin Kubernetes fonksiyonlar\u0131n\u0131 geni\u015fleterek yeni yetenekler kazand\u0131rmalar\u0131n\u0131n \u00f6n\u00fcn\u00fc a\u00e7m\u0131\u015ft\u0131r. Custom Controller&#8217;lar bir ad\u0131m \u00f6teye giderek mevcut y\u00f6netim g\u00f6revlerinin otomasyonu yapmaya, hatta kube-proxy gibi Kubernetes bile\u015fenlerinin <em>yerini almaya<\/em> ba\u015flam\u0131\u015ft\u0131r.<\/p>\n\n\n\n<p>Custom Controller&#8217;lar, en basit haliyle Kubernetes&#8217;in prensiplerinden <strong>kontrol d\u00f6ng\u00fcs\u00fc<\/strong>n\u00fc ger\u00e7e\u011fe d\u00f6n\u00fc\u015ft\u00fcrmektedirler. Mevcut Kubernetes durumunu okur, al\u0131nmas\u0131 gereken aksiyonlar\u0131 al\u0131r, gerekli yeni durum bilgisini di\u011fer bile\u015fenlerin aksiyon almas\u0131 i\u00e7in Kubernetes&#8217;e iletir. Tasar\u0131mlar\u0131 gere\u011fi Kubernetes Cluster&#8217;\u0131n\u0131 d\u00fczenli olarak izlerler ve gerekti\u011finde yeni duruma uygun aksiyon al\u0131rlar.<\/p>\n\n\n\n<p>Tasar\u0131mlar\u0131n\u0131n kafan\u0131zda daha net canlanmas\u0131 ad\u0131na konuyu bir \u00f6rnekle inceleyelim. Kubernetes&#8217;te bir Kafka Cluster&#8217;\u0131 aya\u011fa kald\u0131rmak istedi\u011finizi varsayal\u0131m. Kafka Cluster&#8217;\u0131 zookeeper ve broker bile\u015fenlerinden olu\u015fmaktad\u0131r. Kafka Cluster&#8217;\u0131nda ilk aya\u011fa kalkmas\u0131 gereken bile\u015fen zookeeper&#8217;d\u0131r. \u0130lk zookeeper \u00f6rne\u011fi aya\u011fa kalkt\u0131ktan sonra paralel olarak di\u011fer zookeeper&#8217;lar ba\u015flat\u0131labilir. Broker&#8217;lar ancak Zookeeper&#8217;lar\u0131n hizmet verir durumda olmas\u0131 ard\u0131ndan ba\u015flat\u0131labilir. Belirli bir d\u00fczende takip edilmesi gereken bu kurulum, tahmin edece\u011finiz gibi <a href=\"https:\/\/fatihboy.com\/en\/post\/kubernetes-helm-paket-yoneticisi\/\">Helm <\/a>ile yap\u0131lamayacak kadar kar\u0131\u015f\u0131kt\u0131r. Helm i\u00e7in kar\u0131\u015f\u0131k olan bu ak\u0131\u015f bir Custom Controller ile kolayl\u0131kla (<em>te\u015fbihte hata olmazm\u0131\u015f<\/em>) ger\u00e7ekle\u015ftirilebilir.<\/p>\n\n\n\n<p>Bir \u00f6nceki paragrafta \u00f6rnekledi\u011fim ak\u0131\u015f Kubernetes d\u00fcnyas\u0131nda <strong>Operator Deseni<\/strong> olarak kabul edilmektedir. Operator deseni, Kubernetes \u00fczerinde Custom Controller&#8217;lar vas\u0131tas\u0131yla  uygulamalar\u0131 ve bile\u015fenleri kolayca y\u00f6netmemize imkan sa\u011flamaktad\u0131r. Operator deseni Kubernetes Cluster&#8217;\u0131n\u0131 y\u00f6neten y\u00f6neticilerin, <em>ger\u00e7ek operator&#8217;lerin<\/em>, as\u0131l g\u00f6revlerinden sapmadan uygulamalar\u0131 kolayca y\u00f6netebilmelerine imkan vermektedir. Bu desen sayesinde Kubernetes y\u00f6neticisi bir Kafka Cluster&#8217;\u0131n\u0131, <em>operasyonel detaylar\u0131na girmeden<\/em>,  kolayca \u00e7al\u0131\u015f\u0131r hale getirebilmektedir.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignleft size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2020\/03\/57151.jpg\" alt=\"\" class=\"wp-image-16290\" width=\"265\" height=\"265\"\/><\/figure><\/div>\n\n\n\n<p>\u00d6rne\u011fimize devam ederek Custom Controller ve operator desenini biraz daha a\u00e7al\u0131m. Bu yakla\u015f\u0131m\u0131n daha da <em>kubernetes-native<\/em> olmas\u0131n\u0131n yolu uygulama ve bile\u015fenlerinin de Kubernetes kayna\u011f\u0131 olarak g\u00f6r\u00fclmesi ve y\u00f6netilmesinden ge\u00e7mektedir. Tam da bu noktada kar\u015f\u0131m\u0131za Custom Resource Definitions (<em><strong>CRD<\/strong>s \/ \u00d6zel Kaynak Tan\u0131mlar\u0131<\/em>) \u00e7\u0131kmaktad\u0131r. CRD&#8217;ler Kubernetes&#8217;in temel bile\u015fenlerince tan\u0131nmamakta ve varsay\u0131landa bunlar i\u00e7in bir aksiyon al\u0131nmamaktad\u0131r. Esnekliklerinin bir nedeni de asl\u0131nda budur. CRD&#8217;leri ka\u011f\u0131da yaz\u0131lm\u0131\u015f dilek\u00e7eler gibi d\u00fc\u015f\u00fcnebilirsiniz. Gere\u011fini yerine getiren bir merci yoksa hi\u00e7 bir aksiyon al\u0131nmayacakt\u0131r. Olu\u015fturulan bir CRD, veritaban\u0131nda okunmay\u0131 bekleyen bir tablodur. Custom Controller&#8217;lar kendilerini ilgilendiren CRD&#8217;leri d\u00fczenli olarak sorgular, Kubernetes Cluster&#8217;\u0131n\u0131n mevcut durumunu CRD ile kar\u015f\u0131la\u015ft\u0131r\u0131r, varsa gerekli aksiyonlar\u0131 al\u0131rlar. Yani dilek\u00e7elerin gere\u011fini yerine getirirler. <\/p>\n\n\n\n<p>Kafan\u0131zda Custom Controller ve CRD&#8217;lerin birle\u015fimiyle Kubernetes&#8217;in kazand\u0131\u011f\u0131 g\u00fcc\u00fc netle\u015ftirebildi\u011fimi umuyorum. Bu g\u00fc\u00e7le Kubernetes y\u00f6neticisi, olmas\u0131n\u0131 istedi\u011fi durumu tarifler ve operator bunun ger\u00e7elle\u015fmesini sa\u011flar. Kafka \u00f6rne\u011fimizden devam edersek, Kubernetes y\u00f6neticisi ka\u00e7 zookeeper ve operator kurulmas\u0131 gerekti\u011fini, yetkilendirmenin nas\u0131l olaca\u011f\u0131 belirten CRD&#8217;yi olu\u015fturur ve Kafka Cluster&#8217;\u0131 aya\u011fa kalkar. Bir ad\u0131m daha ileri gidelim. Kafka Cluster&#8217;\u0131nda olu\u015fturulacak topic&#8217;leri de CRD olarak tan\u0131mlad\u0131\u011f\u0131n\u0131z\u0131 d\u00fc\u015f\u00fcn\u00fcn. Bu durumda Kubernetes y\u00f6neticinin Kafka Cluster&#8217;\u0131nda nas\u0131l bir topic olu\u015fturabilece\u011fini bilmesini dahi gerek kalmayacakt\u0131r. Hatta bir ad\u0131m daha ileri gidelim ve Kafka Cluster&#8217;\u0131nda programlarla uzaktan\/api&#8217;ler ile olu\u015fturulan topic&#8217;leri Custom Controller taraf\u0131ndan farkedildi\u011fini ve g\u00fcncel duruma dair topic CRD&#8217;sinin olu\u015fturuldu\u011funu d\u00fc\u015f\u00fcn\u00fcn&#8230;<\/p>\n\n\n\n<p>Operator deseni ve <em>bu desenin ger\u00e7ekle\u015fmi\u015f hali olan Operator&#8217;ler<\/em> workload&#8217;lar\u0131n \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131n\u0131 ve yayg\u0131nla\u015ft\u0131r\u0131lmas\u0131n\u0131 otomatize ederler. Bu \u015fekilde, Kubernetes kaynak koduna m\u00fcdahale edilmeden, Kubernetes yakla\u015f\u0131m\u0131yla, \u00e7al\u0131\u015fmas\u0131 ve yetenekleri geli\u015ftirilmi\u015f olur.  Ger\u00e7ek insanlar\u0131n operasyonel bilgisinin kod \u00fczerine aktar\u0131lm\u0131\u015f halidir.  Kubernetes Cluster&#8217;\u0131n\u0131zda kulland\u0131\u011f\u0131n\u0131z uygulaman\u0131n geli\u015ftirme ya da destek ekibinden birinin Cluster i\u00e7erisinde 7\/24 ya\u015fay\u0131p uygulamay\u0131 y\u00f6netmesi olarak canland\u0131r\u0131labilir. Toparlamak gerekirse; <strong>Operator, bir uygulamam\u0131n paketlenmesi, kurulumu, yayg\u0131nla\u015ft\u0131rmas\u0131 ve y\u00f6netimi s\u00fcre\u00e7lerinden sorumludur<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-gallery columns-1 is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\"><ul class=\"blocks-gallery-grid\"><li class=\"blocks-gallery-item\"><figure><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2020\/03\/operator-framework-logo-color.png\" alt=\"\" data-id=\"16286\" data-full-url=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2020\/03\/operator-framework-logo-color.png\" class=\"wp-image-16286\"\/><\/figure><\/li><\/ul><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Operator Framework&#8217;\u00fc<\/h2>\n\n\n\n<p>Bir \u00f6nceki b\u00f6l\u00fcmde payla\u015ft\u0131\u011f\u0131m Operator Deseni farkl\u0131 programlama dillerin ve farkl\u0131 y\u00f6ntemlerle olu\u015fturulan Custom Controller&#8217;lar yard\u0131m\u0131yla ger\u00e7ekle\u015ftirilmi\u015f olur. Teknik olarak, en basit \u015fekliyle, Operator&#8217;ler Kubernetes API&#8217;sini dinleyerek\/kullanarak CRD&#8217;ler ile tariflenen durumun ger\u00e7ekle\u015fmesini sa\u011flarlar.<\/p>\n\n\n\n<p>E\u011fer Kubernetes API&#8217;si ile \u00e7ok i\u00e7li-d\u0131\u015fl\u0131 olmad\u0131ysan\u0131z s\u0131f\u0131rdan bir Operator yazmak sizi h\u0131rpalayabilir. \u00d6zellikle de bu konuda yeniyseniz&#8230; Tam da bu noktada sahneye Operator Framework&#8217;\u00fc \u00e7\u0131k\u0131yor. CoreOS ekibince a\u00e7\u0131k kaynak kodlu olarak geli\u015ftirilen Operator Framework&#8217;\u00fc, h\u0131zl\u0131ca bir operator geli\u015ftirmek i\u00e7in ihtiyac\u0131m\u0131z olan geli\u015ftirme ve \u00e7al\u0131\u015ft\u0131rma zaman\u0131 ara\u00e7lar\u0131 sunmaktad\u0131r. Operator Framework&#8217;\u00fc 3 temel bile\u015fenden olu\u015fmaktad\u0131r;<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Operator SDK<\/strong> : Operator geli\u015ftirme i\u00e7in ihtiya\u00e7 duyulan geli\u015ftirme kit&#8217;i<\/li><li><strong>Operator Lifecycle Manager<\/strong> : Operasyonel olarak kullan\u0131mda olan Operator&#8217;\u00fcn Kubernetes Cluster&#8217;\u0131nda kurulum, g\u00fcncelleme ve y\u00f6netimi gibi ya\u015fam d\u00f6ng\u00fcs\u00fc s\u00fcre\u00e7lerini denetler<\/li><li><strong>Operator Metering<\/strong> : Operator kullan\u0131m\u0131n\u0131 raporlar<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2020\/03\/olm-logo.png\" alt=\"\" class=\"wp-image-16287\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Operator Lifecycle Manager<\/h2>\n\n\n\n<p>E\u011fer aktif olarak operator geli\u015ftiren bir ekipte yer alm\u0131yorsan\u0131z, yukar\u0131da sayd\u0131\u011f\u0131m bile\u015fenlerden ilk ihtiya\u00e7 duyaca\u011f\u0131n\u0131z bile\u015fen Operator Lifecycle Manager olacakt\u0131r. Defakto olan Operator Lifecycle Manager yard\u0131m\u0131yla Kubernetes Cluster&#8217;\u0131n\u0131za yeni operatorleri kolayl\u0131kla kurabilir, g\u00fcncelleyebilir, operasyonel i\u015flemler yapabilirsiniz. Operator&#8217;lere kolay ula\u015f\u0131m ve katolog hizmeti i\u00e7in <a rel=\"noreferrer noopener\" aria-label=\"OperatorHub (yeni sekmede a\u00e7\u0131l\u0131r)\" href=\"https:\/\/operatorhub.io\/\" target=\"_blank\">OperatorHub<\/a>&#8216;\u0131 kullanabilirsiniz.<\/p>\n\n\n\n<p>Operator Lifecycle Manager kurulumu i\u00e7in a\u015fa\u011f\u0131daki komutlar\u0131 s\u0131ras\u0131yla \u00e7al\u0131\u015ft\u0131rman\u0131z yeterli olacakt\u0131r.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">export OLM_RELEASE=$(curl -s https:\/\/api.github.com\/repos\/operator-framework\/operator-lifecycle-manager\/releases\/latest | grep tag_name | cut -d '\"' -f 4)\ncurl -L https:\/\/github.com\/operator-framework\/operator-lifecycle-manager\/releases\/download\/$OLM_RELEASE\/install.sh -o install.sh\nchmod +x install.sh\n.\/install.sh $OLM_RELEASE<\/pre>\n\n\n\n<p>Kurulum i\u015flemi a\u015fa\u011f\u0131daki komutla kontrol edilebilir;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">kubectl get pods --all-namespaces | grep olm<\/pre>\n\n\n\n<p>Bu komutlar hem operator lifecycle manager ve bile\u015fenlerini kuracak, hem de a\u015fa\u011f\u0131da s\u0131ralad\u0131\u011f\u0131m CRD&#8217;leri tan\u0131mlayacakt\u0131r;<\/p>\n\n\n\n<figure class=\"wp-block-table aligncenter is-style-regular\"><table class=\"has-fixed-layout\"><thead><tr><th>Kaynak<\/th><th>K\u0131sa Ad\u0131<\/th><th>A\u00e7\u0131klama<\/th><\/tr><\/thead><tbody><tr><td>ClusterServiceVersion<\/td><td>csv<\/td><td>Operator ad\u0131, versiyonu, ikonu, kulland\u0131\u011f\u0131 kaynaklar v.b. meta verileri<\/td><\/tr><tr><td>InstallPlan<\/td><td>ip<\/td><td>Bir CVS&#8217;nin kurulumu ya da g\u00fcncellemesi i\u00e7in olu\u015fturulmas\u0131 gerekli hesaplanm\u0131\u015f kaynak listesi<\/td><\/tr><tr><td>CatalogSource<\/td><td>catsrc<\/td><td>Uygulamay\u0131 tan\u0131mlayan CSV&#8217;ler, CRD&#8217;ler ve paketlerin deposu<\/td><\/tr><tr><td>Subscription<\/td><td>sub<\/td><td>Bir kanal\u0131 (<em>g\u00fcncel\/beta v.b.<\/em>) takip ederek CSV&#8217;nin g\u00fcncel olmas\u0131n\u0131 sa\u011flar<\/td><\/tr><tr><td>OperatorGroup<\/td><td>og<\/td><td>Ayn\u0131 namespace&#8217;de yayg\u0131nla\u015ft\u0131r\u0131lm\u0131\u015f Operator&#8217;lerin Custom Resource&#8217;lar\u0131n\u0131 (CR) izlemek \u00fczere olu\u015fturulmu\u015f nesne<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Di\u011fer CRD&#8217;lerde oldu\u011fu gibi yukar\u0131daki tabloda yer alan CRD&#8217;lerde listelenebilir, d\u00fczenlenebilir, silinebilir ve yenileri olu\u015fturulabilir.<\/p>","protected":false},"excerpt":{"rendered":"<p>Kubernetes tasar\u0131m\u0131n\u0131 her zaman lego&#8217;ya benzetirim. Uygun par\u00e7alar\u0131n bir araya getirilmesi ile bir b\u00fct\u00fcn olu\u015fuyor. Bu tasar\u0131m, zaman i\u00e7erisinde eskiyen bile\u015fenlerin yerine daha modern mimarilerin eklenmesine olanak vermesi yan\u0131nda yeni bile\u015fenlerin eklenmesine de olanak vermekte. Makalemin konusu olan Operator&#8217;ler bu tasar\u0131m\u0131n getirisinin en g\u00fczel kan\u0131t\u0131. Makalemin devam\u0131nda Kubernetes Operator&#8217;lerinin ve Operator Framework&#8217;\u00fcn ne oldu\u011funu, nas\u0131l&#8230;<\/p>\n<p><a class=\"read-more\" href=\"https:\/\/fatihboy.com\/en\/kubernetes-operatorleri-ve-operator-framework\/\">Read More<\/a><\/p>","protected":false},"author":1,"featured_media":16624,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[36,28],"tags":[38,268],"class_list":["post-16284","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kubernetes","category-turkce","tag-kubernetes","tag-operator"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Kubernetes Operator&#039;leri ve Operator Framework - Fatih Boy<\/title>\n<meta name=\"description\" content=\"Bu makalemde Kubernetes Operator&#039;leri ve CoreOS Operator Framework hakk\u0131nda detayl\u0131 bilgi alabilir, Operator Lifecycle Manager&#039;\u0131 kurabilirsiniz.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihboy.com\/en\/kubernetes-operatorleri-ve-operator-framework\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kubernetes Operator&#039;leri ve Operator Framework - Fatih Boy\" \/>\n<meta property=\"og:description\" content=\"Bu makalemde Kubernetes Operator&#039;leri ve CoreOS Operator Framework hakk\u0131nda detayl\u0131 bilgi alabilir, Operator Lifecycle Manager&#039;\u0131 kurabilirsiniz.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihboy.com\/en\/kubernetes-operatorleri-ve-operator-framework\/\" \/>\n<meta property=\"og:site_name\" content=\"Fatih Boy\" \/>\n<meta property=\"article:published_time\" content=\"2019-12-02T06:20:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2019\/12\/3117.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"512\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Fatih Boy\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Boy\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihboy.com\/kubernetes-operatorleri-ve-operator-framework\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihboy.com\/kubernetes-operatorleri-ve-operator-framework\/\"},\"author\":{\"name\":\"Fatih Boy\",\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\"},\"headline\":\"Kubernetes Operator&#8217;leri ve Operator Framework\",\"datePublished\":\"2019-12-02T06:20:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihboy.com\/kubernetes-operatorleri-ve-operator-framework\/\"},\"wordCount\":1259,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\"},\"image\":{\"@id\":\"https:\/\/fatihboy.com\/kubernetes-operatorleri-ve-operator-framework\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2019\/12\/3117.jpg\",\"keywords\":[\"Kubernetes\",\"Operator\"],\"articleSection\":[\"Kubernetes\",\"T\u00fcrk\u00e7e\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihboy.com\/kubernetes-operatorleri-ve-operator-framework\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihboy.com\/kubernetes-operatorleri-ve-operator-framework\/\",\"url\":\"https:\/\/fatihboy.com\/kubernetes-operatorleri-ve-operator-framework\/\",\"name\":\"Kubernetes Operator'leri ve Operator Framework - Fatih Boy\",\"isPartOf\":{\"@id\":\"https:\/\/fatihboy.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/fatihboy.com\/kubernetes-operatorleri-ve-operator-framework\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/fatihboy.com\/kubernetes-operatorleri-ve-operator-framework\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2019\/12\/3117.jpg\",\"datePublished\":\"2019-12-02T06:20:00+00:00\",\"description\":\"Bu makalemde Kubernetes Operator'leri ve CoreOS Operator Framework hakk\u0131nda detayl\u0131 bilgi alabilir, Operator Lifecycle Manager'\u0131 kurabilirsiniz.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihboy.com\/kubernetes-operatorleri-ve-operator-framework\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihboy.com\/kubernetes-operatorleri-ve-operator-framework\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fatihboy.com\/kubernetes-operatorleri-ve-operator-framework\/#primaryimage\",\"url\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2019\/12\/3117.jpg\",\"contentUrl\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2019\/12\/3117.jpg\",\"width\":1024,\"height\":512},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihboy.com\/kubernetes-operatorleri-ve-operator-framework\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/fatihboy.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kubernetes Operator&#8217;leri ve Operator Framework\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihboy.com\/#website\",\"url\":\"https:\/\/fatihboy.com\/\",\"name\":\"Fatih Boy\",\"description\":\"Ki\u015fisel Web Sitesi\",\"publisher\":{\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihboy.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\",\"name\":\"Fatih Boy\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g\",\"caption\":\"Fatih Boy\"},\"logo\":{\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/image\/\"},\"sameAs\":[\"https:\/\/fatihboy.com\"],\"url\":\"https:\/\/fatihboy.com\/en\/author\/fatih\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Kubernetes Operator'leri ve Operator Framework - Fatih Boy","description":"Bu makalemde Kubernetes Operator'leri ve CoreOS Operator Framework hakk\u0131nda detayl\u0131 bilgi alabilir, Operator Lifecycle Manager'\u0131 kurabilirsiniz.","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:\/\/fatihboy.com\/en\/kubernetes-operatorleri-ve-operator-framework\/","og_locale":"en_US","og_type":"article","og_title":"Kubernetes Operator'leri ve Operator Framework - Fatih Boy","og_description":"Bu makalemde Kubernetes Operator'leri ve CoreOS Operator Framework hakk\u0131nda detayl\u0131 bilgi alabilir, Operator Lifecycle Manager'\u0131 kurabilirsiniz.","og_url":"https:\/\/fatihboy.com\/en\/kubernetes-operatorleri-ve-operator-framework\/","og_site_name":"Fatih Boy","article_published_time":"2019-12-02T06:20:00+00:00","og_image":[{"width":1024,"height":512,"url":"https:\/\/fatihboy.com\/wp-content\/uploads\/2019\/12\/3117.jpg","type":"image\/jpeg"}],"author":"Fatih Boy","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Fatih Boy","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihboy.com\/kubernetes-operatorleri-ve-operator-framework\/#article","isPartOf":{"@id":"https:\/\/fatihboy.com\/kubernetes-operatorleri-ve-operator-framework\/"},"author":{"name":"Fatih Boy","@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158"},"headline":"Kubernetes Operator&#8217;leri ve Operator Framework","datePublished":"2019-12-02T06:20:00+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihboy.com\/kubernetes-operatorleri-ve-operator-framework\/"},"wordCount":1259,"commentCount":0,"publisher":{"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158"},"image":{"@id":"https:\/\/fatihboy.com\/kubernetes-operatorleri-ve-operator-framework\/#primaryimage"},"thumbnailUrl":"https:\/\/fatihboy.com\/wp-content\/uploads\/2019\/12\/3117.jpg","keywords":["Kubernetes","Operator"],"articleSection":["Kubernetes","T\u00fcrk\u00e7e"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihboy.com\/kubernetes-operatorleri-ve-operator-framework\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/fatihboy.com\/kubernetes-operatorleri-ve-operator-framework\/","url":"https:\/\/fatihboy.com\/kubernetes-operatorleri-ve-operator-framework\/","name":"Kubernetes Operator'leri ve Operator Framework - Fatih Boy","isPartOf":{"@id":"https:\/\/fatihboy.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/fatihboy.com\/kubernetes-operatorleri-ve-operator-framework\/#primaryimage"},"image":{"@id":"https:\/\/fatihboy.com\/kubernetes-operatorleri-ve-operator-framework\/#primaryimage"},"thumbnailUrl":"https:\/\/fatihboy.com\/wp-content\/uploads\/2019\/12\/3117.jpg","datePublished":"2019-12-02T06:20:00+00:00","description":"Bu makalemde Kubernetes Operator'leri ve CoreOS Operator Framework hakk\u0131nda detayl\u0131 bilgi alabilir, Operator Lifecycle Manager'\u0131 kurabilirsiniz.","breadcrumb":{"@id":"https:\/\/fatihboy.com\/kubernetes-operatorleri-ve-operator-framework\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihboy.com\/kubernetes-operatorleri-ve-operator-framework\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fatihboy.com\/kubernetes-operatorleri-ve-operator-framework\/#primaryimage","url":"https:\/\/fatihboy.com\/wp-content\/uploads\/2019\/12\/3117.jpg","contentUrl":"https:\/\/fatihboy.com\/wp-content\/uploads\/2019\/12\/3117.jpg","width":1024,"height":512},{"@type":"BreadcrumbList","@id":"https:\/\/fatihboy.com\/kubernetes-operatorleri-ve-operator-framework\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/fatihboy.com\/"},{"@type":"ListItem","position":2,"name":"Kubernetes Operator&#8217;leri ve Operator Framework"}]},{"@type":"WebSite","@id":"https:\/\/fatihboy.com\/#website","url":"https:\/\/fatihboy.com\/","name":"Fatih Boy","description":"Ki\u015fisel Web Sitesi","publisher":{"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihboy.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158","name":"Fatih Boy","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fatihboy.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g","caption":"Fatih Boy"},"logo":{"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/image\/"},"sameAs":["https:\/\/fatihboy.com"],"url":"https:\/\/fatihboy.com\/en\/author\/fatih\/"}]}},"brizy_media":[],"_links":{"self":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts\/16284","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/comments?post=16284"}],"version-history":[{"count":0,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts\/16284\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/media\/16624"}],"wp:attachment":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/media?parent=16284"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/categories?post=16284"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/tags?post=16284"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}