{"id":32815,"date":"2025-10-26T07:41:41","date_gmt":"2025-10-26T04:41:41","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=32815"},"modified":"2025-10-26T07:41:41","modified_gmt":"2025-10-26T04:41:41","slug":"devops-sanal-bir-minecraft-dunyasindan-terraform-ile-digitalocean-kubernetes-uygulamalari-dagitma","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/devops-sanal-bir-minecraft-dunyasindan-terraform-ile-digitalocean-kubernetes-uygulamalari-dagitma\/","title":{"rendered":"DevOps Sanal Bir Minecraft D\u00fcnyas\u0131ndan: Terraform ile DigitalOcean Kubernetes Uygulamalar\u0131 Da\u011f\u0131tma"},"content":{"rendered":"<p><body><\/p>\n<h2>DevOps Sanal Bir Minecraft D\u00fcnyas\u0131ndan: Terraform ile DigitalOcean Kubernetes Uygulamalar\u0131 Da\u011f\u0131tma<\/h2>\n<p>Modern yaz\u0131l\u0131m geli\u015ftirme d\u00fcnyas\u0131nda h\u0131z, otomasyon ve g\u00fcvenilirlik, rekabet\u00e7i kalmak i\u00e7in olmazsa olmazd\u0131r. Bu prensiplerin temelini olu\u015fturan DevOps k\u00fclt\u00fcr\u00fc, geli\u015ftirme ve operasyon ekiplerini bir araya getirerek s\u00fcrekli entegrasyon ve s\u00fcrekli da\u011f\u0131t\u0131m (CI\/CD) s\u00fcre\u00e7lerini m\u00fcmk\u00fcn k\u0131lar. Peki, bu karma\u015f\u0131k d\u00fcnyay\u0131 sanal bir Minecraft evreninde hayal etsek nas\u0131l olurdu?<\/p>\n<p>Bu rehberde, DigitalOcean Kubernetes (DOKS) \u00fczerinde bir uygulaman\u0131n altyap\u0131s\u0131n\u0131 Terraform ile nas\u0131l otomatize edece\u011fimizi ad\u0131m ad\u0131m inceleyece\u011fiz. Minecraft d\u00fcnyas\u0131n\u0131 altyap\u0131m\u0131z\u0131n metaforu olarak kullanarak, Terraform&#8217;un &#8220;usta mimar&#8221; rol\u00fcn\u00fc ve Kubernetes&#8217;in &#8220;ak\u0131ll\u0131 \u015fehir&#8221; y\u00f6netimini nas\u0131l \u00fcstlendi\u011fini g\u00f6rece\u011fiz.<\/p>\n<h3>Minecraft Metaforuyla Dijital Altyap\u0131y\u0131 Anlamak<\/h3>\n<p>Hayal edin ki, s\u0131n\u0131rs\u0131z kaynaklara sahip bir Minecraft d\u00fcnyas\u0131ndas\u0131n\u0131z. Bu d\u00fcnya, bizim dijital altyap\u0131m\u0131z. Sonsuz sanal sunucular, a\u011flar ve depolama alanlar\u0131 var. Geleneksel olarak, bu d\u00fcnyada bir yap\u0131 in\u015fa etmek (yani bir uygulama da\u011f\u0131tmak) i\u00e7in her tu\u011flay\u0131 (sunucu, veritaban\u0131, a\u011f kural\u0131) tek tek elle yerle\u015ftirmeniz gerekirdi. Bu, zaman al\u0131c\u0131, hataya a\u00e7\u0131k ve tekrarlamas\u0131 zor bir s\u00fcre\u00e7ti.<\/p>\n<p>\u0130\u015fte burada DevOps felsefesi ve ara\u00e7lar\u0131 devreye giriyor:<\/p>\n<p>*   <strong>Terraform: Usta Mimar\u0131n\u0131z.<\/strong> Terraform, bu d\u00fcnyada karma\u015f\u0131k yap\u0131lar\u0131 (Kubernetes k\u00fcmeleri, veritabanlar\u0131, a\u011flar) tek bir kod par\u00e7as\u0131nda tan\u0131mlaman\u0131z\u0131 sa\u011flayan bir ara\u00e7t\u0131r. Siz sadece yap\u0131n\u0131n plan\u0131n\u0131 (Terraform kodu) verirsiniz, o da sizin i\u00e7in t\u00fcm tu\u011flalar\u0131 otomatik olarak yerle\u015ftirir. T\u0131pk\u0131 bir Minecraft modunun devasa bir kaleyi saniyeler i\u00e7inde in\u015fa etmesi gibi.<br \/>\n*   <strong>Kubernetes: Ak\u0131ll\u0131 \u015eehir Y\u00f6neticisi.<\/strong> Kubernetes, in\u015fa etti\u011fimiz bu \u015fehrin (k\u00fcmenin) i\u00e7indeki ya\u015fam\u0131 (uygulamalar\u0131) y\u00f6neten bir sistemdir. Hangi k\u00f6yl\u00fcn\u00fcn (uygulama bile\u015feninin) nerede ya\u015fayaca\u011f\u0131n\u0131, nas\u0131l beslenece\u011fini (kaynak tahsisi), ne zaman \u00e7o\u011falaca\u011f\u0131n\u0131 (\u00f6l\u00e7eklendirme) ve hastaland\u0131\u011f\u0131nda (hata durumunda) nas\u0131l iyile\u015fece\u011fini otomatik olarak belirler. Sizin tek yapman\u0131z gereken, k\u00f6yl\u00fclerinize ne i\u015f yapacaklar\u0131n\u0131 (uygulama tan\u0131m\u0131) s\u00f6ylemektir.<br \/>\n*   <strong>DigitalOcean: D\u00fcnyan\u0131z\u0131n Sa\u011flay\u0131c\u0131s\u0131.<\/strong> DigitalOcean, bu Minecraft d\u00fcnyas\u0131n\u0131n kendisidir. Bize sanal araziyi (bulut kaynaklar\u0131) ve \u00fczerinde in\u015faat yapabilece\u011fimiz temel yap\u0131 ta\u015flar\u0131n\u0131 sa\u011flar.<\/p>\n<p>Bu rehberde amac\u0131m\u0131z, Terraform ile DigitalOcean \u00fczerinde bir Kubernetes k\u00fcmesi kurmak ve ard\u0131ndan bu k\u00fcme \u00fczerine basit bir uygulamay\u0131 da\u011f\u0131tmakt\u0131r. Bu s\u00fcre\u00e7, manuel ad\u0131mlar\u0131 ortadan kald\u0131rarak hem h\u0131z hem de tutarl\u0131l\u0131k sa\u011flayacakt\u0131r.<\/p>\n<h3>Terraform ile Dijital Altyap\u0131m\u0131z\u0131n Temellerini Atmak<\/h3>\n<p>Terraform, HashiCorp taraf\u0131ndan geli\u015ftirilen a\u00e7\u0131k kaynakl\u0131 bir &#8220;Altyap\u0131 Kod Olarak&#8221; (Infrastructure as Code &#8211; IaC) arac\u0131d\u0131r. Altyap\u0131n\u0131z\u0131 kod ile tan\u0131mlaman\u0131z\u0131, sa\u011flaman\u0131z\u0131 ve y\u00f6netmenizi sa\u011flar. Bu, altyap\u0131n\u0131n versiyon kontrol\u00fc alt\u0131nda olmas\u0131n\u0131, kolayca tekrarlanabilir olmas\u0131n\u0131 ve otomasyon s\u00fcre\u00e7lerine dahil edilmesini m\u00fcmk\u00fcn k\u0131lar.<\/p>\n<h4>Gereksinimler ve Kurulum<\/h4>\n<p>Ba\u015flamadan \u00f6nce a\u015fa\u011f\u0131daki ara\u00e7lara ihtiyac\u0131n\u0131z olacak:<\/p>\n<p>1.  <strong>Terraform:<\/strong> Resmi web sitesinden i\u015fletim sisteminize uygun s\u00fcr\u00fcm\u00fc indirin ve PATH&#8217;inize ekleyin.<br \/>\n2.  <strong>DigitalOcean Hesab\u0131 ve API Token:<\/strong> Bir DigitalOcean hesab\u0131n\u0131z olmal\u0131 ve API Token olu\u015fturmu\u015f olmal\u0131s\u0131n\u0131z. Bu token, Terraform&#8217;un DigitalOcean hesab\u0131n\u0131zda kaynak olu\u015fturabilmesi i\u00e7in gereklidir. Token&#8217;\u0131 g\u00fcvenli bir \u015fekilde saklay\u0131n.<br \/>\n3.  <strong><code>kubectl<\/code>:<\/strong> Kubernetes k\u00fcmelerinizle etkile\u015fim kurmak i\u00e7in kullan\u0131lan komut sat\u0131r\u0131 arac\u0131d\u0131r.<\/p>\n<h4>DigitalOcean Kubernetes K\u00fcmesi Olu\u015fturma (Terraform Kodu)<\/h4>\n<p>Bir dizin olu\u015fturun (\u00f6rne\u011fin <code>minecraft-devops<\/code>) ve i\u00e7ine <code>main.tf<\/code> ad\u0131nda bir dosya olu\u015fturun. A\u015fa\u011f\u0131daki kodu bu dosyaya yap\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-terraform\"># main.tf\n\n<h2>Terraform'un hangi sa\u011flay\u0131c\u0131lar\u0131 kullanaca\u011f\u0131n\u0131 belirtiyoruz<\/h2>\nterraform {\n  required_providers {\n    digitalocean = {\n      source = \"digitalocean\/digitalocean\"\n      version = \"~> 2.0\" # DigitalOcean sa\u011flay\u0131c\u0131s\u0131n\u0131n belirli bir s\u00fcr\u00fcm\u00fcn\u00fc kullan\n    }\n  }\n}\n\n<h2>DigitalOcean sa\u011flay\u0131c\u0131s\u0131n\u0131 yap\u0131land\u0131r\u0131yoruz<\/h2>\nprovider \"digitalocean\" {\n  # API token'\u0131 bir de\u011fi\u015fkenden al\u0131yoruz. G\u00fcvenlik i\u00e7in ortam de\u011fi\u015fkeni olarak veya .tfvars ile ge\u00e7mek en iyisidir.\n  token = var.do_token\n}\n\n<h2>DigitalOcean API Token i\u00e7in bir de\u011fi\u015fken tan\u0131ml\u0131yoruz<\/h2>\nvariable \"do_token\" {\n  description = \"DigitalOcean API Token\"\n  type        = string\n  sensitive   = true # Bu de\u011fi\u015fkenin hassas oldu\u011funu belirtir, \u00e7\u0131kt\u0131ya yaz\u0131lmaz\n}\n\n<h2>DigitalOcean Kubernetes K\u00fcmesi (DOKS) kayna\u011f\u0131n\u0131 tan\u0131ml\u0131yoruz<\/h2>\nresource \"digitalocean_kubernetes_cluster\" \"minecraft_cluster\" {\n  name    = \"minecraft-devops-cluster\" # K\u00fcmenin ad\u0131\n  region  = \"fra1\" # K\u00fcmenin konu\u015fland\u0131r\u0131laca\u011f\u0131 b\u00f6lge (size en yak\u0131n olan\u0131 se\u00e7in)\n  version = \"1.28.2-do.0\" # Kubernetes s\u00fcr\u00fcm\u00fc. DigitalOcean dok\u00fcmantasyonundan g\u00fcncel s\u00fcr\u00fcm\u00fc kontrol edin.\n  auto_upgrade = true # Otomatik s\u00fcr\u00fcm y\u00fckseltmeleri etkinle\u015ftir\n  \n  # D\u00fc\u011f\u00fcm havuzu (node pool) tan\u0131ml\u0131yoruz\n  node_pool {\n    name       = \"worker-pool\" # D\u00fc\u011f\u00fcm havuzunun ad\u0131\n    size       = \"s-2vcpu-4gb\" # D\u00fc\u011f\u00fcm boyutu (\u00f6rne\u011fin, 2 vCPU, 4GB RAM)\n    node_count = 2 # Ba\u015flang\u0131\u00e7ta 2 adet d\u00fc\u011f\u00fcm (worker node) olu\u015ftur\n  }\n}\n\n<h2>Kubernetes k\u00fcmesinin kubeconfig \u00e7\u0131kt\u0131s\u0131n\u0131 al\u0131yoruz<\/h2>\noutput \"kube_config\" {\n  value     = digitalocean_kubernetes_cluster.minecraft_cluster.kube_config[0].raw_config\n  sensitive = true # Kubeconfig hassas bilgi i\u00e7erdi\u011fi i\u00e7in \u00e7\u0131kt\u0131ya yaz\u0131lmaz\n  description = \"Kubernetes k\u00fcmesi i\u00e7in kubeconfig i\u00e7eri\u011fi\"\n}\n\n<h2>K\u00fcmenin API u\u00e7 noktas\u0131n\u0131 (endpoint) \u00e7\u0131kt\u0131 olarak al\u0131yoruz<\/h2>\noutput \"cluster_endpoint\" {\n  value = digitalocean_kubernetes_cluster.minecraft_cluster.endpoint\n  description = \"Kubernetes k\u00fcmesinin API u\u00e7 noktas\u0131\"\n}<\/code><\/pre>\n<p><strong>Kodu \u00c7al\u0131\u015ft\u0131rma Ad\u0131mlar\u0131:<\/strong><\/p>\n<p>1.  <strong><code>terraform init<\/code>:<\/strong> \u00c7al\u0131\u015fma dizininizde terminali a\u00e7\u0131n ve bu komutu \u00e7al\u0131\u015ft\u0131r\u0131n. Terraform, DigitalOcean sa\u011flay\u0131c\u0131s\u0131n\u0131 indirir ve gerekli ba\u015flang\u0131\u00e7 ayarlar\u0131n\u0131 yapar.<\/p>\n<pre><code class=\"language-bash\">terraform init<\/code><\/pre>\n<p>2.  <strong><code>terraform plan<\/code>:<\/strong> Bu komut, Terraform&#8217;un mevcut altyap\u0131n\u0131zda ne gibi de\u011fi\u015fiklikler yapaca\u011f\u0131n\u0131 g\u00f6sterir. Ger\u00e7ek bir de\u011fi\u015fiklik yapmaz, sadece bir \u00f6nizleme sunar. Bu, &#8220;in\u015faat plan\u0131n\u0131&#8221; g\u00f6zden ge\u00e7irmek gibidir.<\/p>\n<pre><code class=\"language-bash\"># API token'\u0131 ortam de\u011fi\u015fkeni olarak ge\u00e7mek i\u00e7in (Linux\/macOS)\n    export DO_TOKEN=\"sizin_digitalocean_api_tokeniniz\"\n    terraform plan -var=\"do_token=$DO_TOKEN\"<\/code><\/pre>\n<p>    <em>\u0130pucu:<\/em> <code>do_token<\/code> de\u011fi\u015fkenini g\u00fcvenli bir \u015fekilde ge\u00e7irmek i\u00e7in <code>terraform.tfvars<\/code> dosyas\u0131 olu\u015fturabilir veya yukar\u0131daki gibi ortam de\u011fi\u015fkeni kullanabilirsiniz. <code>terraform.tfvars<\/code> dosyas\u0131 Git&#8217;e commit <em>edilmemelidir<\/em>.<br \/>\n3.  <strong><code>terraform apply<\/code>:<\/strong> Planlad\u0131\u011f\u0131n\u0131z de\u011fi\u015fiklikleri uygulamak i\u00e7in bu komutu kullan\u0131n. Terraform, DigitalOcean&#8217;da Kubernetes k\u00fcmesini olu\u015fturmaya ba\u015flayacakt\u0131r. Bu i\u015flem birka\u00e7 dakika s\u00fcrebilir. Onay istenecektir, <code>yes<\/code> yazarak devam edin.<\/p>\n<pre><code class=\"language-bash\">terraform apply -var=\"do_token=$DO_TOKEN\"<\/code><\/pre>\n<p>    Ba\u015far\u0131l\u0131 bir da\u011f\u0131t\u0131m\u0131n ard\u0131ndan, <code>kube_config<\/code> ve <code>cluster_endpoint<\/code> \u00e7\u0131kt\u0131lar\u0131n\u0131 terminalde g\u00f6receksiniz. <code>kube_config<\/code> \u00e7\u0131kt\u0131s\u0131n\u0131 g\u00fcvenli bir yere kaydedin, bu k\u00fcmenize eri\u015fmek i\u00e7in gerekecek.<\/p>\n<h4><code>kubectl<\/code> ile K\u00fcmenize Ba\u011flanma<\/h4>\n<p><code>terraform apply<\/code> komutunun \u00e7\u0131kt\u0131s\u0131 olarak ald\u0131\u011f\u0131n\u0131z <code>kube_config<\/code> i\u00e7eri\u011fini bir dosyaya kaydedin (\u00f6rne\u011fin <code>kubeconfig.yaml<\/code>). Ard\u0131ndan <code>kubectl<\/code>&#8216;i bu dosyay\u0131 kullanacak \u015fekilde yap\u0131land\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\"># Kubeconfig \u00e7\u0131kt\u0131s\u0131n\u0131 bir dosyaya kaydettiyseniz\nexport KUBECONFIG=.\/kubeconfig.yaml\n\n<h2>K\u00fcmenin d\u00fc\u011f\u00fcmlerini listeleyin<\/h2>\nkubectl get nodes<\/code><\/pre>\n<p>E\u011fer d\u00fc\u011f\u00fcmleri g\u00f6rebiliyorsan\u0131z, Kubernetes k\u00fcmeniz ba\u015far\u0131yla kurulmu\u015f ve <code>kubectl<\/code> ile eri\u015filebilir durumdad\u0131r.<\/p>\n<h3>Kubernetes \u00dczerinde Uygulamalar\u0131m\u0131z\u0131 \u0130n\u015fa Etmek<\/h3>\n<p>Kubernetes k\u00fcmemiz art\u0131k haz\u0131r. \u015eimdi bu &#8220;ak\u0131ll\u0131 \u015fehrin&#8221; i\u00e7ine &#8220;k\u00f6yl\u00fclerimizi&#8221; yani uygulamalar\u0131m\u0131z\u0131 yerle\u015ftirelim. Kubernetes, uygulamalar\u0131n\u0131z\u0131 konteynerler (\u00f6rne\u011fin Docker) i\u00e7inde \u00e7al\u0131\u015ft\u0131rman\u0131z\u0131 sa\u011flar ve bu konteynerlerin ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc y\u00f6netir.<\/p>\n<h4>Uygulama Da\u011f\u0131t\u0131m\u0131 (Deployment) ve Servis (Service) Tan\u0131mlar\u0131<\/h4>\n<p>Basit bir Nginx web sunucusunu Kubernetes k\u00fcmemize da\u011f\u0131taca\u011f\u0131z. Bunun i\u00e7in iki ana Kubernetes objesi tan\u0131mlayaca\u011f\u0131z:<\/p>\n<p>1.  <strong>Deployment:<\/strong> Uygulama konteynerlerimizin nas\u0131l \u00e7al\u0131\u015faca\u011f\u0131n\u0131 (ka\u00e7 kopya, hangi imaj, hangi portlar vb.) tan\u0131mlar.<br \/>\n2.  <strong>Service:<\/strong> Uygulamam\u0131za d\u0131\u015far\u0131dan nas\u0131l eri\u015filece\u011fini tan\u0131mlar. <code>LoadBalancer<\/code> tipi, DigitalOcean&#8217;da otomatik olarak bir Load Balancer olu\u015fturarak uygulamam\u0131za genel bir IP adresi atar.<\/p>\n<p><code>app-manifests.yaml<\/code> ad\u0131nda bir dosya olu\u015fturun ve a\u015fa\u011f\u0131daki i\u00e7eri\u011fi yap\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-yaml\"># app-manifests.yaml\n\n<h2>Nginx web sunucusu i\u00e7in Deployment tan\u0131m\u0131<\/h2>\napiVersion: apps\/v1\nkind: Deployment\nmetadata:\n  name: minecraft-app-deployment # Deployment'\u0131n ad\u0131\n  labels:\n    app: minecraft-app # Uygulama etiketimiz\nspec:\n  replicas: 3 # Uygulamadan 3 adet kopya (pod) \u00e7al\u0131\u015ft\u0131r\n  selector:\n    matchLabels:\n      app: minecraft-app # Bu Deployment'\u0131n hangi Pod'lar\u0131 y\u00f6netece\u011fini belirler\n  template:\n    metadata:\n      labels:\n        app: minecraft-app # Pod'lar\u0131n etiketi\n    spec:\n      containers:\n      - name: minecraft-web-container # Konteynerin ad\u0131\n        image: nginx:latest # Kullan\u0131lacak Docker imaj\u0131 (Nginx'in en son s\u00fcr\u00fcm\u00fc)\n        ports:\n        - containerPort: 80 # Konteynerin dinleyece\u011fi port\n---\n<h2>Nginx uygulamas\u0131 i\u00e7in Service tan\u0131m\u0131<\/h2>\napiVersion: v1\nkind: Service\nmetadata:\n  name: minecraft-app-service # Service'in ad\u0131\nspec:\n  selector:\n    app: minecraft-app # Bu Service'in hangi Pod'lar\u0131 hedefleyece\u011fini belirler\n  ports:\n    - protocol: TCP\n      port: 80 # Service'in d\u0131\u015far\u0131ya a\u00e7aca\u011f\u0131 port\n      targetPort: 80 # Service'in y\u00f6nlendirece\u011fi Pod'un portu\n  type: LoadBalancer # D\u0131\u015far\u0131dan eri\u015fim i\u00e7in bir Load Balancer olu\u015ftur<\/code><\/pre>\n<p><strong>Uygulamay\u0131 Da\u011f\u0131tma Ad\u0131mlar\u0131:<\/strong><\/p>\n<p>1.  <strong><code>kubectl apply<\/code>:<\/strong> Kubernetes manifest dosyas\u0131n\u0131 kullanarak uygulamay\u0131 k\u00fcmenize da\u011f\u0131t\u0131n.<\/p>\n<pre><code class=\"language-bash\">kubectl apply -f app-manifests.yaml<\/code><\/pre>\n<p>    Bu komut, Nginx Deployment&#8217;\u0131n\u0131 ve Service&#8217;ini olu\u015fturacakt\u0131r.<br \/>\n2.  <strong>Da\u011f\u0131t\u0131m Durumunu Kontrol Etme:<\/strong> Pod&#8217;lar\u0131n\u0131z\u0131n \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olun.<\/p>\n<pre><code class=\"language-bash\">kubectl get pods -l app=minecraft-app\n    # \u00c7\u0131kt\u0131 \u00f6rnek:\n    # minecraft-app-deployment-5c7f8...   1\/1     Running\n    # minecraft-app-deployment-6f8d9...   1\/1     Running\n    # minecraft-app-deployment-7a1b2...   1\/1     Running<\/code><\/pre>\n<p>3.  <strong>Servis Durumunu Kontrol Etme:<\/strong> Load Balancer&#8217;\u0131n bir d\u0131\u015f IP adresi al\u0131p almad\u0131\u011f\u0131n\u0131 kontrol edin. Bu i\u015flem birka\u00e7 dakika s\u00fcrebilir.<\/p>\n<pre><code class=\"language-bash\">kubectl get svc minecraft-app-service\n    # \u00c7\u0131kt\u0131 \u00f6rnek:\n    # NAME                  TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)        AGE\n    # minecraft-app-service LoadBalancer   10.245.xx.yy    AAA.BBB.CCC.DDD 80:3xxxx\/TCP   2m<\/code><\/pre>\n<p>    <code>EXTERNAL-IP<\/code> s\u00fctunundaki IP adresini not edin. Bu, uygulaman\u0131za internet \u00fczerinden eri\u015febilece\u011finiz adrestir. Taray\u0131c\u0131n\u0131zda bu IP adresine giderek Nginx&#8217;in varsay\u0131lan kar\u015f\u0131lama sayfas\u0131n\u0131 g\u00f6rmelisiniz.<\/p>\n<p>Tebrikler! Terraform ile bir Kubernetes k\u00fcmesi kurdunuz ve \u00fczerine bir uygulama da\u011f\u0131tt\u0131n\u0131z. Bu, Minecraft d\u00fcnyan\u0131zda otomatik bir \u00e7iftlik kurmaya benzer: Siz sadece plan\u0131 verdiniz, sistem sizin i\u00e7in her \u015feyi in\u015fa etti ve y\u00f6netiyor.<\/p>\n<h3>DevOps Felsefesi ve S\u00fcrekli Geli\u015fim<\/h3>\n<p>Bu rehberde yapt\u0131\u011f\u0131m\u0131z ad\u0131mlar, DevOps felsefesinin temel ta\u015flar\u0131n\u0131 olu\u015fturur:<\/p>\n<p>*   <strong>Otomasyon:<\/strong> Altyap\u0131m\u0131z\u0131 (Terraform) ve uygulamalar\u0131m\u0131z\u0131 (Kubernetes) kod ile tan\u0131mlayarak manuel hatalar\u0131 minimize ettik ve s\u00fcre\u00e7leri otomatik hale getirdik. T\u0131pk\u0131 bir redstone devresiyle otomatik kap\u0131lar yapmak gibi.<br \/>\n*   <strong>Versiyon Kontrol\u00fc:<\/strong> Terraform ve Kubernetes manifest dosyalar\u0131n\u0131 Git gibi bir versiyon kontrol sisteminde saklayarak, altyap\u0131m\u0131z\u0131n ve uygulamalar\u0131m\u0131z\u0131n ge\u00e7mi\u015fini takip edebilir, de\u011fi\u015fiklikleri g\u00f6zden ge\u00e7irebilir ve geri alabiliriz.<br \/>\n*   <strong>Tekrarlanabilirlik:<\/strong> Ayn\u0131 Terraform kodu ile istedi\u011fimiz zaman, istedi\u011fimiz yerde tamamen ayn\u0131 Kubernetes k\u00fcmesini ve uygulamalar\u0131 yeniden olu\u015fturabiliriz. Bu, geli\u015ftirme, test ve \u00fcretim ortamlar\u0131n\u0131n tutarl\u0131 olmas\u0131n\u0131 sa\u011flar.<br \/>\n*   <strong>\u0130\u015fbirli\u011fi:<\/strong> Kod tabanl\u0131 bir yakla\u015f\u0131m, ekiplerin altyap\u0131 ve uygulama de\u011fi\u015fiklikleri \u00fczerinde daha kolay i\u015fbirli\u011fi yapmas\u0131na olanak tan\u0131r.<br \/>\n*   <strong>S\u00fcrekli Entegrasyon\/S\u00fcrekli Da\u011f\u0131t\u0131m (CI\/CD):<\/strong> Bu kurulum, CI\/CD boru hatlar\u0131na entegrasyon i\u00e7in m\u00fckemmel bir temeldir. \u00d6rne\u011fin, bir Git deposuna yap\u0131lan her kod de\u011fi\u015fikli\u011finde (uygulama veya altyap\u0131), otomatik olarak <code>terraform plan<\/code>, <code>terraform apply<\/code> veya <code>kubectl apply<\/code> komutlar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131ran bir CI\/CD sistemi kurabilirsiniz. Bu, yeni \u00f6zelliklerin veya d\u00fczeltmelerin \u00e7ok daha h\u0131zl\u0131 ve g\u00fcvenilir bir \u015fekilde canl\u0131ya al\u0131nmas\u0131n\u0131 sa\u011flar.<\/p>\n<p>Bu ad\u0131mlar, sanal Minecraft d\u00fcnyan\u0131zda sadece bir temel atmakt\u0131. Ger\u00e7ek d\u00fcnyada, bu temelin \u00fczerine izleme (monitoring), g\u00fcnl\u00fckleme (logging), g\u00fcvenlik duvarlar\u0131, a\u011f politikalar\u0131, otomatik \u00f6l\u00e7eklendirme gibi bir\u00e7ok katman ekleyerek daha sa\u011flam ve g\u00fcvenli bir yap\u0131 in\u015fa edersiniz. Ancak ba\u015flang\u0131\u00e7 i\u00e7in, bu otomatize edilmi\u015f s\u00fcre\u00e7, modern DevOps uygulamalar\u0131n\u0131n g\u00fcc\u00fcn\u00fc anlamak i\u00e7in harika bir ad\u0131md\u0131r.<\/p>\n<h4>Kaynaklar\u0131 Temizleme<\/h4>\n<p>\u0130\u015finiz bitti\u011finde, DigitalOcean hesab\u0131n\u0131zda gereksiz maliyet olu\u015fmamas\u0131 i\u00e7in olu\u015fturdu\u011funuz kaynaklar\u0131 temizlemeniz \u00f6nemlidir.<\/p>\n<p>1.  <strong>Kubernetes Uygulamas\u0131n\u0131 Silme:<\/strong><\/p>\n<pre><code class=\"language-bash\">kubectl delete -f app-manifests.yaml<\/code><\/pre>\n<p>2.  <strong>Kubernetes K\u00fcmesini Silme:<\/strong><\/p>\n<pre><code class=\"language-bash\">terraform destroy -var=\"do_token=$DO_TOKEN\"<\/code><\/pre>\n<p>    Bu komut, Terraform&#8217;un olu\u015fturdu\u011fu t\u00fcm kaynaklar\u0131 (Kubernetes k\u00fcmesi, d\u00fc\u011f\u00fcm havuzlar\u0131 vb.) DigitalOcean hesab\u0131n\u0131zdan kald\u0131racakt\u0131r. Onay i\u00e7in yine <code>yes<\/code> yazman\u0131z gerekecektir.<\/p>\n<h3>Sonu\u00e7 ve S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<p>Bu rehberde, DevOps prensiplerini Minecraft metaforuyla a\u00e7\u0131klayarak, Terraform ve Kubernetes&#8217;in g\u00fcc\u00fcn\u00fc birle\u015ftirdik. DigitalOcean \u00fczerinde bir Kubernetes k\u00fcmesini kod ile nas\u0131l olu\u015fturaca\u011f\u0131m\u0131z\u0131 ve \u00fczerine basit bir uygulamay\u0131 nas\u0131l da\u011f\u0131taca\u011f\u0131m\u0131z\u0131 \u00f6\u011frendik. Bu yakla\u015f\u0131m, altyap\u0131 y\u00f6netimini daha verimli, g\u00fcvenilir ve \u00f6l\u00e7eklenebilir hale getirerek modern yaz\u0131l\u0131m geli\u015ftirme s\u00fcre\u00e7leri i\u00e7in temel bir yap\u0131 ta\u015f\u0131 sunar.<\/p>\n<h4>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h4>\n<p><strong>1. Neden Terraform kullanmal\u0131y\u0131m? Manuel olarak da Kubernetes k\u00fcmesi olu\u015fturabilirim.<\/strong><br \/>\nManuel kurulumlar zaman al\u0131c\u0131, hataya a\u00e7\u0131k ve tekrarlanamazd\u0131r. Terraform ile altyap\u0131n\u0131z\u0131 kod olarak tan\u0131mlayarak, ayn\u0131 k\u00fcme yap\u0131land\u0131rmas\u0131n\u0131 defalarca olu\u015fturabilir, versiyon kontrol\u00fc alt\u0131nda tutabilir ve otomasyon s\u00fcre\u00e7lerine dahil edebilirsiniz. Bu, tutarl\u0131l\u0131k, h\u0131z ve g\u00fcvenilirlik sa\u011flar.<\/p>\n<p><strong>2. Kubernetes karma\u015f\u0131k de\u011fil mi? Daha basit bir \u00e7\u00f6z\u00fcm yok mu?<\/strong><br \/>\nKubernetes, ba\u015flang\u0131\u00e7ta karma\u015f\u0131k g\u00f6r\u00fcnebilir, ancak modern, mikroservis tabanl\u0131 uygulamalar\u0131n \u00f6l\u00e7eklendirilmesi ve y\u00f6netimi i\u00e7in end\u00fcstri standard\u0131d\u0131r. DigitalOcean Kubernetes gibi y\u00f6netilen hizmetler, altyap\u0131 karma\u015f\u0131kl\u0131\u011f\u0131n\u0131n bir k\u0131sm\u0131n\u0131 sizin i\u00e7in \u00fcstlenir. Basit uygulamalar i\u00e7in daha k\u00fc\u00e7\u00fck konteyner orkestrasyon ara\u00e7lar\u0131 (\u00f6rn. Docker Compose) veya sunucusuz (serverless) \u00e7\u00f6z\u00fcmler (\u00f6rn. DigitalOcean Functions) d\u00fc\u015f\u00fcn\u00fclebilir, ancak K8s uzun vadede esneklik ve g\u00fc\u00e7 sunar.<\/p>\n<p><strong>3. Bu yakla\u015f\u0131m sadece DigitalOcean i\u00e7in mi ge\u00e7erli?<\/strong><br \/>\nHay\u0131r, Terraform birden \u00e7ok bulut sa\u011flay\u0131c\u0131s\u0131n\u0131 (AWS, Azure, Google Cloud) ve di\u011fer altyap\u0131 hizmetlerini destekler. Sa\u011flay\u0131c\u0131 blokunu ve kaynak tan\u0131mlar\u0131n\u0131 de\u011fi\u015ftirerek ayn\u0131 mant\u0131\u011f\u0131 farkl\u0131 platformlarda da uygulayabilirsiniz. Kubernetes de bulut sa\u011flay\u0131c\u0131s\u0131ndan ba\u011f\u0131ms\u0131z olarak \u00e7al\u0131\u015fabilir.<\/p>\n<p><strong>4. \u00dcretim ortam\u0131nda ba\u015fka nelere dikkat etmeliyim?<\/strong><br \/>\n\u00dcretim ortamlar\u0131 i\u00e7in daha fazla g\u00fcvenlik (a\u011f politikalar\u0131, RBAC), izleme ve g\u00fcnl\u00fckleme \u00e7\u00f6z\u00fcmleri (Prometheus, Grafana, ELK Stack), otomatik \u00f6l\u00e7eklendirme (Horizontal Pod Autoscaler, Cluster Autoscaler), yedekleme ve felaket kurtarma stratejileri gibi ek katmanlar eklemeniz gerekir. Ayr\u0131ca, daha g\u00fc\u00e7l\u00fc d\u00fc\u011f\u00fcm boyutlar\u0131 ve daha fazla d\u00fc\u011f\u00fcm say\u0131s\u0131 \u00f6nerilir.<\/p>\n<p><strong>5. CI\/CD entegrasyonunu nas\u0131l yapar\u0131m?<\/strong><br \/>\nTerraform ve Kubernetes manifest dosyalar\u0131n\u0131z\u0131 bir Git deposunda (GitHub, GitLab, Bitbucket) saklay\u0131n. GitHub Actions, GitLab CI\/CD, Jenkins veya CircleCI gibi bir CI\/CD arac\u0131 kullanarak, Git&#8217;e yap\u0131lan her <code>push<\/code> i\u015flemi sonras\u0131 otomatik olarak <code>terraform plan<\/code>, <code>terraform apply<\/code> ve <code>kubectl apply<\/code> komutlar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131ran boru hatlar\u0131 (pipelines) olu\u015fturabilirsiniz. Bu genellikle GitOps olarak bilinen bir yakla\u015f\u0131md\u0131r.<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"DevOps Sanal Bir Minecraft D\u00fcnyas\u0131ndan: Terraform ile DigitalOcean Kubernetes Uygulamalar\u0131 Da\u011f\u0131tma\nModern yaz\u0131l\u0131m geli\u015ftirme d\u00fcnyas\u0131nda h","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":[1328],"tags":[],"class_list":{"0":"post-32815","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-bash","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>DevOps Sanal Bir Minecraft D\u00fcnyas\u0131ndan: Terraform ile DigitalOcean Kubernetes Uygulamalar\u0131 Da\u011f\u0131tma - 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\/devops-sanal-bir-minecraft-dunyasindan-terraform-ile-digitalocean-kubernetes-uygulamalari-dagitma\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"DevOps Sanal Bir Minecraft D\u00fcnyas\u0131ndan: Terraform ile DigitalOcean Kubernetes Uygulamalar\u0131 Da\u011f\u0131tma\" \/>\n<meta property=\"og:description\" content=\"DevOps Sanal Bir Minecraft D\u00fcnyas\u0131ndan: Terraform ile DigitalOcean Kubernetes Uygulamalar\u0131 Da\u011f\u0131tma Modern yaz\u0131l\u0131m geli\u015ftirme d\u00fcnyas\u0131nda h\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/devops-sanal-bir-minecraft-dunyasindan-terraform-ile-digitalocean-kubernetes-uygulamalari-dagitma\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-26T04:41:41+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=\"13 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/devops-sanal-bir-minecraft-dunyasindan-terraform-ile-digitalocean-kubernetes-uygulamalari-dagitma\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/devops-sanal-bir-minecraft-dunyasindan-terraform-ile-digitalocean-kubernetes-uygulamalari-dagitma\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"DevOps Sanal Bir Minecraft D\u00fcnyas\u0131ndan: Terraform ile DigitalOcean Kubernetes Uygulamalar\u0131 Da\u011f\u0131tma\",\"datePublished\":\"2025-10-26T04:41:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/devops-sanal-bir-minecraft-dunyasindan-terraform-ile-digitalocean-kubernetes-uygulamalari-dagitma\/\"},\"wordCount\":1985,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Bash\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/devops-sanal-bir-minecraft-dunyasindan-terraform-ile-digitalocean-kubernetes-uygulamalari-dagitma\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/devops-sanal-bir-minecraft-dunyasindan-terraform-ile-digitalocean-kubernetes-uygulamalari-dagitma\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/devops-sanal-bir-minecraft-dunyasindan-terraform-ile-digitalocean-kubernetes-uygulamalari-dagitma\/\",\"name\":\"DevOps Sanal Bir Minecraft D\u00fcnyas\u0131ndan: Terraform ile DigitalOcean Kubernetes Uygulamalar\u0131 Da\u011f\u0131tma - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-26T04:41:41+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/devops-sanal-bir-minecraft-dunyasindan-terraform-ile-digitalocean-kubernetes-uygulamalari-dagitma\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/devops-sanal-bir-minecraft-dunyasindan-terraform-ile-digitalocean-kubernetes-uygulamalari-dagitma\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/devops-sanal-bir-minecraft-dunyasindan-terraform-ile-digitalocean-kubernetes-uygulamalari-dagitma\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"DevOps Sanal Bir Minecraft D\u00fcnyas\u0131ndan: Terraform ile DigitalOcean Kubernetes Uygulamalar\u0131 Da\u011f\u0131tma\"}]},{\"@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":"DevOps Sanal Bir Minecraft D\u00fcnyas\u0131ndan: Terraform ile DigitalOcean Kubernetes Uygulamalar\u0131 Da\u011f\u0131tma - 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\/devops-sanal-bir-minecraft-dunyasindan-terraform-ile-digitalocean-kubernetes-uygulamalari-dagitma\/","og_locale":"tr_TR","og_type":"article","og_title":"DevOps Sanal Bir Minecraft D\u00fcnyas\u0131ndan: Terraform ile DigitalOcean Kubernetes Uygulamalar\u0131 Da\u011f\u0131tma","og_description":"DevOps Sanal Bir Minecraft D\u00fcnyas\u0131ndan: Terraform ile DigitalOcean Kubernetes Uygulamalar\u0131 Da\u011f\u0131tma Modern yaz\u0131l\u0131m geli\u015ftirme d\u00fcnyas\u0131nda h","og_url":"https:\/\/fatihsoysal.com\/blog\/devops-sanal-bir-minecraft-dunyasindan-terraform-ile-digitalocean-kubernetes-uygulamalari-dagitma\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-26T04:41:41+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"13 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/devops-sanal-bir-minecraft-dunyasindan-terraform-ile-digitalocean-kubernetes-uygulamalari-dagitma\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/devops-sanal-bir-minecraft-dunyasindan-terraform-ile-digitalocean-kubernetes-uygulamalari-dagitma\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"DevOps Sanal Bir Minecraft D\u00fcnyas\u0131ndan: Terraform ile DigitalOcean Kubernetes Uygulamalar\u0131 Da\u011f\u0131tma","datePublished":"2025-10-26T04:41:41+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/devops-sanal-bir-minecraft-dunyasindan-terraform-ile-digitalocean-kubernetes-uygulamalari-dagitma\/"},"wordCount":1985,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Bash"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/devops-sanal-bir-minecraft-dunyasindan-terraform-ile-digitalocean-kubernetes-uygulamalari-dagitma\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/devops-sanal-bir-minecraft-dunyasindan-terraform-ile-digitalocean-kubernetes-uygulamalari-dagitma\/","url":"https:\/\/fatihsoysal.com\/blog\/devops-sanal-bir-minecraft-dunyasindan-terraform-ile-digitalocean-kubernetes-uygulamalari-dagitma\/","name":"DevOps Sanal Bir Minecraft D\u00fcnyas\u0131ndan: Terraform ile DigitalOcean Kubernetes Uygulamalar\u0131 Da\u011f\u0131tma - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-26T04:41:41+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/devops-sanal-bir-minecraft-dunyasindan-terraform-ile-digitalocean-kubernetes-uygulamalari-dagitma\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/devops-sanal-bir-minecraft-dunyasindan-terraform-ile-digitalocean-kubernetes-uygulamalari-dagitma\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/devops-sanal-bir-minecraft-dunyasindan-terraform-ile-digitalocean-kubernetes-uygulamalari-dagitma\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"DevOps Sanal Bir Minecraft D\u00fcnyas\u0131ndan: Terraform ile DigitalOcean Kubernetes Uygulamalar\u0131 Da\u011f\u0131tma"}]},{"@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\/32815","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=32815"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32815\/revisions"}],"predecessor-version":[{"id":32816,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32815\/revisions\/32816"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=32815"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=32815"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=32815"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}