{"id":37013,"date":"2025-12-26T07:00:42","date_gmt":"2025-12-26T04:00:42","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/kubernetes-ingress-aciklamasi-yonlendirme-tls-ve-gercek-dunya-ornekleri\/"},"modified":"2025-12-26T07:00:42","modified_gmt":"2025-12-26T04:00:42","slug":"kubernetes-ingress-aciklamasi-yonlendirme-tls-ve-gercek-dunya-ornekleri","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/kubernetes-ingress-aciklamasi-yonlendirme-tls-ve-gercek-dunya-ornekleri\/","title":{"rendered":"Kubernetes Ingress A\u00e7\u0131klamas\u0131: Y\u00f6nlendirme, TLS ve Ger\u00e7ek D\u00fcnya \u00d6rnekleri"},"content":{"rendered":"<h2>Kubernetes Ingress A\u00e7\u0131klamas\u0131: Y\u00f6nlendirme, TLS ve Ger\u00e7ek D\u00fcnya \u00d6rnekleri<\/h2>\n<p>Kubernetes, modern uygulama da\u011f\u0131t\u0131m\u0131 ve y\u00f6netimi i\u00e7in vazge\u00e7ilmez bir platform haline gelmi\u015ftir. Ancak, k\u00fcme i\u00e7indeki servislerinizi d\u0131\u015f d\u00fcnyaya g\u00fcvenli ve verimli bir \u015fekilde a\u00e7mak, \u00f6zellikle birden fazla uygulaman\u0131z varsa, karma\u015f\u0131k bir hal alabilir. \u0130\u015fte tam bu noktada <strong>Kubernetes Ingress<\/strong> devreye girer. Ingress, k\u00fcme i\u00e7indeki servislere HTTP ve HTTPS trafi\u011fi i\u00e7in d\u0131\u015far\u0131dan eri\u015fim sa\u011flaman\u0131n en esnek ve g\u00fc\u00e7l\u00fc yoludur. Bu makalede, Ingress&#8217;in ne oldu\u011funu, nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131, y\u00f6nlendirme kurallar\u0131n\u0131, TLS y\u00f6netimini ve ger\u00e7ek d\u00fcnya senaryolar\u0131nda nas\u0131l kullan\u0131ld\u0131\u011f\u0131n\u0131 detayl\u0131 \u00f6rneklerle inceleyece\u011fiz.<\/p>\n<h3>Ingress Nedir ve Neden \u0130htiya\u00e7 Duyar\u0131z?<\/h3>\n<p>Kubernetes k\u00fcmelerindeki uygulamalar genellikle Service nesneleri arac\u0131l\u0131\u011f\u0131yla birbirleriyle ileti\u015fim kurar. Ancak bu Service nesneleri (ClusterIP, NodePort, LoadBalancer gibi) d\u0131\u015f d\u00fcnyadan do\u011frudan eri\u015fim sa\u011flamak i\u00e7in her zaman yeterli veya ideal de\u011fildir. \u00d6zellikle birden fazla uygulaman\u0131z varsa ve her birine \u00f6zel bir IP adresi veya port atamak istemiyorsan\u0131z, Ingress&#8217;e ihtiya\u00e7 duyars\u0131n\u0131z.<\/p>\n<h4>Kubernetes&#8217;te D\u0131\u015far\u0131ya A\u00e7\u0131lma \u0130htiyac\u0131<\/h4>\n<p>Bir web uygulamas\u0131n\u0131 Kubernetes k\u00fcmesi i\u00e7inde \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, kullan\u0131c\u0131lar\u0131n bu uygulamaya internet \u00fczerinden eri\u015febilmesi gerekir. Kubernetes, bu ihtiyac\u0131 kar\u015f\u0131lamak i\u00e7in \u00e7e\u015fitli Service tipleri sunar:<\/p>\n<ul>\n<li><code>ClusterIP<\/code>: Sadece k\u00fcme i\u00e7inden eri\u015filebilir.<\/li>\n<li><code>NodePort<\/code>: Her worker node \u00fczerinde belirli bir port a\u00e7arak d\u0131\u015far\u0131dan eri\u015fim sa\u011flar, ancak bu port genellikle statik ve y\u00fcksek numaral\u0131d\u0131r.<\/li>\n<li><code>LoadBalancer<\/code>: Bulut sa\u011flay\u0131c\u0131n\u0131zdan bir d\u0131\u015f y\u00fck dengeleyici temin eder ve trafi\u011fi servislerinize y\u00f6nlendirir. Her servis i\u00e7in ayr\u0131 bir LoadBalancer maliyetli ve y\u00f6netimi zor olabilir.<\/li>\n<\/ul>\n<h4>Service Nesnelerinin S\u0131n\u0131rl\u0131l\u0131klar\u0131<\/h4>\n<p><code>NodePort<\/code> ve <code>LoadBalancer<\/code> tipleri d\u0131\u015f eri\u015fim sa\u011flasa da, baz\u0131 s\u0131n\u0131rlamalara sahiptir:<\/p>\n<ul>\n<li><strong>Tek IP ile \u00c7oklu Servis Y\u00f6netimi:<\/strong> Her bir LoadBalancer ayr\u0131 bir d\u0131\u015f IP adresi gerektirir. Birden fazla uygulaman\u0131z varsa, \u00e7ok say\u0131da IP adresi y\u00f6netmek karma\u015f\u0131kla\u015f\u0131r ve maliyetli olabilir.<\/li>\n<li><strong>Geli\u015fmi\u015f Y\u00f6nlendirme Eksikli\u011fi:<\/strong> URL yoluna (path-based routing) veya alan ad\u0131na (host-based routing) g\u00f6re trafik y\u00f6nlendirme yetene\u011fi s\u0131n\u0131rl\u0131d\u0131r.<\/li>\n<li><strong>TLS\/SSL Y\u00f6netimi:<\/strong> Sertifika y\u00f6netimi ve HTTPS sonland\u0131rmas\u0131 genellikle manuel veya ek ara\u00e7larla yap\u0131lmal\u0131d\u0131r.<\/li>\n<\/ul>\n<h4>Ingress&#8217;in Sa\u011flad\u0131\u011f\u0131 Avantajlar<\/h4>\n<p>Ingress, yukar\u0131daki s\u0131n\u0131rlamalar\u0131 a\u015farak daha geli\u015fmi\u015f bir \u00e7\u00f6z\u00fcm sunar:<\/p>\n<ul>\n<li><strong>Tek IP, \u00c7oklu Servis:<\/strong> Tek bir d\u0131\u015f IP adresi veya alan ad\u0131 \u00fczerinden birden fazla servisi y\u00f6netmenizi sa\u011flar.<\/li>\n<li><strong>Geli\u015fmi\u015f Y\u00f6nlendirme Kurallar\u0131:<\/strong> Gelen HTTP\/HTTPS isteklerini host ad\u0131na veya URL yoluna g\u00f6re farkl\u0131 servislere y\u00f6nlendirebilir.<\/li>\n<li><strong>TLS\/SSL Sonland\u0131rma:<\/strong> HTTPS trafi\u011fini sonland\u0131rabilir ve sertifika y\u00f6netimini kolayla\u015ft\u0131r\u0131r.<\/li>\n<li><strong>Y\u00fck Dengeleme:<\/strong> Gelen trafi\u011fi otomatik olarak arka u\u00e7 servislerine da\u011f\u0131t\u0131r.<\/li>\n<li><strong>Esneklik:<\/strong> Yeniden yazma (rewrite), kimlik do\u011frulama gibi geli\u015fmi\u015f \u00f6zellikler i\u00e7in annotation&#8217;lar (ek a\u00e7\u0131klamalar) kullanabilir.<\/li>\n<\/ul>\n<h3>Ingress Kayna\u011f\u0131n\u0131n Temel Bile\u015fenleri<\/h3>\n<p>Bir Ingress kayna\u011f\u0131, Kubernetes API&#8217;sinde tan\u0131mlanan bir nesnedir ve gelen trafi\u011fin nas\u0131l y\u00f6nlendirilece\u011fini belirtir. \u0130\u015fte bir Ingress kayna\u011f\u0131n\u0131n temel bile\u015fenleri:<\/p>\n<h4><code>apiVersion<\/code>, <code>kind<\/code>, <code>metadata<\/code><\/h4>\n<p>Her Kubernetes nesnesi gibi, Ingress de <code>apiVersion<\/code> (genellikle <code>networking.k8s.io\/v1<\/code>), <code>kind<\/code> (<code>Ingress<\/code>) ve <code>metadata<\/code> (<code>name<\/code>, <code>namespace<\/code>, <code>annotations<\/code> gibi) alanlar\u0131na sahiptir.<\/p>\n<h4><code>spec.rules<\/code>: Y\u00f6nlendirme Kurallar\u0131<\/h4>\n<p>Bu b\u00f6l\u00fcm, gelen trafi\u011fin hangi host&#8217;a (alan ad\u0131na) ve hangi yola (path) g\u00f6re hangi Kubernetes servisine y\u00f6nlendirilece\u011fini tan\u0131mlar. Her kural bir <code>host<\/code> ve bir veya daha fazla <code>http.paths<\/code> i\u00e7erebilir.<\/p>\n<h4><code>spec.tls<\/code>: TLS Yap\u0131land\u0131rmas\u0131<\/h4>\n<p>Bu b\u00f6l\u00fcm, HTTPS trafi\u011fini sonland\u0131rmak i\u00e7in kullan\u0131lacak TLS sertifikalar\u0131n\u0131 belirtir. Genellikle bir Kubernetes <code>Secret<\/code> nesnesinde saklanan sertifika ve \u00f6zel anahtar \u00e7iftine referans verir.<\/p>\n<h4><code>spec.defaultBackend<\/code>: Varsay\u0131lan Arka U\u00e7<\/h4>\n<p>E\u011fer gelen istekler hi\u00e7bir kurala uymazsa, trafi\u011fin y\u00f6nlendirilece\u011fi varsay\u0131lan bir servisi tan\u0131mlar. Bu, genellikle bir hata sayfas\u0131 veya ana sayfa olabilir.<\/p>\n<h4>Basit Bir Ingress YAML \u00d6rne\u011fi<\/h4>\n<p>A\u015fa\u011f\u0131daki \u00f6rnek, <code>my-app.example.com<\/code> alan ad\u0131na gelen t\u00fcm trafi\u011fi <code>my-service<\/code> adl\u0131 servisin 80 numaral\u0131 portuna y\u00f6nlendiren basit bir Ingress kayna\u011f\u0131n\u0131 g\u00f6sterir:<\/p>\n<pre><code class=\"language-yaml\">\napiVersion: networking.k8s.io\/v1\nkind: Ingress\nmetadata:\n  name: basic-ingress\n  annotations:\n    nginx.ingress.kubernetes.io\/rewrite-target: \/\nspec:\n  rules:\n  - host: my-app.example.com\n    http:\n      paths:\n      - path: \/\n        pathType: Prefix\n        backend:\n          service:\n            name: my-service\n            port:\n              number: 80\n<\/pre>\n<p><\/code><\/p>\n<h3>Ingress Controller'lar: Kalp At\u0131\u015f\u0131<\/h3>\n<p>Ingress kayna\u011f\u0131, sadece bir kural setidir; bu kurallar\u0131 uygulayan ve trafi\u011fi ger\u00e7ekten y\u00f6nlendiren bir bile\u015fene ihtiya\u00e7 duyar\u0131z: <strong>Ingress Controller<\/strong>. Ingress Controller, Kubernetes k\u00fcmesi i\u00e7inde \u00e7al\u0131\u015fan ve Ingress kaynaklar\u0131n\u0131 izleyen bir yaz\u0131l\u0131md\u0131r. Yeni Ingress kaynaklar\u0131 olu\u015fturuldu\u011funda veya mevcutlar g\u00fcncellendi\u011finde, Controller bu de\u011fi\u015fiklikleri alg\u0131lar ve kendi yap\u0131land\u0131rmas\u0131n\u0131 g\u00fcncelleyerek gelen trafi\u011fi do\u011fru servislere y\u00f6nlendirir.<\/p>\n<h4>Ingress Kayna\u011f\u0131 ve Controller \u0130li\u015fkisi<\/h4>\n<p>Ingress Controller olmadan bir Ingress kayna\u011f\u0131n\u0131n hi\u00e7bir etkisi olmaz. Ingress Controller, genellikle bir LoadBalancer Service veya NodePort Service arac\u0131l\u0131\u011f\u0131yla d\u0131\u015f d\u00fcnyaya a\u00e7\u0131l\u0131r ve t\u00fcm gelen trafi\u011fi kar\u015f\u0131lar. Ard\u0131ndan, Ingress kurallar\u0131na g\u00f6re trafi\u011fi k\u00fcme i\u00e7indeki uygun servislere iletir.<\/p>\n<h4>Pop\u00fcler Ingress Controller'lar<\/h4>\n<p>Piyasada bir\u00e7ok farkl\u0131 Ingress Controller bulunmaktad\u0131r, her birinin kendine \u00f6zg\u00fc avantajlar\u0131 ve \u00f6zellikleri vard\u0131r:<\/p>\n<ul>\n<li><strong>Nginx Ingress Controller:<\/strong> En pop\u00fcler ve yayg\u0131n kullan\u0131lan Controller'd\u0131r. Nginx proxy sunucusunu temel al\u0131r ve zengin \u00f6zellik setine sahiptir.<\/li>\n<li><strong>HAProxy Ingress Controller:<\/strong> Y\u00fcksek performansl\u0131 HAProxy y\u00fck dengeleyicisini kullan\u0131r.<\/li>\n<li><strong>Traefik:<\/strong> Dinamik konfig\u00fcrasyon ve otomatik servis ke\u015ffi gibi modern \u00f6zelliklere sahip, bulut yerel bir y\u00fck dengeleyici ve API a\u011f ge\u00e7ididir.<\/li>\n<li><strong>Cloud Provider Ingress Controllers:<\/strong> AWS ALB Ingress Controller, GKE Ingress (Google Cloud Load Balancer), Azure Application Gateway Ingress Controller gibi bulut sa\u011flay\u0131c\u0131lar\u0131na \u00f6zel \u00e7\u00f6z\u00fcmler, bulutun yerel y\u00fck dengeleme hizmetleriyle entegrasyon sa\u011flar.<\/li>\n<\/ul>\n<h4>Bir Controller Kurulumunun \u00d6nemi<\/h4>\n<p>Ingress kullanmaya ba\u015flamadan \u00f6nce, k\u00fcmenize bir Ingress Controller kurman\u0131z \u015fartt\u0131r. Kurulum ad\u0131mlar\u0131 se\u00e7ti\u011finiz Controller'a g\u00f6re de\u011fi\u015fir, ancak genellikle bir dizi YAML manifestini uygulayarak bir Deployment ve Service olu\u015fturmay\u0131 i\u00e7erir.<\/p>\n<h3>Y\u00f6nlendirme Kurallar\u0131: Path-Based ve Host-Based<\/h3>\n<p>Ingress'in en g\u00fc\u00e7l\u00fc \u00f6zelliklerinden biri, gelen trafi\u011fi farkl\u0131 kriterlere g\u00f6re y\u00f6nlendirme yetene\u011fidir. Bu, \u00f6zellikle birden fazla uygulaman\u0131n veya uygulaman\u0131n farkl\u0131 b\u00f6l\u00fcmlerinin tek bir d\u0131\u015f eri\u015fim noktas\u0131 \u00fczerinden sunulmas\u0131 gerekti\u011finde kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<h4>Host-Based Routing: Alan Ad\u0131na G\u00f6re Y\u00f6nlendirme<\/h4>\n<p>Host-based routing, gelen iste\u011fin HTTP <code>Host<\/code> ba\u015fl\u0131\u011f\u0131na bakarak trafi\u011fi farkl\u0131 servislere y\u00f6nlendirmenizi sa\u011flar. Bu, ayn\u0131 Ingress Controller'\u0131 kullanarak birden fazla alan ad\u0131n\u0131 (\u00f6rne\u011fin, <code>app1.example.com<\/code> ve <code>app2.example.com<\/code>) y\u00f6netmek i\u00e7in idealdir.<\/p>\n<pre><code class=\"language-yaml\">\napiVersion: networking.k8s.io\/v1\nkind: Ingress\nmetadata:\n  name: host-based-ingress\nspec:\n  rules:\n  - host: app1.example.com\n    http:\n      paths:\n      - path: \/\n        pathType: Prefix\n        backend:\n          service:\n            name: service-app1\n            port:\n              number: 80\n  - host: app2.example.com\n    http:\n      paths:\n      - path: \/\n        pathType: Prefix\n        backend:\n          service:\n            name: service-app2\n            port:\n              number: 80\n<\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki \u00f6rnekte, <code>app1.example.com<\/code> adresine gelen istekler <code>service-app1<\/code>'e, <code>app2.example.com<\/code> adresine gelen istekler ise <code>service-app2<\/code>'ye y\u00f6nlendirilir.<\/p>\n<h4>Path-Based Routing: URL Yoluna G\u00f6re Y\u00f6nlendirme<\/h4>\n<p>Path-based routing, ayn\u0131 alan ad\u0131 alt\u0131nda farkl\u0131 URL yollar\u0131na (\u00f6rne\u011fin, <code>example.com\/api<\/code> ve <code>example.com\/dashboard<\/code>) gelen trafi\u011fi farkl\u0131 servislere y\u00f6nlendirmenizi sa\u011flar. Bu, tek bir alan ad\u0131 alt\u0131nda birden fazla mikroservisi veya uygulaman\u0131n farkl\u0131 bile\u015fenlerini sunmak i\u00e7in kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<pre><code class=\"language-yaml\">\napiVersion: networking.k8s.io\/v1\nkind: Ingress\nmetadata:\n  name: path-based-ingress\n  annotations:\n    nginx.ingress.kubernetes.io\/rewrite-target: \/$2 # Path'in \/api\/v1\/(.*) k\u0131sm\u0131n\u0131 yakalar ve \/$2 olarak g\u00f6nderir.\nspec:\n  rules:\n  - host: mydomain.com\n    http:\n      paths:\n      - path: \/api\/v1(\/|$)(.*)\n        pathType: Prefix # veya ImplementationSpecific\n        backend:\n          service:\n            name: api-service\n            port:\n              number: 8080\n      - path: \/dashboard(\/|$)(.*)\n        pathType: Prefix\n        backend:\n          service:\n            name: dashboard-service\n            port:\n              number: 80\n<\/pre>\n<p><\/code><\/p>\n<p>Bu \u00f6rnekte, <code>mydomain.com\/api\/v1<\/code> ile ba\u015flayan istekler <code>api-service<\/code>'e, <code>mydomain.com\/dashboard<\/code> ile ba\u015flayan istekler ise <code>dashboard-service<\/code>'e y\u00f6nlendirilir. <code>rewrite-target<\/code> annotation'\u0131, arka u\u00e7 servisine g\u00f6nderilen URL'yi yeniden yazmak i\u00e7in kullan\u0131l\u0131r.<\/p>\n<p><code>pathType<\/code> alan\u0131n\u0131n \u00fc\u00e7 de\u011feri vard\u0131r:<\/p>\n<ul>\n<li><code>Prefix<\/code>: Belirtilen yolla ba\u015flayan t\u00fcm URL'leri e\u015fle\u015ftirir.<\/li>\n<li><code>Exact<\/code>: Belirtilen yolla tam olarak e\u015fle\u015fen URL'leri e\u015fle\u015ftirir.<\/li>\n<li><code>ImplementationSpecific<\/code>: Controller'a \u00f6zg\u00fc bir e\u015fle\u015ftirme davran\u0131\u015f\u0131 anlam\u0131na gelir (genellikle regex destekler).<\/li>\n<\/ul>\n<h3>TLS\/SSL ile G\u00fcvenli \u0130leti\u015fim<\/h3>\n<p>G\u00fcn\u00fcm\u00fczde web uygulamalar\u0131 i\u00e7in HTTPS kullan\u0131m\u0131 bir standart haline gelmi\u015ftir. Ingress, TLS\/SSL sertifikalar\u0131n\u0131 y\u00f6netme ve HTTPS trafi\u011fini sonland\u0131rma konusunda g\u00fc\u00e7l\u00fc yetenekler sunar.<\/p>\n<h4>Neden TLS Kullanmal\u0131y\u0131z?<\/h4>\n<p>TLS (Transport Layer Security), istemci ve sunucu aras\u0131ndaki ileti\u015fimi \u015fifreleyerek veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc ve gizlili\u011fini sa\u011flar. Bu, \u00f6zellikle hassas verilerin (kullan\u0131c\u0131 bilgileri, \u015fifreler vb.) aktar\u0131ld\u0131\u011f\u0131 uygulamalar i\u00e7in kritik \u00f6neme sahiptir.<\/p>\n<h4><code>Secret<\/code> Nesneleri ile Sertifika Y\u00f6netimi<\/h4>\n<p>Kubernetes'te TLS sertifikalar\u0131 ve \u00f6zel anahtarlar, <code>kubernetes.io\/tls<\/code> tipi bir <code>Secret<\/code> nesnesinde saklan\u0131r. Bu Secret, sertifikan\u0131n kendisini (<code>tls.crt<\/code>) ve \u00f6zel anahtar\u0131n\u0131 (<code>tls.key<\/code>) i\u00e7erir.<\/p>\n<pre><code class=\"language-yaml\">\napiVersion: v1\nkind: Secret\nmetadata:\n  name: my-tls-secret\n  namespace: default\ntype: kubernetes.io\/tls\ndata:\n  tls.crt: |\n    # base64 kodlanm\u0131\u015f sertifika i\u00e7eri\u011fi\n    # (\u00f6rne\u011fin, cat cert.pem | base64 -w 0)\n  tls.key: |\n    # base64 kodlanm\u0131\u015f \u00f6zel anahtar i\u00e7eri\u011fi\n    # (\u00f6rne\u011fin, cat key.pem | base64 -w 0)\n<\/pre>\n<p><\/code><\/p>\n<p>Bu Secret olu\u015fturulduktan sonra, Ingress kayna\u011f\u0131nda bu Secret'a referans vererek HTTPS'i etkinle\u015ftirebilirsiniz.<\/p>\n<h4>Ingress \u00dczerinden TLS Yap\u0131land\u0131rmas\u0131<\/h4>\n<p>Bir Ingress kayna\u011f\u0131nda TLS'i etkinle\u015ftirmek i\u00e7in <code>spec.tls<\/code> b\u00f6l\u00fcm\u00fcn\u00fc kullan\u0131r\u0131z. Bu b\u00f6l\u00fcmde, hangi host'lar i\u00e7in TLS'in etkinle\u015ftirilece\u011fini ve hangi Secret'\u0131n kullan\u0131laca\u011f\u0131n\u0131 belirtiriz.<\/p>\n<pre><code class=\"language-yaml\">\napiVersion: networking.k8s.io\/v1\nkind: Ingress\nmetadata:\n  name: tls-ingress\nspec:\n  tls:\n  - hosts:\n    - secure.example.com\n    secretName: my-tls-secret # Yukar\u0131da olu\u015fturdu\u011fumuz Secret'\u0131n ad\u0131\n  rules:\n  - host: secure.example.com\n    http:\n      paths:\n      - path: \/\n        pathType: Prefix\n        backend:\n          service:\n            name: secure-app-service\n            port:\n              number: 443 # Arka u\u00e7 servisi HTTPS kullan\u0131yorsa\n<\/pre>\n<p><\/code><\/p>\n<p>Bu yap\u0131land\u0131rma ile <code>secure.example.com<\/code> adresine gelen HTTPS istekleri, <code>my-tls-secret<\/code> i\u00e7inde tan\u0131ml\u0131 sertifika ile sonland\u0131r\u0131l\u0131r ve ard\u0131ndan <code>secure-app-service<\/code>'e y\u00f6nlendirilir.<\/p>\n<h4>Let's Encrypt ve Cert-Manager ile Otomatik TLS<\/h4>\n<p>Sertifikalar\u0131 manuel olarak olu\u015fturmak ve y\u00f6netmek zahmetli olabilir. <strong>Cert-Manager<\/strong> gibi ara\u00e7lar, Let's Encrypt gibi CA'lardan otomatik olarak TLS sertifikalar\u0131 alman\u0131z\u0131 ve yenilemenizi sa\u011flar. Cert-Manager'\u0131 k\u00fcmenize kurduktan sonra, Ingress kaynaklar\u0131n\u0131zda \u00f6zel annotation'lar kullanarak otomatik sertifika sa\u011flamay\u0131 etkinle\u015ftirebilirsiniz. Bu, \u00f6zellikle dinamik ve s\u00fcrekli de\u011fi\u015fen ortamlarda b\u00fcy\u00fck kolayl\u0131k sa\u011flar.<\/p>\n<pre><code class=\"language-yaml\">\napiVersion: networking.k8s.io\/v1\nkind: Ingress\nmetadata:\n  name: cert-manager-ingress\n  annotations:\n    cert-manager.io\/cluster-issuer: \"letsencrypt-prod\" # Cert-Manager Issuer'\u0131n\u0131z\u0131n ad\u0131\nspec:\n  tls:\n  - hosts:\n    - auto-tls.example.com\n    secretName: auto-tls-secret # Cert-Manager bu secret'\u0131 otomatik olu\u015fturacak\/g\u00fcncelleyecek\n  rules:\n  - host: auto-tls.example.com\n    http:\n      paths:\n      - path: \/\n        pathType: Prefix\n        backend:\n          service:\n            name: my-app-service\n            port:\n              number: 80\n<\/pre>\n<p><\/code><\/p>\n<h3>Ger\u00e7ek D\u00fcnya Ingress \u00d6rnekleri<\/h3>\n<p>Ingress'in esnekli\u011fi, karma\u015f\u0131k senaryolar\u0131 y\u00f6netmek i\u00e7in harika f\u0131rsatlar sunar.<\/p>\n<h4>\u00c7oklu Uygulama Tek Alan Ad\u0131 \u00dczerinden<\/h4>\n<p>Bir e-ticaret sitesi d\u00fc\u015f\u00fcn\u00fcn. Ana sayfa, \u00fcr\u00fcnler ve kullan\u0131c\u0131 paneli farkl\u0131 servisler taraf\u0131ndan sunuluyor olabilir:<\/p>\n<ul>\n<li><code>shop.example.com\/<\/code> -> <code>frontend-service<\/code><\/li>\n<li><code>shop.example.com\/api\/<\/code> -> <code>api-service<\/code><\/li>\n<li><code>shop.example.com\/admin\/<\/code> -> <code>admin-service<\/code><\/li>\n<\/ul>\n<pre><code class=\"language-yaml\">\napiVersion: networking.k8s.io\/v1\nkind: Ingress\nmetadata:\n  name: e-commerce-ingress\n  annotations:\n    nginx.ingress.kubernetes.io\/rewrite-target: \/$2\nspec:\n  rules:\n  - host: shop.example.com\n    http:\n      paths:\n      - path: \/api(\/|$)(.*)\n        pathType: Prefix\n        backend:\n          service:\n            name: api-service\n            port:\n              number: 80\n      - path: \/admin(\/|$)(.*)\n        pathType: Prefix\n        backend:\n          service:\n            name: admin-service\n            port:\n              number: 80\n      - path: \/\n        pathType: Prefix\n        backend:\n          service:\n            name: frontend-service\n            port:\n              number: 80\n<\/pre>\n<p><\/code><\/p>\n<h4>Farkl\u0131 Ortamlar \u0130\u00e7in Ayr\u0131 Ingress'ler<\/h4>\n<p>Geli\u015ftirme, test ve \u00fcretim ortamlar\u0131n\u0131z i\u00e7in farkl\u0131 alan adlar\u0131 kullanmak isteyebilirsiniz:<\/p>\n<ul>\n<li><code>dev.example.com<\/code> -> Geli\u015ftirme ortam\u0131<\/li>\n<li><code>staging.example.com<\/code> -> Test ortam\u0131<\/li>\n<li><code>prod.example.com<\/code> -> \u00dcretim ortam\u0131<\/li>\n<\/ul>\n<p>Her ortam i\u00e7in ayr\u0131 bir Ingress kayna\u011f\u0131 veya ayn\u0131 Ingress kayna\u011f\u0131 i\u00e7inde farkl\u0131 host kurallar\u0131 tan\u0131mlayabilirsiniz. Genellikle, her ortam\u0131n kendi namespace'i ve kendi Ingress kayna\u011f\u0131 olmas\u0131 daha iyi bir izolasyon sa\u011flar.<\/p>\n<h4>Redirect'ler ve Rewrite'lar (Annotation'lar ile)<\/h4>\n<p>Ingress Controller'lar, annotation'lar arac\u0131l\u0131\u011f\u0131yla ek \u00f6zellikler sunar. \u00d6rne\u011fin, Nginx Ingress Controller ile HTTP'den HTTPS'e y\u00f6nlendirme veya URL yeniden yazma i\u015flemleri yapabilirsiniz:<\/p>\n<ul>\n<li><strong>HTTP'den HTTPS'e Y\u00f6nlendirme:<\/strong>\n<pre><code class=\"language-yaml\">\n        apiVersion: networking.k8s.io\/v1\n        kind: Ingress\n        metadata:\n          name: redirect-ingress\n          annotations:\n            nginx.ingress.kubernetes.io\/force-ssl-redirect: \"true\"\n            cert-manager.io\/cluster-issuer: \"letsencrypt-prod\"\n        spec:\n          tls:\n          - hosts:\n            - myapp.example.com\n            secretName: myapp-tls-secret\n          rules:\n          - host: myapp.example.com\n            http:\n              paths:\n              - path: \/\n                pathType: Prefix\n                backend:\n                  service:\n                    name: myapp-service\n                    port:\n                      number: 80\n        <\/pre>\n<p><\/code>\n    <\/li>\n<li><strong>URL Yeniden Yazma (Rewrite):<\/strong> Daha \u00f6nce path-based routing \u00f6rne\u011finde g\u00f6sterildi\u011fi gibi, <code>nginx.ingress.kubernetes.io\/rewrite-target<\/code> annotation'\u0131 ile gelen URL yolunu arka u\u00e7 servisine g\u00f6ndermeden \u00f6nce de\u011fi\u015ftirebilirsiniz.<\/li>\n<\/ul>\n<h3>Ingress S\u0131n\u0131rlamalar\u0131 ve Alternatifleri<\/h3>\n<p>Ingress, bir\u00e7ok senaryo i\u00e7in harika bir \u00e7\u00f6z\u00fcm olsa da, her \u015feyi kapsamaz. Baz\u0131 durumlarda daha geli\u015fmi\u015f \u00e7\u00f6z\u00fcmlere ihtiya\u00e7 duyulabilir.<\/p>\n<h4>Ingress'in Sa\u011flayamad\u0131\u011f\u0131 Geli\u015fmi\u015f \u00d6zellikler<\/h4>\n<p>Ingress, temel HTTP\/HTTPS y\u00f6nlendirme ve TLS sonland\u0131rma i\u00e7in tasarlanm\u0131\u015ft\u0131r. Ancak a\u015fa\u011f\u0131daki gibi \u00f6zellikler genellikle do\u011frudan Ingress spesifikasyonunda yer almaz ve Ingress Controller'\u0131n annotation'lar\u0131 veya ek ara\u00e7lar gerektirir:<\/p>\n<ul>\n<li>Geli\u015fmi\u015f kimlik do\u011frulama ve yetkilendirme (OAuth2, JWT do\u011frulamas\u0131)<\/li>\n<li>Rate limiting (oran s\u0131n\u0131rlama)<\/li>\n<li>Web Uygulama G\u00fcvenlik Duvar\u0131 (WAF) \u00f6zellikleri<\/li>\n<li>Geli\u015fmi\u015f trafik y\u00f6netimi (A\/B testi, canary da\u011f\u0131t\u0131mlar\u0131)<\/li>\n<li>Servisler aras\u0131 ileti\u015fim i\u00e7in \u00f6zellikler (Service Mesh)<\/li>\n<\/ul>\n<h4>API Gateway'ler ve Service Mesh'ler<\/h4>\n<p>Daha geli\u015fmi\u015f trafik y\u00f6netimi, g\u00fcvenlik ve g\u00f6zlemlenebilirlik gereksinimleriniz varsa, <strong>API Gateway<\/strong>'ler veya <strong>Service Mesh<\/strong>'ler gibi \u00e7\u00f6z\u00fcmleri d\u00fc\u015f\u00fcnebilirsiniz.<\/p>\n<ul>\n<li><strong>API Gateway:<\/strong> Uygulama katman\u0131nda zengin \u00f6zellikler sunan bir ters proxy'dir. Kimlik do\u011frulama, oran s\u0131n\u0131rlama, \u00f6nbellekleme, d\u00f6n\u00fc\u015f\u00fcm ve izleme gibi yeteneklere sahiptir. Kong, Apigee, Ambassador gibi \u00fcr\u00fcnler bu kategoriye girer. Bir API Gateway, Ingress Controller'\u0131n \u00f6n\u00fcne veya yerine kullan\u0131labilir.<\/li>\n<li><strong>Service Mesh:<\/strong> Mikroservis mimarilerinde servisler aras\u0131 ileti\u015fimi y\u00f6netmek i\u00e7in tasarlanm\u0131\u015f bir altyap\u0131 katman\u0131d\u0131r. Trafik y\u00f6nlendirme, hata tolerans\u0131, g\u00fcvenlik ve g\u00f6zlemlenebilirlik gibi konularda kapsaml\u0131 \u00e7\u00f6z\u00fcmler sunar. Istio, Linkerd, Consul Connect pop\u00fcler Service Mesh \u00e7\u00f6z\u00fcmleridir. Service Mesh, genellikle Ingress Controller ile birlikte \u00e7al\u0131\u015f\u0131r; Ingress d\u0131\u015f trafi\u011fi k\u00fcme i\u00e7ine getirirken, Service Mesh k\u00fcme i\u00e7i servisler aras\u0131 trafi\u011fi y\u00f6netir.<\/li>\n<\/ul>\n<h3>Sonu\u00e7<\/h3>\n<p>Kubernetes Ingress, uygulamalar\u0131n\u0131z\u0131 d\u0131\u015f d\u00fcnyaya g\u00fcvenli ve esnek bir \u015fekilde a\u00e7mak i\u00e7in g\u00fc\u00e7l\u00fc ve maliyet etkin bir \u00e7\u00f6z\u00fcmd\u00fcr. Host-based ve path-based y\u00f6nlendirme kurallar\u0131 sayesinde tek bir eri\u015fim noktas\u0131 \u00fczerinden birden fazla servisi y\u00f6netebilir, TLS entegrasyonu ile g\u00fcvenli ileti\u015fimi kolayca sa\u011flayabilirsiniz. Do\u011fru Ingress Controller se\u00e7imi ve Cert-Manager gibi ara\u00e7larla entegrasyon, Ingress y\u00f6netimini daha da basitle\u015ftirir. Daha karma\u015f\u0131k senaryolar i\u00e7in API Gateway'ler veya Service Mesh'ler gibi alternatifleri de\u011ferlendirmek gerekse de, \u00e7o\u011fu web uygulamas\u0131 i\u00e7in Ingress, Kubernetes ekosisteminin vazge\u00e7ilmez bir par\u00e7as\u0131d\u0131r.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<h4>Ingress Controller'\u0131 nas\u0131l kurar\u0131m?<\/h4>\n<p>Ingress Controller kurulumu, se\u00e7ti\u011finiz Controller'a g\u00f6re de\u011fi\u015fir. Genellikle, Controller'\u0131n resmi belgelerinde belirtilen YAML manifestlerini <code>kubectl apply -f <manifest.yaml><\/code> komutuyla uygulayarak bir Deployment ve bir Service (genellikle LoadBalancer tipi) olu\u015fturursunuz. \u00d6rne\u011fin, Nginx Ingress Controller i\u00e7in Helm chart'lar\u0131 veya direkt manifestler mevcuttur.<\/p>\n<h4>Ingress ile LoadBalancer aras\u0131ndaki fark nedir?<\/h4>\n<p><code>LoadBalancer<\/code> tipi bir Kubernetes Service, bulut sa\u011flay\u0131c\u0131n\u0131zdan do\u011frudan bir d\u0131\u015f y\u00fck dengeleyici (\u00f6rn. AWS ELB, GCP Load Balancer) temin eder ve trafi\u011fi do\u011frudan bir Kubernetes Service'e y\u00f6nlendirir. Her LoadBalancer Service'i genellikle kendi d\u0131\u015f IP adresine sahiptir ve geli\u015fmi\u015f HTTP y\u00f6nlendirme yetenekleri s\u0131n\u0131rl\u0131d\u0131r. Ingress ise, tek bir LoadBalancer (genellikle Ingress Controller'\u0131n \u00f6n\u00fcnde) kullanarak birden fazla servise geli\u015fmi\u015f HTTP\/HTTPS y\u00f6nlendirme kurallar\u0131 (host-based, path-based) sa\u011flar ve TLS y\u00f6netimini kolayla\u015ft\u0131r\u0131r.<\/p>\n<h4>Tek bir Ingress kayna\u011f\u0131 birden fazla alan ad\u0131n\u0131 y\u00f6netebilir mi?<\/h4>\n<p>Evet, kesinlikle. Bir Ingress kayna\u011f\u0131, <code>spec.rules<\/code> alt\u0131nda birden fazla <code>host<\/code> tan\u0131m\u0131 i\u00e7erebilir. Her <code>host<\/code> i\u00e7in ayr\u0131 y\u00f6nlendirme kurallar\u0131 ve hatta ayr\u0131 TLS sertifikalar\u0131 (farkl\u0131 <code>secretName<\/code>'ler ile) belirleyebilirsiniz.<\/p>\n<h4>Ingress'te performans sorunlar\u0131 ya\u015farsam ne yapmal\u0131y\u0131m?<\/h4>\n<p>Performans sorunlar\u0131 genellikle Ingress Controller'\u0131n kaynak k\u0131s\u0131tlamalar\u0131ndan (CPU, Bellek) veya yanl\u0131\u015f yap\u0131land\u0131rmadan kaynaklan\u0131r. \u015eunlar\u0131 kontrol edebilirsiniz:<\/p>\n<ul>\n<li>Ingress Controller Pod'lar\u0131n\u0131n kaynak limitlerini art\u0131r\u0131n.<\/li>\n<li>Controller loglar\u0131n\u0131 inceleyerek hatalar\u0131 veya darbo\u011fazlar\u0131 tespit edin.<\/li>\n<li>Ingress Controller'\u0131n \u00f6l\u00e7eklenebilirli\u011fini art\u0131rmak i\u00e7in birden fazla replika \u00e7al\u0131\u015ft\u0131r\u0131n.<\/li>\n<li>\u00d6zel Ingress Controller annotation'lar\u0131n\u0131 kullanarak performans\u0131 optimize edin (\u00f6rn. Nginx i\u00e7in buffer boyutlar\u0131, keepalive ayarlar\u0131).<\/li>\n<\/ul>\n<h4>Ingress'e kimlik do\u011frulama ekleyebilir miyim?<\/h4>\n<p>Ingress spesifikasyonu do\u011frudan kimlik do\u011frulama sa\u011flamaz. Ancak \u00e7o\u011fu Ingress Controller, annotation'lar arac\u0131l\u0131\u011f\u0131yla temel kimlik do\u011frulama (Basic Auth) veya daha geli\u015fmi\u015f y\u00f6ntemler i\u00e7in (OAuth2 proxy entegrasyonu gibi) destek sunar. \u00d6rne\u011fin, Nginx Ingress Controller, <code>nginx.ingress.kubernetes.io\/auth-type<\/code> ve <code>nginx.ingress.kubernetes.io\/auth-secret<\/code> gibi annotation'lar ile Basic Auth yap\u0131land\u0131rmas\u0131na izin verir. Daha karma\u015f\u0131k senaryolar i\u00e7in bir API Gateway kullanmak daha uygun olabilir.<\/p>\n","protected":false},"excerpt":{"rendered":"Kubernetes, modern uygulama da\u011f\u0131t\u0131m\u0131 ve y\u00f6netimi i\u00e7in vazge\u00e7ilmez bir platform haline gelmi\u015ftir. Ancak, k\u00fcme i\u00e7indeki servislerinizi d\u0131\u015f d\u00fcnyaya&#8230;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1491],"tags":[],"class_list":{"0":"post-37013","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-kubernetes","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Kubernetes Ingress A\u00e7\u0131klamas\u0131: Y\u00f6nlendirme, TLS ve Ger\u00e7ek D\u00fcnya \u00d6rnekleri - 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\/kubernetes-ingress-aciklamasi-yonlendirme-tls-ve-gercek-dunya-ornekleri\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kubernetes Ingress A\u00e7\u0131klamas\u0131: Y\u00f6nlendirme, TLS ve Ger\u00e7ek D\u00fcnya \u00d6rnekleri\" \/>\n<meta property=\"og:description\" content=\"Kubernetes, modern uygulama da\u011f\u0131t\u0131m\u0131 ve y\u00f6netimi i\u00e7in vazge\u00e7ilmez bir platform haline gelmi\u015ftir. Ancak, k\u00fcme i\u00e7indeki servislerinizi d\u0131\u015f d\u00fcnyaya...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/kubernetes-ingress-aciklamasi-yonlendirme-tls-ve-gercek-dunya-ornekleri\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-26T04:00:42+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=\"15 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kubernetes-ingress-aciklamasi-yonlendirme-tls-ve-gercek-dunya-ornekleri\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kubernetes-ingress-aciklamasi-yonlendirme-tls-ve-gercek-dunya-ornekleri\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Kubernetes Ingress A\u00e7\u0131klamas\u0131: Y\u00f6nlendirme, TLS ve Ger\u00e7ek D\u00fcnya \u00d6rnekleri\",\"datePublished\":\"2025-12-26T04:00:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kubernetes-ingress-aciklamasi-yonlendirme-tls-ve-gercek-dunya-ornekleri\/\"},\"wordCount\":2484,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Kubernetes\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/kubernetes-ingress-aciklamasi-yonlendirme-tls-ve-gercek-dunya-ornekleri\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kubernetes-ingress-aciklamasi-yonlendirme-tls-ve-gercek-dunya-ornekleri\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/kubernetes-ingress-aciklamasi-yonlendirme-tls-ve-gercek-dunya-ornekleri\/\",\"name\":\"Kubernetes Ingress A\u00e7\u0131klamas\u0131: Y\u00f6nlendirme, TLS ve Ger\u00e7ek D\u00fcnya \u00d6rnekleri - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-12-26T04:00:42+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kubernetes-ingress-aciklamasi-yonlendirme-tls-ve-gercek-dunya-ornekleri\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/kubernetes-ingress-aciklamasi-yonlendirme-tls-ve-gercek-dunya-ornekleri\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kubernetes-ingress-aciklamasi-yonlendirme-tls-ve-gercek-dunya-ornekleri\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kubernetes Ingress A\u00e7\u0131klamas\u0131: Y\u00f6nlendirme, TLS ve Ger\u00e7ek D\u00fcnya \u00d6rnekleri\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Kubernetes Ingress A\u00e7\u0131klamas\u0131: Y\u00f6nlendirme, TLS ve Ger\u00e7ek D\u00fcnya \u00d6rnekleri - 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\/kubernetes-ingress-aciklamasi-yonlendirme-tls-ve-gercek-dunya-ornekleri\/","og_locale":"tr_TR","og_type":"article","og_title":"Kubernetes Ingress A\u00e7\u0131klamas\u0131: Y\u00f6nlendirme, TLS ve Ger\u00e7ek D\u00fcnya \u00d6rnekleri","og_description":"Kubernetes, modern uygulama da\u011f\u0131t\u0131m\u0131 ve y\u00f6netimi i\u00e7in vazge\u00e7ilmez bir platform haline gelmi\u015ftir. Ancak, k\u00fcme i\u00e7indeki servislerinizi d\u0131\u015f d\u00fcnyaya...","og_url":"https:\/\/fatihsoysal.com\/blog\/kubernetes-ingress-aciklamasi-yonlendirme-tls-ve-gercek-dunya-ornekleri\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-12-26T04:00:42+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"15 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/kubernetes-ingress-aciklamasi-yonlendirme-tls-ve-gercek-dunya-ornekleri\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/kubernetes-ingress-aciklamasi-yonlendirme-tls-ve-gercek-dunya-ornekleri\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Kubernetes Ingress A\u00e7\u0131klamas\u0131: Y\u00f6nlendirme, TLS ve Ger\u00e7ek D\u00fcnya \u00d6rnekleri","datePublished":"2025-12-26T04:00:42+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/kubernetes-ingress-aciklamasi-yonlendirme-tls-ve-gercek-dunya-ornekleri\/"},"wordCount":2484,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Kubernetes"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/kubernetes-ingress-aciklamasi-yonlendirme-tls-ve-gercek-dunya-ornekleri\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/kubernetes-ingress-aciklamasi-yonlendirme-tls-ve-gercek-dunya-ornekleri\/","url":"https:\/\/fatihsoysal.com\/blog\/kubernetes-ingress-aciklamasi-yonlendirme-tls-ve-gercek-dunya-ornekleri\/","name":"Kubernetes Ingress A\u00e7\u0131klamas\u0131: Y\u00f6nlendirme, TLS ve Ger\u00e7ek D\u00fcnya \u00d6rnekleri - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-12-26T04:00:42+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/kubernetes-ingress-aciklamasi-yonlendirme-tls-ve-gercek-dunya-ornekleri\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/kubernetes-ingress-aciklamasi-yonlendirme-tls-ve-gercek-dunya-ornekleri\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/kubernetes-ingress-aciklamasi-yonlendirme-tls-ve-gercek-dunya-ornekleri\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Kubernetes Ingress A\u00e7\u0131klamas\u0131: Y\u00f6nlendirme, TLS ve Ger\u00e7ek D\u00fcnya \u00d6rnekleri"}]},{"@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\/37013","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=37013"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37013\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=37013"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=37013"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=37013"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}