{"id":35443,"date":"2025-11-29T20:40:47","date_gmt":"2025-11-29T17:40:47","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=35443"},"modified":"2025-11-29T20:40:47","modified_gmt":"2025-11-29T17:40:47","slug":"kuberneteste-cert-manager-traefik-ve-lets-encrypt-ile-sitenizi-guvenli-hale-getirme","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/kuberneteste-cert-manager-traefik-ve-lets-encrypt-ile-sitenizi-guvenli-hale-getirme\/","title":{"rendered":"Kubernetes&#8217;te cert-manager, Traefik ve Let\u2019s Encrypt ile Sitenizi G\u00fcvenli Hale Getirme"},"content":{"rendered":"<p><body><\/p>\n<h2>Kubernetes&#8217;te cert-manager, Traefik ve Let\u2019s Encrypt ile Sitenizi G\u00fcvenli Hale Getirme<\/h2>\n<h3>Giri\u015f<\/h3>\n<p>G\u00fcn\u00fcm\u00fczde internet sitelerinin g\u00fcvenli\u011fi, kullan\u0131c\u0131 deneyimi ve veri gizlili\u011fi a\u00e7\u0131s\u0131ndan hayati bir \u00f6neme sahiptir. HTTPS (Hypertext Transfer Protocol Secure) kullan\u0131m\u0131, taray\u0131c\u0131lar ve sunucular aras\u0131ndaki ileti\u015fimi \u015fifreleyerek verilerin yetkisiz eri\u015fime kar\u015f\u0131 korunmas\u0131n\u0131 sa\u011flar. Google gibi arama motorlar\u0131 da HTTPS kullanan siteleri tercih etmekte ve hatta baz\u0131 yeni web teknolojileri i\u00e7in HTTPS&#8217;i zorunlu k\u0131lmaktad\u0131r.<\/p>\n<p>Kubernetes, konteynerize edilmi\u015f uygulamalar\u0131 da\u011f\u0131tmak, \u00f6l\u00e7eklendirmek ve y\u00f6netmek i\u00e7in g\u00fc\u00e7l\u00fc bir platform sunarken, bu uygulamalar\u0131n g\u00fcvenli bir \u015fekilde internete a\u00e7\u0131lmas\u0131 ayr\u0131 bir uzmanl\u0131k gerektirir. Bu makalede, Kubernetes ortam\u0131nda Traefik bir Ingress Controller olarak, cert-manager otomatik sertifika y\u00f6netimi i\u00e7in ve Let&#8217;s Encrypt \u00fccretsiz sertifika sa\u011flay\u0131c\u0131s\u0131 olarak kullan\u0131larak sitelerin nas\u0131l g\u00fcvenli hale getirilece\u011fini ad\u0131m ad\u0131m inceleyece\u011fiz. Bu \u00fc\u00e7l\u00fc kombinasyon, sertifika ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc tamamen otomatikle\u015ftirerek modern, g\u00fcvenli ve bak\u0131m\u0131 kolay bir altyap\u0131 olu\u015fturman\u0131za olanak tan\u0131r.<\/p>\n<h3>Neden HTTPS?<\/h3>\n<p>HTTPS, sadece bir &#8220;g\u00fcvenlik \u00f6zelli\u011fi&#8221; olman\u0131n \u00f6tesinde, modern web&#8217;in temel bir gereksinimidir. \u0130\u015fte neden HTTPS kullanman\u0131z gerekti\u011fine dair ba\u015fl\u0131ca nedenler:<\/p>\n<p>*   <strong>Veri B\u00fct\u00fcnl\u00fc\u011f\u00fc ve Gizlili\u011fi:<\/strong> HTTPS, kullan\u0131c\u0131lar\u0131n taray\u0131c\u0131lar\u0131 ile sunucunuz aras\u0131ndaki t\u00fcm ileti\u015fimi \u015fifreler. Bu, hassas verilerin (kullan\u0131c\u0131 adlar\u0131, \u015fifreler, kredi kart\u0131 bilgileri vb.) \u00fc\u00e7\u00fcnc\u00fc taraflarca ele ge\u00e7irilmesini veya de\u011fi\u015ftirilmesini engeller.<br \/>\n*   <strong>Kullan\u0131c\u0131 G\u00fcveni:<\/strong> Taray\u0131c\u0131lar, HTTPS ile korunan siteleri ye\u015fil bir kilit simgesiyle i\u015faretlerken, HTTPS olmayan siteleri &#8220;G\u00fcvenli De\u011fil&#8221; olarak etiketler. Bu, kullan\u0131c\u0131lar\u0131n sitenize olan g\u00fcvenini do\u011frudan etkiler. G\u00fcvenli olmayan siteler, ziyaret\u00e7ilerin siteyi terk etmesine neden olabilir.<br \/>\n*   <strong>SEO Faydalar\u0131:<\/strong> Google, 2014&#8217;ten beri HTTPS&#8217;i bir s\u0131ralama fakt\u00f6r\u00fc olarak kullanmaktad\u0131r. HTTPS kullanan siteler, arama motoru sonu\u00e7lar\u0131nda daha \u00fcst s\u0131ralarda yer alma potansiyeline sahiptir.<br \/>\n*   <strong>Yeni Web Teknolojileri \u0130\u00e7in Gereklilik:<\/strong> Service Workers, Geolocation API, Web Push Notifications gibi bir\u00e7ok modern web \u00f6zelli\u011fi ve API, sadece g\u00fcvenli (HTTPS) ba\u011flamlarda \u00e7al\u0131\u015f\u0131r.<br \/>\n*   <strong>Yasal ve D\u00fczenleyici Uyum:<\/strong> \u00d6zellikle e-ticaret siteleri ve ki\u015fisel veri i\u015fleyen platformlar i\u00e7in GDPR, KVKK gibi veri koruma d\u00fczenlemeleri ve PCI DSS gibi end\u00fcstri standartlar\u0131, hassas verilerin \u015fifrelenmesini zorunlu k\u0131lar.<\/p>\n<h3>Kullan\u0131lacak Bile\u015fenlere Genel Bak\u0131\u015f<\/h3>\n<p>Sitemizi Kubernetes&#8217;te g\u00fcvenli hale getirmek i\u00e7in kullanaca\u011f\u0131m\u0131z temel bile\u015fenleri tan\u0131yal\u0131m:<\/p>\n<h4>Kubernetes<\/h4>\n<p>Kubernetes, konteynerize edilmi\u015f i\u015f y\u00fcklerini ve hizmetleri y\u00f6netmek i\u00e7in a\u00e7\u0131k kaynakl\u0131 bir platformdur. Uygulamalar\u0131n da\u011f\u0131t\u0131m\u0131n\u0131, \u00f6l\u00e7eklendirilmesini, g\u00fcncelle\u015ftirilmesini ve izlenmesini otomatikle\u015ftirir. Bu makalede, uygulamalar\u0131m\u0131z\u0131 ve ilgili hizmetleri Kubernetes cluster&#8217;\u0131m\u0131zda \u00e7al\u0131\u015ft\u0131raca\u011f\u0131z.<\/p>\n<h4>Traefik<\/h4>\n<p>Traefik, modern bulut tabanl\u0131 uygulamalar i\u00e7in tasarlanm\u0131\u015f bir Edge Router ve Ingress Controller&#8217;d\u0131r. Kubernetes ile m\u00fckemmel bir entegrasyona sahiptir ve dinamik olarak yap\u0131land\u0131r\u0131labilir. Temel \u00f6zellikleri \u015funlard\u0131r:<\/p>\n<p>*   <strong>Dinamik Konfig\u00fcrasyon:<\/strong> Uygulaman\u0131z\u0131n servislerini otomatik olarak ke\u015ffeder ve y\u00f6nlendirme kurallar\u0131n\u0131 an\u0131nda g\u00fcnceller. Kubernetes servisleri, Ingress kaynaklar\u0131 ve Traefik&#8217;in kendi CRD&#8217;leri (Custom Resource Definitions) ile entegre \u00e7al\u0131\u015f\u0131r.<br \/>\n*   <strong>Otomatik HTTPS:<\/strong> Let&#8217;s Encrypt gibi sertifika sa\u011flay\u0131c\u0131lar\u0131 ile do\u011frudan entegre olarak otomatik olarak SSL\/TLS sertifikalar\u0131 alabilir ve yenileyebilir. Ancak biz bu makalede cert-manager ile daha esnek bir y\u00f6netim sa\u011flayaca\u011f\u0131z.<br \/>\n*   <strong>Y\u00fck Dengeleme:<\/strong> Gelen trafi\u011fi birden fazla uygulama \u00f6rne\u011fine da\u011f\u0131tabilir.<br \/>\n*   <strong>Middleware Deste\u011fi:<\/strong> HTTP ba\u015fl\u0131klar\u0131n\u0131 de\u011fi\u015ftirmek, kimlik do\u011frulama eklemek, s\u0131k\u0131\u015ft\u0131rma yapmak gibi ek i\u015flevler i\u00e7in middleware&#8217;ler kullanabilir.<br \/>\n*   <strong>Kolay Kurulum ve Y\u00f6netim:<\/strong> Hafif yap\u0131s\u0131 ve basit konfig\u00fcrasyonu sayesinde h\u0131zla devreye al\u0131nabilir.<\/p>\n<p>Traefik, Kubernetes Ingress Controller olarak g\u00f6rev yaparak d\u0131\u015far\u0131dan gelen trafi\u011fi cluster i\u00e7indeki servislere y\u00f6nlendirir.<\/p>\n<h4>cert-manager<\/h4>\n<p>cert-manager, Kubernetes cluster&#8217;lar\u0131nda sertifikalar\u0131 otomatik olarak sa\u011flamak ve y\u00f6netmek i\u00e7in tasarlanm\u0131\u015f g\u00fc\u00e7l\u00fc bir eklentidir. Sertifika ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc (olu\u015fturma, yenileme, iptal etme) otomatize eder ve \u00e7e\u015fitli sertifika yetkilileri (CA&#8217;lar) ile entegre olabilir.<\/p>\n<p>*   <strong>Otomatik Sertifika Y\u00f6netimi:<\/strong> Let&#8217;s Encrypt, HashiCorp Vault, Venafi gibi CA&#8217;lardan sertifika alabilir veya kendi PKI&#8217;n\u0131z\u0131 kullanarak sertifika olu\u015fturabilir.<br \/>\n*   <strong>Kubernetes-Native:<\/strong> Kubernetes API&#8217;sini ve CRD&#8217;lerini kullanarak \u00e7al\u0131\u015f\u0131r. <code>Certificate<\/code> ve <code>Issuer<\/code> veya <code>ClusterIssuer<\/code> gibi kaynaklar tan\u0131mlars\u0131n\u0131z.<br \/>\n*   <strong>Yenileme Otomasyonu:<\/strong> Sertifikalar\u0131n s\u00fcresi dolmadan \u00f6nce otomatik olarak yenilenmesini sa\u011flar.<br \/>\n*   <strong>Secret Y\u00f6netimi:<\/strong> Al\u0131nan sertifikalar\u0131 Kubernetes Secret&#8217;lar\u0131 olarak depolar, b\u00f6ylece Ingress Controller&#8217;lar veya di\u011fer uygulamalar bunlar\u0131 kolayca kullanabilir.<\/p>\n<h4>Let&#8217;s Encrypt<\/h4>\n<p>Let&#8217;s Encrypt, \u0130nternet G\u00fcvenlik Ara\u015ft\u0131rma Grubu (ISRG) taraf\u0131ndan i\u015fletilen, \u00fccretsiz, otomatik ve a\u00e7\u0131k bir Sertifika Yetkilisidir (CA). Milyonlarca web sitesi taraf\u0131ndan kullan\u0131lmaktad\u0131r ve HTTPS&#8217;i herkes i\u00e7in eri\u015filebilir hale getirme misyonuyla yola \u00e7\u0131km\u0131\u015ft\u0131r.<\/p>\n<p>*   <strong>\u00dccretsiz:<\/strong> Herkesin \u00fccretsiz olarak g\u00fcvenilir SSL\/TLS sertifikalar\u0131 almas\u0131n\u0131 sa\u011flar.<br \/>\n*   <strong>Otomatik:<\/strong> ACME (Automated Certificate Management Environment) protokol\u00fcn\u00fc kullanarak sertifika al\u0131m\u0131n\u0131 ve yenilemesini otomatize eder.<br \/>\n*   <strong>G\u00fcvenilir:<\/strong> T\u00fcm b\u00fcy\u00fck taray\u0131c\u0131lar taraf\u0131ndan g\u00fcvenilen k\u00f6k sertifikalara sahiptir.<\/p>\n<p>Let&#8217;s Encrypt, bir alan ad\u0131n\u0131n kontrol\u00fcn\u00fc do\u011frulamak i\u00e7in \u00e7e\u015fitli &#8220;challenge&#8221; y\u00f6ntemleri kullan\u0131r. En yayg\u0131n olanlar\u0131 HTTP-01 ve DNS-01&#8217;dir. Biz bu makalede Traefik&#8217;in HTTP-01 challenge&#8217;\u0131n\u0131 kullanarak cert-manager arac\u0131l\u0131\u011f\u0131yla sertifika alaca\u011f\u0131z.<\/p>\n<h3>\u00d6n Gereksinimler<\/h3>\n<p>Bu rehberi takip etmek i\u00e7in a\u015fa\u011f\u0131daki \u00f6n gereksinimlere sahip olman\u0131z gerekmektedir:<\/p>\n<p>1.  <strong>\u00c7al\u0131\u015fan Bir Kubernetes Cluster&#8217;\u0131:<\/strong> Minikube, Kind gibi yerel bir cluster veya GKE, AKS, EKS gibi bulut tabanl\u0131 bir cluster olabilir.<br \/>\n2.  <strong><code>kubectl<\/code> Arac\u0131:<\/strong> Cluster&#8217;\u0131n\u0131zla etkile\u015fim kurmak i\u00e7in <code>kubectl<\/code>&#8216;in kurulu ve yap\u0131land\u0131r\u0131lm\u0131\u015f olmas\u0131.<br \/>\n3.  <strong>Bir Alan Ad\u0131 (Domain Name):<\/strong> Uygulaman\u0131za eri\u015fmek i\u00e7in kullanaca\u011f\u0131n\u0131z, kay\u0131tl\u0131 bir alan ad\u0131na ihtiyac\u0131n\u0131z var. \u00d6rne\u011fin, <code>example.com<\/code>.<br \/>\n4.  <strong>Alan Ad\u0131 Y\u00f6nlendirmesi:<\/strong> Alan ad\u0131n\u0131z\u0131n veya bir alt alan ad\u0131n\u0131n (\u00f6rne\u011fin, <code>www.example.com<\/code> veya <code>app.example.com<\/code>) Kubernetes cluster&#8217;\u0131n\u0131z\u0131n Ingress Controller&#8217;\u0131na (Traefik) i\u015faret etmesi gerekmektedir. Bu genellikle alan ad\u0131n\u0131z\u0131n DNS kay\u0131tlar\u0131nda bir A kayd\u0131 (IP adresi i\u00e7in) veya CNAME kayd\u0131 (ba\u015fka bir host ad\u0131na y\u00f6nlendirme i\u00e7in) olu\u015fturularak yap\u0131l\u0131r. Bulut sa\u011flay\u0131c\u0131lar\u0131nda Traefik LoadBalancer servisi otomatik olarak bir d\u0131\u015f IP veya host ad\u0131 atayacakt\u0131r, bu de\u011feri DNS kay\u0131tlar\u0131n\u0131za eklemeniz gerekecektir.<\/p>\n<h3>Ad\u0131m Ad\u0131m Uygulama<\/h3>\n<p>\u015eimdi, bile\u015fenlerimizi Kubernetes cluster&#8217;\u0131m\u0131za kurup yap\u0131land\u0131rmaya ge\u00e7elim.<\/p>\n<h4>1. Traefik Kurulumu<\/h4>\n<p>Traefik&#8217;i Kubernetes&#8217;e da\u011f\u0131tmak i\u00e7in Helm kullanmak en kolay yoldur.<\/p>\n<p>\u00d6ncelikle Traefik Helm deposunu ekleyin ve g\u00fcncelleyin:<\/p>\n<pre><code class=\"language-bash\">helm repo add traefik https:\/\/traefik.github.io\/charts\nhelm repo update<\/code><\/pre>\n<p>\u015eimdi Traefik&#8217;i kendi namespace&#8217;ine kural\u0131m. Burada Traefik&#8217;in bir LoadBalancer servisi olarak d\u0131\u015far\u0131ya a\u00e7\u0131lmas\u0131n\u0131 sa\u011flayaca\u011f\u0131z. E\u011fer bulut ortam\u0131nda de\u011filseniz (minikube gibi), <code>service.type<\/code> de\u011ferini <code>NodePort<\/code> olarak ayarlaman\u0131z ve <code>minikube service traefik --url<\/code> komutuyla IP adresini alman\u0131z gerekebilir.<\/p>\n<p>A\u015fa\u011f\u0131daki <code>values.yaml<\/code> dosyas\u0131n\u0131 olu\u015fturarak Traefik&#8217;in temel yap\u0131land\u0131rmas\u0131n\u0131 yapal\u0131m. Bu yap\u0131land\u0131rma, Traefik&#8217;in IngressRoute CRD&#8217;lerini kullanmas\u0131n\u0131, HTTP&#8217;den HTTPS&#8217;e y\u00f6nlendirme yapmas\u0131n\u0131 ve bir dashboard sa\u011flamas\u0131n\u0131 i\u00e7erir.<\/p>\n<pre><code class=\"language-yaml\"># traefik-values.yaml\nports:\n  web:\n    redirectTo: websecure\n  websecure:\n    tls:\n      enabled: true\n\n<h2>Enable the dashboard<\/h2>\ndashboard:\n  enabled: true\n  domain: traefik.example.com # Dashboard i\u00e7in kullanaca\u011f\u0131n\u0131z domaini buraya yaz\u0131n\n  ## IngressRoute for the dashboard\n  ingressRoute:\n    enabled: true\n    entryPoints:\n      - websecure\n    rule: Host(<code>traefik.example.com<\/code>) # Dashboard i\u00e7in kullanaca\u011f\u0131n\u0131z domaini buraya yaz\u0131n\n    tls:\n      certResolver: letsencrypt # cert-manager taraf\u0131ndan y\u00f6netilecek\n      options: {}\n\n<h2>Kubernetes IngressRoute CRD'lerini etkinle\u015ftir<\/h2>\nkubernetes:\n  ingressRoute:\n    enabled: true\n\n<h2>LoadBalancer servisini etkinle\u015ftir<\/h2>\nservice:\n  type: LoadBalancer\n  annotations: {} # Cloud provider'a \u00f6zel anotasyonlar buraya eklenebilir\n\n<h2>Otomatik HTTPS i\u00e7in Let's Encrypt yap\u0131land\u0131rmas\u0131 (cert-manager ile entegre)<\/h2>\n<h2>Traefik'in kendi ACME client'\u0131n\u0131 de\u011fil, cert-manager taraf\u0131ndan olu\u015fturulan Secret'\u0131 kullanaca\u011f\u0131z.<\/h2>\n<h2>Bu y\u00fczden Traefik'in ACME yap\u0131land\u0131rmas\u0131n\u0131 burada devre d\u0131\u015f\u0131 b\u0131rak\u0131yoruz.<\/h2>\n<h2>Ancak dashboard i\u00e7in IngressRoute'da certResolver'\u0131 kullanmak cert-manager ile \u00e7al\u0131\u015fmayacakt\u0131r.<\/h2>\n<h2>Bunun yerine dashboard i\u00e7in de manuel olarak Certificate kayna\u011f\u0131 tan\u0131mlayaca\u011f\u0131z.<\/h2>\n<h2>Bu k\u0131s\u0131m daha sonra cert-manager ile y\u00f6netilece\u011fi i\u00e7in burada \u00f6zel bir ACME yap\u0131land\u0131rmas\u0131 yapm\u0131yoruz.<\/h2>\n<h2>Traefik'in kendisi sadece bir Ingress Controller ve HTTP\/HTTPS router olarak g\u00f6rev yapacak.<\/code><\/pre>\n<\/h2>\n<p>Yukar\u0131daki <code>traefik-values.yaml<\/code> dosyas\u0131nda, Traefik dashboard&#8217;\u0131 i\u00e7in <code>traefik.example.com<\/code> gibi bir alan ad\u0131 belirttik. Kendi alan ad\u0131n\u0131za g\u00f6re bu de\u011feri g\u00fcncellemeyi unutmay\u0131n.<\/p>\n<p>\u015eimdi Traefik&#8217;i Helm ile kural\u0131m:<\/p>\n<pre><code class=\"language-bash\">helm install traefik traefik\/traefik \\\n  --namespace traefik \\\n  --create-namespace \\\n  -f traefik-values.yaml<\/code><\/pre>\n<p>Traefik podlar\u0131n\u0131n \u00e7al\u0131\u015f\u0131p \u00e7al\u0131\u015fmad\u0131\u011f\u0131n\u0131 kontrol edin:<\/p>\n<pre><code class=\"language-bash\">kubectl get pods -n traefik\nkubectl get svc -n traefik<\/code><\/pre>\n<p><code>kubectl get svc -n traefik<\/code> komutu, Traefik LoadBalancer servisine atanm\u0131\u015f harici IP adresini veya host ad\u0131n\u0131 g\u00f6sterecektir. Bu adresi, alan ad\u0131n\u0131z\u0131n (\u00f6rne\u011fin <code>*.example.com<\/code> veya <code>traefik.example.com<\/code>) DNS kay\u0131tlar\u0131na A veya CNAME olarak eklemeyi unutmay\u0131n.<\/p>\n<h4>2. cert-manager Kurulumu<\/h4>\n<p>cert-manager&#8217;\u0131 da Helm ile kuraca\u011f\u0131z.<\/p>\n<p>\u00d6ncelikle cert-manager Helm deposunu ekleyin ve g\u00fcncelleyin:<\/p>\n<pre><code class=\"language-bash\">helm repo add jetstack https:\/\/charts.jetstack.io\nhelm repo update<\/code><\/pre>\n<p>cert-manager&#8217;\u0131 kural\u0131m. Kurulum s\u0131ras\u0131nda CRD&#8217;lerinin de olu\u015fturulmas\u0131 gerekti\u011fini belirtmeliyiz:<\/p>\n<pre><code class=\"language-bash\">helm install cert-manager jetstack\/cert-manager \\\n  --namespace cert-manager \\\n  --create-namespace \\\n  --version v1.13.1 \\\n  --set installCRDs=true<\/code><\/pre>\n<p><code>--version<\/code> arg\u00fcman\u0131n\u0131, cert-manager&#8217;\u0131n en son kararl\u0131 s\u00fcr\u00fcm\u00fcyle g\u00fcncellemeyi d\u00fc\u015f\u00fcnebilirsiniz.<\/p>\n<p>cert-manager podlar\u0131n\u0131n \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 do\u011frulay\u0131n:<\/p>\n<pre><code class=\"language-bash\">kubectl get pods -n cert-manager<\/code><\/pre>\n<p>\u00dc\u00e7 pod g\u00f6rmelisiniz: <code>cert-manager<\/code>, <code>cert-manager-cainjector<\/code> ve <code>cert-manager-webhook<\/code>.<\/p>\n<h4>3. ClusterIssuer Yap\u0131land\u0131rmas\u0131<\/h4>\n<p>cert-manager&#8217;\u0131n sertifika alabilmesi i\u00e7in bir <code>Issuer<\/code> veya <code>ClusterIssuer<\/code> tan\u0131mlamam\u0131z gerekiyor. <code>ClusterIssuer<\/code>, t\u00fcm cluster genelinde kullan\u0131labilen bir sertifika sa\u011flay\u0131c\u0131s\u0131d\u0131r. Let&#8217;s Encrypt ile sertifika almak i\u00e7in HTTP-01 challenge y\u00f6ntemini kullanaca\u011f\u0131z ve bu challenge&#8217;\u0131 Traefik Ingress Controller \u00fczerinden \u00e7\u00f6zece\u011fiz.<\/p>\n<p>\u00d6ncelikle Let&#8217;s Encrypt&#8217;in &#8220;staging&#8221; (test) ortam\u0131n\u0131 kullanarak sertifika almay\u0131 deneyece\u011fiz. Bu, Let&#8217;s Encrypt&#8217;in \u00fcretim ortam\u0131n\u0131n limitlerine tak\u0131lmadan test yapmam\u0131z\u0131 sa\u011flar. Her \u015fey yolunda gitti\u011finde &#8220;production&#8221; ortam\u0131na ge\u00e7ece\u011fiz.<\/p>\n<p><code>clusterissuer-staging.yaml<\/code> dosyas\u0131n\u0131 olu\u015fturun:<\/p>\n<pre><code class=\"language-yaml\"># clusterissuer-staging.yaml\napiVersion: cert-manager.io\/v1\nkind: ClusterIssuer\nmetadata:\n  name: letsencrypt-staging\nspec:\n  acme:\n    # Let's Encrypt'in staging sunucusu. Testler i\u00e7in kullan\u0131l\u0131r.\n    server: https:\/\/acme-staging-v02.api.letsencrypt.org\/directory\n    email: your-email@example.com # Kendi e-posta adresinizi buraya yaz\u0131n\n    privateKeySecretRef:\n      # ACME hesab\u0131n\u0131n \u00f6zel anahtar\u0131n\u0131 depolamak i\u00e7in bir Kubernetes Secret ad\u0131\n      name: letsencrypt-staging-private-key\n    solvers:\n    - http01:\n        ingress:\n          class: traefik # Traefik Ingress Controller'\u0131 kullanaca\u011f\u0131m\u0131z\u0131 belirtiyoruz<\/code><\/pre>\n<p><code>your-email@example.com<\/code> k\u0131sm\u0131n\u0131 kendi e-posta adresinizle g\u00fcncellemeyi unutmay\u0131n. Let&#8217;s Encrypt, sertifika s\u00fcresinin dolmak \u00fczere oldu\u011funu veya ba\u015fka bir sorun oldu\u011funda bu e-posta adresini kullan\u0131r.<\/p>\n<p>Bu <code>ClusterIssuer<\/code> kayna\u011f\u0131n\u0131 uygulay\u0131n:<\/p>\n<pre><code class=\"language-bash\">kubectl apply -f clusterissuer-staging.yaml<\/code><\/pre>\n<p><code>ClusterIssuer<\/code>&#8216;\u0131n durumunu kontrol edin:<\/p>\n<pre><code class=\"language-bash\">kubectl get clusterissuer letsencrypt-staging -o yaml<\/code><\/pre>\n<p><code>status.conditions<\/code> alt\u0131nda <code>Ready<\/code> durumunun <code>True<\/code> oldu\u011funu g\u00f6rmelisiniz.<\/p>\n<p>Her \u015fey yolunda giderse, \u015fimdi <code>clusterissuer-production.yaml<\/code> dosyas\u0131n\u0131 olu\u015fturup Let&#8217;s Encrypt&#8217;in \u00fcretim ortam\u0131n\u0131 yap\u0131land\u0131ral\u0131m:<\/p>\n<pre><code class=\"language-yaml\"># clusterissuer-production.yaml\napiVersion: cert-manager.io\/v1\nkind: ClusterIssuer\nmetadata:\n  name: letsencrypt-production\nspec:\n  acme:\n    # Let's Encrypt'in \u00fcretim sunucusu. Ger\u00e7ek sertifikalar i\u00e7in kullan\u0131l\u0131r.\n    server: https:\/\/acme-v02.api.letsencrypt.org\/directory\n    email: your-email@example.com # Kendi e-posta adresinizi buraya yaz\u0131n\n    privateKeySecretRef:\n      name: letsencrypt-production-private-key\n    solvers:\n    - http01:\n        ingress:\n          class: traefik # Traefik Ingress Controller'\u0131 kullanaca\u011f\u0131m\u0131z\u0131 belirtiyoruz<\/code><\/pre>\n<p>Bu <code>ClusterIssuer<\/code> kayna\u011f\u0131n\u0131 uygulay\u0131n:<\/p>\n<pre><code class=\"language-bash\">kubectl apply -f clusterissuer-production.yaml<\/code><\/pre>\n<p><code>kubectl get clusterissuer letsencrypt-production -o yaml<\/code> ile durumunu kontrol edin.<\/p>\n<h4>4. Uygulama Da\u011f\u0131t\u0131m\u0131 ve IngressRoute Olu\u015fturma<\/h4>\n<p>\u015eimdi basit bir Nginx uygulamas\u0131 da\u011f\u0131tal\u0131m ve bu uygulamaya Traefik IngressRoute arac\u0131l\u0131\u011f\u0131yla eri\u015fim sa\u011flayal\u0131m.<\/p>\n<p><code>nginx-app.yaml<\/code> dosyas\u0131n\u0131 olu\u015fturun:<\/p>\n<pre><code class=\"language-yaml\"># nginx-app.yaml\napiVersion: apps\/v1\nkind: Deployment\nmetadata:\n  name: nginx-deployment\n  labels:\n    app: nginx\nspec:\n  replicas: 2\n  selector:\n    matchLabels:\n      app: nginx\n  template:\n    metadata:\n      labels:\n        app: nginx\n    spec:\n      containers:\n      - name: nginx\n        image: nginx:latest\n        ports:\n        - containerPort: 80\n---\napiVersion: v1\nkind: Service\nmetadata:\n  name: nginx-service\nspec:\n  selector:\n    app: nginx\n  ports:\n    - protocol: TCP\n      port: 80\n      targetPort: 80<\/code><\/pre>\n<p>Uygulamay\u0131 da\u011f\u0131t\u0131n:<\/p>\n<pre><code class=\"language-bash\">kubectl apply -f nginx-app.yaml<\/code><\/pre>\n<p>\u015eimdi bu Nginx uygulamas\u0131na HTTPS \u00fczerinden eri\u015fim sa\u011flamak i\u00e7in bir Traefik <code>IngressRoute<\/code> ve bir <code>Certificate<\/code> kayna\u011f\u0131 tan\u0131mlayaca\u011f\u0131z. <code>Certificate<\/code> kayna\u011f\u0131, cert-manager&#8217;a bir sertifika almas\u0131n\u0131 ve bu sertifikay\u0131 belirli bir Kubernetes Secret&#8217;\u0131nda saklamas\u0131n\u0131 s\u00f6yleyecektir. <code>IngressRoute<\/code> ise bu Secret&#8217;\u0131 kullanarak HTTPS trafi\u011fini y\u00f6netecek.<\/p>\n<p><code>ingressroute-app.yaml<\/code> dosyas\u0131n\u0131 olu\u015fturun. <code>host<\/code> de\u011ferini ve <code>tls.secretName<\/code> de\u011ferini kendi alan ad\u0131n\u0131za g\u00f6re g\u00fcncellemeyi unutmay\u0131n.<\/p>\n<pre><code class=\"language-yaml\"># ingressroute-app.yaml\napiVersion: traefik.containo.us\/v1alpha1\nkind: IngressRoute\nmetadata:\n  name: nginx-ingressroute\nspec:\n  entryPoints:\n    - web\n    - websecure\n  routes:\n    - match: Host(<code>app.example.com<\/code>) # Uygulaman\u0131z i\u00e7in kullanaca\u011f\u0131n\u0131z domaini buraya yaz\u0131n\n      kind: Rule\n      services:\n        - name: nginx-service\n          port: 80\n  tls:\n    secretName: app-example-com-tls # cert-manager'\u0131n olu\u015fturaca\u011f\u0131 Secret'\u0131n ad\u0131\n    # options:\n    #   name: my-tls-options@kubernetescrd # \u0130ste\u011fe ba\u011fl\u0131, Traefik TLS se\u00e7enekleri<\/code><\/pre>\n<p>Uygulaman\u0131z i\u00e7in kullanaca\u011f\u0131n\u0131z <code>app.example.com<\/code> gibi bir alt alan ad\u0131n\u0131 veya ana alan ad\u0131n\u0131z\u0131 <code>Host()<\/code> i\u00e7inde belirtin. <code>secretName<\/code> de\u011feri, cert-manager&#8217;\u0131n olu\u015fturaca\u011f\u0131 TLS Secret&#8217;\u0131n\u0131n ad\u0131 olacakt\u0131r.<\/p>\n<p>Bu <code>IngressRoute<\/code> kayna\u011f\u0131n\u0131 uygulay\u0131n:<\/p>\n<pre><code class=\"language-bash\">kubectl apply -f ingressroute-app.yaml<\/code><\/pre>\n<h4>5. Certificate Kayna\u011f\u0131 Olu\u015fturma<\/h4>\n<p>\u015eimdi cert-manager&#8217;a <code>app.example.com<\/code> i\u00e7in bir sertifika almas\u0131n\u0131 s\u00f6yleyen <code>Certificate<\/code> kayna\u011f\u0131n\u0131 olu\u015ftural\u0131m. \u0130lk ba\u015fta <code>letsencrypt-staging<\/code> ClusterIssuer&#8217;\u0131 kullanarak test edece\u011fiz.<\/p>\n<p><code>certificate-staging.yaml<\/code> dosyas\u0131n\u0131 olu\u015fturun:<\/p>\n<pre><code class=\"language-yaml\"># certificate-staging.yaml\napiVersion: cert-manager.io\/v1\nkind: Certificate\nmetadata:\n  name: app-example-com-certificate-staging\nspec:\n  secretName: app-example-com-tls # IngressRoute'da belirtilen Secret ad\u0131 ile e\u015fle\u015fmeli\n  dnsNames:\n    - app.example.com # Sertifika almak istedi\u011finiz domaini buraya yaz\u0131n\n  issuerRef:\n    name: letsencrypt-staging # Staging ClusterIssuer'\u0131m\u0131z\u0131 kullan\u0131yoruz\n    kind: ClusterIssuer<\/code><\/pre>\n<p>Bu <code>Certificate<\/code> kayna\u011f\u0131n\u0131 uygulay\u0131n:<\/p>\n<pre><code class=\"language-bash\">kubectl apply -f certificate-staging.yaml<\/code><\/pre>\n<p>Sertifika talebinin durumunu izleyin:<\/p>\n<pre><code class=\"language-bash\">kubectl get certificaterequest -w\nkubectl describe certificate app-example-com-certificate-staging<\/code><\/pre>\n<p><code>Certificate<\/code> kayna\u011f\u0131n\u0131n <code>Ready<\/code> durumunun <code>True<\/code> oldu\u011funu ve <code>Secret<\/code>&#8216;\u0131n olu\u015fturuldu\u011funu g\u00f6rmelisiniz. Bu i\u015flem birka\u00e7 dakika s\u00fcrebilir. E\u011fer bir sorun olursa, <code>kubectl describe certificate<\/code> ve <code>kubectl logs -n cert-manager deploy\/cert-manager<\/code> komutlar\u0131 hata ay\u0131klama i\u00e7in faydal\u0131d\u0131r.<\/p>\n<p>Staging sertifikas\u0131 ba\u015far\u0131yla al\u0131nd\u0131ktan sonra, ayn\u0131 i\u015flemi \u00fcretim sertifikas\u0131 i\u00e7in yapaca\u011f\u0131z. \u00d6nce staging <code>Certificate<\/code>&#8216;i silin:<\/p>\n<pre><code class=\"language-bash\">kubectl delete certificate app-example-com-certificate-staging<\/code><\/pre>\n<p>\u015eimdi <code>certificate-production.yaml<\/code> dosyas\u0131n\u0131 olu\u015fturun:<\/p>\n<pre><code class=\"language-yaml\"># certificate-production.yaml\napiVersion: cert-manager.io\/v1\nkind: Certificate\nmetadata:\n  name: app-example-com-certificate-production\nspec:\n  secretName: app-example-com-tls # IngressRoute'da belirtilen Secret ad\u0131 ile e\u015fle\u015fmeli\n  dnsNames:\n    - app.example.com # Sertifika almak istedi\u011finiz domaini buraya yaz\u0131n\n  issuerRef:\n    name: letsencrypt-production # \u00dcretim ClusterIssuer'\u0131m\u0131z\u0131 kullan\u0131yoruz\n    kind: ClusterIssuer<\/code><\/pre>\n<p>Bu <code>Certificate<\/code> kayna\u011f\u0131n\u0131 uygulay\u0131n:<\/p>\n<pre><code class=\"language-bash\">kubectl apply -f certificate-production.yaml<\/code><\/pre>\n<p>Tekrar sertifika talebinin durumunu izleyin:<\/p>\n<pre><code class=\"language-bash\">kubectl get certificaterequest -w\nkubectl describe certificate app-example-com-certificate-production<\/code><\/pre>\n<p>\u00dcretim sertifikas\u0131 da ba\u015far\u0131yla al\u0131nd\u0131\u011f\u0131nda, <code>app-example-com-tls<\/code> adl\u0131 bir Secret&#8217;\u0131n olu\u015ftu\u011funu g\u00f6receksiniz. Traefik IngressRoute&#8217;unuz bu Secret&#8217;\u0131 otomatik olarak kullanmaya ba\u015flayacakt\u0131r.<\/p>\n<p><strong>Dashboard i\u00e7in Sertifika (\u0130ste\u011fe Ba\u011fl\u0131):<\/strong><br \/>\nE\u011fer Traefik dashboard&#8217;\u0131 i\u00e7in de HTTPS eri\u015fimi istiyorsan\u0131z, dashboard i\u00e7in belirledi\u011finiz domain (<code>traefik.example.com<\/code>) i\u00e7in de bir <code>Certificate<\/code> kayna\u011f\u0131 olu\u015fturman\u0131z gerekecektir.<\/p>\n<pre><code class=\"language-yaml\"># certificate-traefik-dashboard.yaml\napiVersion: cert-manager.io\/v1\nkind: Certificate\nmetadata:\n  name: traefik-dashboard-certificate\n  namespace: traefik # Dashboard Traefik namespace'inde oldu\u011fu i\u00e7in\nspec:\n  secretName: traefik-dashboard-tls\n  dnsNames:\n    - traefik.example.com # Dashboard domaini\n  issuerRef:\n    name: letsencrypt-production\n    kind: ClusterIssuer<\/code><\/pre>\n<p>Bu sertifikay\u0131 Traefik namespace&#8217;ine uygulay\u0131n ve Traefik <code>values.yaml<\/code> dosyas\u0131nda dashboard <code>ingressRoute<\/code>&#8216;unda <code>tls.secretName: traefik-dashboard-tls<\/code> olarak g\u00fcncelleyin. Helm upgrade ile Traefik&#8217;i g\u00fcncellemeyi unutmay\u0131n.<\/p>\n<h4>6. Eri\u015fimi Test Etme<\/h4>\n<p>Art\u0131k her \u015feyin \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 do\u011frulamak i\u00e7in alan ad\u0131n\u0131z\u0131 (\u00f6rne\u011fin <code>https:\/\/app.example.com<\/code>) bir web taray\u0131c\u0131s\u0131ndan ziyaret edin.<\/p>\n<p>*   Taray\u0131c\u0131n\u0131z\u0131n adres \u00e7ubu\u011funda ye\u015fil bir kilit simgesi veya &#8220;G\u00fcvenli&#8221; ibaresi g\u00f6rmelisiniz.<br \/>\n*   Kilit simgesine t\u0131klayarak sertifika detaylar\u0131n\u0131 inceleyin. Sertifikan\u0131n Let&#8217;s Encrypt taraf\u0131ndan verildi\u011fini ve alan ad\u0131n\u0131z i\u00e7in ge\u00e7erli oldu\u011funu do\u011frulay\u0131n.<br \/>\n*   HTTP&#8217;den HTTPS&#8217;e otomatik y\u00f6nlendirmenin \u00e7al\u0131\u015f\u0131p \u00e7al\u0131\u015fmad\u0131\u011f\u0131n\u0131 kontrol etmek i\u00e7in <code>http:\/\/app.example.com<\/code> adresini ziyaret edin. Otomatik olarak <code>https:\/\/app.example.com<\/code> adresine y\u00f6nlendirilmelisiniz.<\/p>\n<h3>\u0130leri Seviye Konular \/ En \u0130yi Uygulamalar<\/h3>\n<h4>DNS-01 Challenge<\/h4>\n<p>HTTP-01 challenge, genellikle Ingress Controller&#8217;lar i\u00e7in yeterli olsa da, baz\u0131 durumlarda DNS-01 challenge daha uygun olabilir:<\/p>\n<p><em>   <strong>Wildcard Sertifikalar:<\/strong> <code><\/em>.example.com<\/code> gibi wildcard sertifikalar almak i\u00e7in DNS-01 challenge zorunludur.<br \/>\n*   <strong>\u0130\u00e7 A\u011f Uygulamalar\u0131:<\/strong> Uygulaman\u0131z\u0131n internete a\u00e7\u0131k olmad\u0131\u011f\u0131 ancak yine de g\u00fcvenli\u011fe ihtiyac\u0131 oldu\u011fu durumlarda.<br \/>\n*   <strong>A\u011f Yap\u0131land\u0131rmas\u0131 K\u0131s\u0131tlamalar\u0131:<\/strong> HTTP-01 challenge i\u00e7in port 80&#8217;in Traefik&#8217;e ula\u015f\u0131labilir olmas\u0131 gerekir. E\u011fer bu m\u00fcmk\u00fcn de\u011filse DNS-01 bir alternatiftir.<\/p>\n<p>cert-manager, \u00e7e\u015fitli DNS sa\u011flay\u0131c\u0131lar\u0131 (Cloudflare, AWS Route 53, Google Cloud DNS vb.) ile entegre olabilir. DNS-01 challenge i\u00e7in <code>ClusterIssuer<\/code> yap\u0131land\u0131rmas\u0131nda <code>http01<\/code> yerine <code>dns01<\/code> solver&#8217;\u0131 kullanman\u0131z ve DNS sa\u011flay\u0131c\u0131n\u0131za \u00f6zel API kimlik bilgilerini bir Secret olarak sa\u011flaman\u0131z gerekir.<\/p>\n<h4>Sertifika Yenileme<\/h4>\n<p>cert-manager, sertifikalar\u0131n s\u00fcresi dolmadan \u00f6nce otomatik olarak yenilenmesini sa\u011flar. Varsay\u0131lan olarak, sertifikalar son kullanma tarihlerinden 30 g\u00fcn \u00f6nce yenilenmeye ba\u015flar. Bu, sizin manuel olarak m\u00fcdahale etmenize gerek kalmadan sitenizin s\u00fcrekli olarak g\u00fcvenli kalmas\u0131n\u0131 sa\u011flar.<\/p>\n<h4>cert-manager&#8217;\u0131 \u0130zleme<\/h4>\n<p>cert-manager&#8217;\u0131n d\u00fczg\u00fcn \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olmak i\u00e7in Prometheus ve Grafana gibi ara\u00e7larla izleyebilirsiniz. cert-manager, Prometheus uyumlu metrikler yay\u0131nlar. Ayr\u0131ca, <code>kubectl get certificate<\/code> ve <code>kubectl describe certificate<\/code> komutlar\u0131n\u0131 d\u00fczenli olarak kontrol etmek, herhangi bir sorun olup olmad\u0131\u011f\u0131n\u0131 anlaman\u0131za yard\u0131mc\u0131 olur.<\/p>\n<h4>G\u00fcvenlik En \u0130yi Uygulamalar\u0131 (Traefik Middleware)<\/h4>\n<p>Traefik Middleware&#8217;ler, HTTP isteklerini i\u015flerken ek g\u00fcvenlik \u00f6nlemleri uygulaman\u0131za olanak tan\u0131r.<\/p>\n<p>*   <strong>HSTS (HTTP Strict Transport Security):<\/strong> Taray\u0131c\u0131lara sitenize her zaman HTTPS \u00fczerinden ba\u011flanmalar\u0131n\u0131 s\u00f6yleyen bir ba\u015fl\u0131k ekler. Bu, MitM (Man-in-the-Middle) sald\u0131r\u0131lar\u0131na kar\u015f\u0131 koruma sa\u011flar.<br \/>\n*   <strong>G\u00fcvenlik Ba\u015fl\u0131klar\u0131:<\/strong> <code>X-Content-Type-Options<\/code>, <code>X-Frame-Options<\/code>, <code>X-XSS-Protection<\/code>, <code>Referrer-Policy<\/code>, <code>Content-Security-Policy<\/code> gibi ba\u015fl\u0131klar\u0131 ekleyerek \u00e7e\u015fitli web zafiyetlerine kar\u015f\u0131 koruma sa\u011flayabilirsiniz.<\/p>\n<p>\u00d6rnek bir HSTS Middleware tan\u0131m\u0131:<\/p>\n<pre><code class=\"language-yaml\">apiVersion: traefik.containo.us\/v1alpha1\nkind: Middleware\nmetadata:\n  name: security-headers\n  namespace: default\nspec:\n  headers:\n    stsSeconds: 31536000 # 1 y\u0131l\n    stsIncludeSubdomains: true\n    stsPreload: true\n    contentTypeNosniff: true\n    frameDeny: true\n    browserXssFilter: true<\/code><\/pre>\n<p>Bu middleware&#8217;\u0131 bir <code>IngressRoute<\/code>&#8216;a eklemek i\u00e7in:<\/p>\n<pre><code class=\"language-yaml\">apiVersion: traefik.containo.us\/v1alpha1\nkind: IngressRoute\nmetadata:\n  name: nginx-ingressroute\nspec:\n  entryPoints:\n    - web\n    - websecure\n  routes:\n    - match: Host(<code>app.example.com<\/code>)\n      kind: Rule\n      services:\n        - name: nginx-service\n          port: 80\n      middlewares:\n        - name: security-headers@kubernetescrd # Middleware'i IngressRoute'a ekle\n  tls:\n    secretName: app-example-com-tls<\/code><\/pre>\n<h3>Sorun Giderme<\/h3>\n<p>Kurulum s\u0131ras\u0131nda veya sonras\u0131nda kar\u015f\u0131la\u015fabilece\u011finiz baz\u0131 yayg\u0131n sorunlar ve \u00e7\u00f6z\u00fcmleri:<\/p>\n<p>*   <strong>Sertifika Al\u0131nam\u0131yor (Pending\/Failed):<\/strong><br \/>\n    *   <code>kubectl describe certificate <certificate-name><\/code> ve <code>kubectl describe certificaterequest <certificaterequest-name><\/code> komutlar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131r\u0131n. Olaylar (Events) b\u00f6l\u00fcm\u00fc genellikle sorunun nedenini a\u00e7\u0131k\u00e7a belirtir.<br \/>\n    *   <code>kubectl logs -n cert-manager deploy\/cert-manager<\/code> komutuyla cert-manager podunun g\u00fcnl\u00fcklerini kontrol edin.<br \/>\n    *   E-posta adresinizin do\u011fru oldu\u011fundan ve Let&#8217;s Encrypt&#8217;e ula\u015f\u0131labilir oldu\u011fundan emin olun.<br \/>\n    *   Alan ad\u0131n\u0131z\u0131n Traefik LoadBalancer IP adresine do\u011fru \u015fekilde i\u015faret etti\u011finden emin olun. DNS yay\u0131l\u0131m\u0131 zaman alabilir. <code>dig app.example.com<\/code> komutuyla kontrol edin.<br \/>\n    *   Firewall kurallar\u0131n\u0131z\u0131n Let&#8217;s Encrypt&#8217;in ACME sunucular\u0131ndan gelen HTTP (port 80) isteklerine izin verdi\u011finden emin olun.<br \/>\n    *   <code>ClusterIssuer<\/code>&#8216;daki <code>solvers.http01.ingress.class<\/code> de\u011ferinin Traefik&#8217;in do\u011fru Ingress s\u0131n\u0131f\u0131na i\u015faret etti\u011finden emin olun (genellikle <code>traefik<\/code>).<\/p>\n<p>*   <strong>HTTPS Y\u00f6nlendirmesi \u00c7al\u0131\u015fm\u0131yor:<\/strong><br \/>\n    *   Traefik <code>values.yaml<\/code> dosyas\u0131ndaki <code>ports.web.redirectTo: websecure<\/code> ayar\u0131n\u0131n do\u011fru oldu\u011fundan emin olun.<br \/>\n    *   <code>IngressRoute<\/code> tan\u0131m\u0131n\u0131zda <code>entryPoints<\/code> alt\u0131nda hem <code>web<\/code> hem de <code>websecure<\/code>&#8216;\u0131n listelendi\u011finden emin olun.<\/p>\n<p>*   <strong>Traefik Dashboard&#8217;a Eri\u015filemiyor:<\/strong><br \/>\n    *   Traefik LoadBalancer servisinin bir d\u0131\u015f IP veya host ad\u0131 ald\u0131\u011f\u0131ndan emin olun (<code>kubectl get svc -n traefik<\/code>).<br \/>\n    *   Dashboard i\u00e7in kulland\u0131\u011f\u0131n\u0131z alan ad\u0131n\u0131n bu IP adresine do\u011fru \u015fekilde y\u00f6nlendirildi\u011finden emin olun.<br \/>\n    *   Traefik pod g\u00fcnl\u00fcklerini kontrol edin (<code>kubectl logs -n traefik deploy\/traefik<\/code>).<\/p>\n<p>*   <strong><code>secretName<\/code> E\u015fle\u015fmiyor:<\/strong><br \/>\n    *   <code>Certificate<\/code> kayna\u011f\u0131ndaki <code>spec.secretName<\/code> ile <code>IngressRoute<\/code> kayna\u011f\u0131ndaki <code>tls.secretName<\/code> de\u011ferlerinin tam olarak ayn\u0131 oldu\u011fundan emin olun.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Kubernetes&#8217;te cert-manager, Traefik ve Let&#8217;s Encrypt \u00fc\u00e7l\u00fcs\u00fc, modern web uygulamalar\u0131n\u0131z i\u00e7in g\u00fc\u00e7l\u00fc, esnek ve tamamen otomatik bir HTTPS \u00e7\u00f6z\u00fcm\u00fc sunar. Bu entegrasyon sayesinde, sertifika y\u00f6netimiyle ilgili manuel s\u00fcre\u00e7leri ortadan kald\u0131rarak geli\u015ftiricilerin ve operasyon ekiplerinin i\u015f y\u00fck\u00fcn\u00fc \u00f6nemli \u00f6l\u00e7\u00fcde azalt\u0131rs\u0131n\u0131z.<\/p>\n<p>Bu rehberde ad\u0131m ad\u0131m Traefik&#8217;i Ingress Controller olarak kurduk, cert-manager&#8217;\u0131 otomatik sertifika y\u00f6netimi i\u00e7in yap\u0131land\u0131rd\u0131k ve Let&#8217;s Encrypt ile \u00fccretsiz, g\u00fcvenilir SSL\/TLS sertifikalar\u0131 ald\u0131k. Ayr\u0131ca, g\u00fcvenlik ba\u015fl\u0131klar\u0131 gibi ek iyile\u015ftirmelerle sitenizin g\u00fcvenli\u011fini daha da art\u0131rman\u0131n yollar\u0131n\u0131 ke\u015ffettik.<\/p>\n<p>HTTPS&#8217;in sadece bir se\u00e7enek de\u011fil, bir zorunluluk haline geldi\u011fi g\u00fcn\u00fcm\u00fcz internet d\u00fcnyas\u0131nda, bu t\u00fcr otomatize edilmi\u015f \u00e7\u00f6z\u00fcmler, uygulamalar\u0131n\u0131z\u0131n g\u00fcvenli\u011fini ve kullan\u0131c\u0131lar\u0131n\u0131z\u0131n gizlili\u011fini sa\u011flaman\u0131n en etkili yollar\u0131ndan biridir. Bu kurulumla, Kubernetes \u00fczerinde g\u00fcvenli ve y\u00fcksek performansl\u0131 uygulamalar \u00e7al\u0131\u015ft\u0131rmak i\u00e7in sa\u011flam bir temele sahip olursunuz.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Kubernetes&#8217;te cert-manager, Traefik ve Let\u2019s Encrypt ile Sitenizi G\u00fcvenli Hale Getirme\nGiri\u015f\nG\u00fcn\u00fcm\u00fczde internet sitelerinin g\u00fcvenli\u011fi, kulla","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-35443","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>Kubernetes&#039;te cert-manager, Traefik ve Let\u2019s Encrypt ile Sitenizi G\u00fcvenli Hale Getirme - 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\/kuberneteste-cert-manager-traefik-ve-lets-encrypt-ile-sitenizi-guvenli-hale-getirme\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kubernetes&#039;te cert-manager, Traefik ve Let\u2019s Encrypt ile Sitenizi G\u00fcvenli Hale Getirme\" \/>\n<meta property=\"og:description\" content=\"Kubernetes&#039;te cert-manager, Traefik ve Let\u2019s Encrypt ile Sitenizi G\u00fcvenli Hale Getirme Giri\u015f G\u00fcn\u00fcm\u00fczde internet sitelerinin g\u00fcvenli\u011fi, kulla\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/kuberneteste-cert-manager-traefik-ve-lets-encrypt-ile-sitenizi-guvenli-hale-getirme\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-29T17:40:47+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=\"18 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kuberneteste-cert-manager-traefik-ve-lets-encrypt-ile-sitenizi-guvenli-hale-getirme\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kuberneteste-cert-manager-traefik-ve-lets-encrypt-ile-sitenizi-guvenli-hale-getirme\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Kubernetes&#8217;te cert-manager, Traefik ve Let\u2019s Encrypt ile Sitenizi G\u00fcvenli Hale Getirme\",\"datePublished\":\"2025-11-29T17:40:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kuberneteste-cert-manager-traefik-ve-lets-encrypt-ile-sitenizi-guvenli-hale-getirme\/\"},\"wordCount\":2709,\"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\/kuberneteste-cert-manager-traefik-ve-lets-encrypt-ile-sitenizi-guvenli-hale-getirme\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kuberneteste-cert-manager-traefik-ve-lets-encrypt-ile-sitenizi-guvenli-hale-getirme\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/kuberneteste-cert-manager-traefik-ve-lets-encrypt-ile-sitenizi-guvenli-hale-getirme\/\",\"name\":\"Kubernetes'te cert-manager, Traefik ve Let\u2019s Encrypt ile Sitenizi G\u00fcvenli Hale Getirme - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-11-29T17:40:47+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kuberneteste-cert-manager-traefik-ve-lets-encrypt-ile-sitenizi-guvenli-hale-getirme\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/kuberneteste-cert-manager-traefik-ve-lets-encrypt-ile-sitenizi-guvenli-hale-getirme\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kuberneteste-cert-manager-traefik-ve-lets-encrypt-ile-sitenizi-guvenli-hale-getirme\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kubernetes&#8217;te cert-manager, Traefik ve Let\u2019s Encrypt ile Sitenizi G\u00fcvenli Hale Getirme\"}]},{\"@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'te cert-manager, Traefik ve Let\u2019s Encrypt ile Sitenizi G\u00fcvenli Hale Getirme - 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\/kuberneteste-cert-manager-traefik-ve-lets-encrypt-ile-sitenizi-guvenli-hale-getirme\/","og_locale":"tr_TR","og_type":"article","og_title":"Kubernetes'te cert-manager, Traefik ve Let\u2019s Encrypt ile Sitenizi G\u00fcvenli Hale Getirme","og_description":"Kubernetes'te cert-manager, Traefik ve Let\u2019s Encrypt ile Sitenizi G\u00fcvenli Hale Getirme Giri\u015f G\u00fcn\u00fcm\u00fczde internet sitelerinin g\u00fcvenli\u011fi, kulla","og_url":"https:\/\/fatihsoysal.com\/blog\/kuberneteste-cert-manager-traefik-ve-lets-encrypt-ile-sitenizi-guvenli-hale-getirme\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-11-29T17:40:47+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"18 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/kuberneteste-cert-manager-traefik-ve-lets-encrypt-ile-sitenizi-guvenli-hale-getirme\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/kuberneteste-cert-manager-traefik-ve-lets-encrypt-ile-sitenizi-guvenli-hale-getirme\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Kubernetes&#8217;te cert-manager, Traefik ve Let\u2019s Encrypt ile Sitenizi G\u00fcvenli Hale Getirme","datePublished":"2025-11-29T17:40:47+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/kuberneteste-cert-manager-traefik-ve-lets-encrypt-ile-sitenizi-guvenli-hale-getirme\/"},"wordCount":2709,"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\/kuberneteste-cert-manager-traefik-ve-lets-encrypt-ile-sitenizi-guvenli-hale-getirme\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/kuberneteste-cert-manager-traefik-ve-lets-encrypt-ile-sitenizi-guvenli-hale-getirme\/","url":"https:\/\/fatihsoysal.com\/blog\/kuberneteste-cert-manager-traefik-ve-lets-encrypt-ile-sitenizi-guvenli-hale-getirme\/","name":"Kubernetes'te cert-manager, Traefik ve Let\u2019s Encrypt ile Sitenizi G\u00fcvenli Hale Getirme - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-11-29T17:40:47+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/kuberneteste-cert-manager-traefik-ve-lets-encrypt-ile-sitenizi-guvenli-hale-getirme\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/kuberneteste-cert-manager-traefik-ve-lets-encrypt-ile-sitenizi-guvenli-hale-getirme\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/kuberneteste-cert-manager-traefik-ve-lets-encrypt-ile-sitenizi-guvenli-hale-getirme\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Kubernetes&#8217;te cert-manager, Traefik ve Let\u2019s Encrypt ile Sitenizi G\u00fcvenli Hale Getirme"}]},{"@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\/35443","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=35443"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/35443\/revisions"}],"predecessor-version":[{"id":35444,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/35443\/revisions\/35444"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=35443"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=35443"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=35443"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}