{"id":36616,"date":"2025-12-20T17:40:43","date_gmt":"2025-12-20T14:40:43","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=36616"},"modified":"2025-12-20T17:40:43","modified_gmt":"2025-12-20T14:40:43","slug":"digitalocean-kubernetes-uzerinde-nginx-ingress-ve-cert-manager-kurulumu-kapsamli-bir-rehber","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/digitalocean-kubernetes-uzerinde-nginx-ingress-ve-cert-manager-kurulumu-kapsamli-bir-rehber\/","title":{"rendered":"DigitalOcean Kubernetes \u00dczerinde Nginx Ingress ve Cert-Manager Kurulumu: Kapsaml\u0131 Bir Rehber"},"content":{"rendered":"<p><body><\/p>\n<h2>DigitalOcean Kubernetes \u00dczerinde Nginx Ingress ve Cert-Manager Kurulumu: Kapsaml\u0131 Bir Rehber<\/h2>\n<p>Modern uygulama geli\u015ftirme ve da\u011f\u0131t\u0131m s\u00fcre\u00e7lerinde Kubernetes, konteyner tabanl\u0131 i\u015f y\u00fcklerini y\u00f6netmek i\u00e7in vazge\u00e7ilmez bir platform haline gelmi\u015ftir. Mikroservis mimarileri ve bulut yerel uygulamalar\u0131n y\u00fckseli\u015fiyle birlikte, bu uygulamalar\u0131n d\u0131\u015f d\u00fcnyaya g\u00fcvenli ve verimli bir \u015fekilde a\u00e7\u0131lmas\u0131 kritik bir \u00f6neme sahiptir. Bu ba\u011flamda, Nginx Ingress Controller ve Cert-Manager gibi ara\u00e7lar, Kubernetes ekosisteminde temel ta\u015flardan say\u0131l\u0131r. Bu makalede, DigitalOcean Kubernetes (DOKS) \u00fczerinde bu iki g\u00fc\u00e7l\u00fc arac\u0131 nas\u0131l kuraca\u011f\u0131m\u0131z\u0131 ve yap\u0131land\u0131raca\u011f\u0131m\u0131z\u0131 ad\u0131m ad\u0131m inceleyece\u011fiz. Amac\u0131m\u0131z, uygulamalar\u0131n\u0131za hem g\u00fcvenli HTTPS eri\u015fimi sa\u011flamak hem de trafik y\u00f6nlendirmesini merkezi bir \u015fekilde y\u00f6netmektir.<\/p>\n<h3>Giri\u015f: Kubernetes&#8217;te Trafik Y\u00f6netimi ve SSL Otomasyonu<\/h3>\n<p>Kubernetes, bir uygulaman\u0131n da\u011f\u0131t\u0131m\u0131n\u0131, \u00f6l\u00e7eklendirmesini ve y\u00f6netimini basitle\u015ftirse de, d\u0131\u015f d\u00fcnyadan gelen trafi\u011fi uygulamalara y\u00f6nlendirme ve bu trafi\u011fi HTTPS ile g\u00fcvence alt\u0131na alma konular\u0131 \u00f6zel bir yakla\u015f\u0131m gerektirir.<\/p>\n<p>*   <strong>Ingress:<\/strong> Kubernetes&#8217;te Ingress, k\u00fcme i\u00e7indeki servislere d\u0131\u015far\u0131dan HTTP\/HTTPS eri\u015fimi sa\u011flayan bir API nesnesidir. Bir Ingress Controller (\u00f6rne\u011fin Nginx Ingress Controller) ise bu Ingress kurallar\u0131n\u0131 uygulayan ve trafi\u011fi do\u011fru servislere y\u00f6nlendiren bir bile\u015fendir. Geleneksel Load Balancer&#8217;lar\u0131n aksine, Ingress Controller daha geli\u015fmi\u015f y\u00f6nlendirme kurallar\u0131 (host tabanl\u0131, yol tabanl\u0131), SSL sonland\u0131rma ve daha bir\u00e7ok \u00f6zellik sunar.<br \/>\n*   <strong>Cert-Manager:<\/strong> Sertifika y\u00f6netimi, \u00f6zellikle SSL\/TLS sertifikalar\u0131n\u0131n olu\u015fturulmas\u0131, yenilenmesi ve da\u011f\u0131t\u0131lmas\u0131 s\u00fcre\u00e7leri genellikle manuel ve hataya a\u00e7\u0131k olabilir. Cert-Manager, Kubernetes k\u00fcmelerinde sertifika y\u00f6netimini otomatikle\u015ftirerek bu s\u00fcreci basitle\u015ftirir. Let&#8217;s Encrypt gibi \u00fccretsiz sertifika sa\u011flay\u0131c\u0131lar\u0131yla entegre olarak, uygulamalar\u0131n\u0131z i\u00e7in otomatik olarak sertifika alabilir ve yenileyebilir.<\/p>\n<p>DigitalOcean Kubernetes, y\u00f6netilen bir Kubernetes hizmeti sunarak altyap\u0131 karma\u015f\u0131kl\u0131\u011f\u0131n\u0131 azalt\u0131r. Bu sayede geli\u015ftiriciler, temel altyap\u0131 y\u00f6netimi yerine uygulama geli\u015ftirmeye odaklanabilirler. Bu makale, DOKS&#8217;un sa\u011flad\u0131\u011f\u0131 avantajlar\u0131 kullanarak Nginx Ingress ve Cert-Manager&#8217;\u0131 nas\u0131l entegre edece\u011fimizi detayland\u0131racakt\u0131r.<\/p>\n<h3>\u00d6n Ko\u015fullar<\/h3>\n<p>Bu rehbere ba\u015flamadan \u00f6nce a\u015fa\u011f\u0131daki \u00f6n ko\u015fullar\u0131n kar\u015f\u0131land\u0131\u011f\u0131ndan emin olun:<\/p>\n<p>*   <strong>DigitalOcean Hesab\u0131:<\/strong> Aktif bir DigitalOcean hesab\u0131n\u0131z olmal\u0131.<br \/>\n*   <strong>DigitalOcean Kubernetes K\u00fcmesi (DOKS):<\/strong> DigitalOcean \u00fczerinde \u00e7al\u0131\u015fan bir Kubernetes k\u00fcmeniz olmal\u0131. E\u011fer yoksa, DigitalOcean kontrol panelinden kolayca olu\u015fturabilirsiniz.<br \/>\n*   <strong><code>kubectl<\/code> Kurulumu:<\/strong> Kubernetes k\u00fcmenizle etkile\u015fim kurmak i\u00e7in yerel makinenizde <code>kubectl<\/code> komut sat\u0131r\u0131 arac\u0131n\u0131n kurulu ve yap\u0131land\u0131r\u0131lm\u0131\u015f olmas\u0131 gerekir. K\u00fcme yap\u0131land\u0131rma dosyas\u0131n\u0131 (kubeconfig) DigitalOcean kontrol panelinden indirerek <code>kubectl<\/code>&#8216;i k\u00fcmenize ba\u011flayabilirsiniz.<br \/>\n*   <strong><code>helm<\/code> Kurulumu:<\/strong> Kubernetes uygulamalar\u0131n\u0131 y\u00f6netmek i\u00e7in bir paket y\u00f6neticisi olan Helm&#8217;in yerel makinenizde kurulu olmas\u0131 gerekmektedir. Helm 3 s\u00fcr\u00fcm\u00fc \u00f6nerilir.<br \/>\n*   <strong>Alan Ad\u0131 (Domain Name):<\/strong> Uygulamalar\u0131n\u0131za eri\u015fmek i\u00e7in kullanaca\u011f\u0131n\u0131z bir alan ad\u0131na sahip olman\u0131z ve bu alan ad\u0131n\u0131n DNS kay\u0131tlar\u0131n\u0131 y\u00f6netebiliyor olman\u0131z gerekmektedir. Bu rehberde <code>example.com<\/code> gibi bir alan ad\u0131 kullanaca\u011f\u0131z, siz kendi alan ad\u0131n\u0131z\u0131 kullanmal\u0131s\u0131n\u0131z.<br \/>\n*   <strong><code>doctl<\/code> (\u0130ste\u011fe Ba\u011fl\u0131):<\/strong> DigitalOcean API ile etkile\u015fim kurmak i\u00e7in <code>doctl<\/code> komut sat\u0131r\u0131 arac\u0131 iste\u011fe ba\u011fl\u0131d\u0131r ancak baz\u0131 i\u015flemleri kolayla\u015ft\u0131rabilir.<\/p>\n<h3>DigitalOcean Kubernetes K\u00fcmesi Olu\u015fturma (K\u0131sa Bak\u0131\u015f)<\/h3>\n<p>E\u011fer hen\u00fcz bir DOKS k\u00fcmeniz yoksa, DigitalOcean kontrol paneli \u00fczerinden veya <code>doctl<\/code> CLI arac\u0131yla kolayca olu\u015fturabilirsiniz.<\/p>\n<p><strong>DigitalOcean Kontrol Paneli \u00dczerinden:<\/strong><br \/>\n1.  DigitalOcean hesab\u0131n\u0131za giri\u015f yap\u0131n.<br \/>\n2.  Sol men\u00fcden &#8220;Kubernetes&#8221; se\u00e7ene\u011fine t\u0131klay\u0131n.<br \/>\n3.  &#8220;Create Kubernetes Cluster&#8221; butonuna t\u0131klay\u0131n.<br \/>\n4.  B\u00f6lge, Kubernetes s\u00fcr\u00fcm\u00fc, node havuzu boyutlar\u0131 ve say\u0131s\u0131n\u0131 se\u00e7erek k\u00fcmenizi olu\u015fturun.<\/p>\n<p><strong><code>doctl<\/code> CLI ile:<\/strong><\/p>\n<pre><code class=\"language-bash\">doctl kubernetes cluster create <cluster-name> \\\n  --region <region> \\\n  --version <kubernetes-version> \\\n  --node-pool \"name=worker-pool;size=<droplet-size>;count=<node-count>\"<\/code><\/pre>\n<p>K\u00fcme olu\u015fturulduktan sonra, kubeconfig dosyas\u0131n\u0131 indirip <code>~\/.kube\/config<\/code> dizinine yerle\u015ftirerek <code>kubectl<\/code>&#8216;i yap\u0131land\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">doctl kubernetes cluster kubeconfig save <cluster-name><\/code><\/pre>\n<p>K\u00fcmenizin \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 do\u011frulamak i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">kubectl get nodes<\/code><\/pre>\n<h3>Nginx Ingress Controller Kurulumu<\/h3>\n<p>Nginx Ingress Controller, gelen trafi\u011fi Kubernetes servislerinize y\u00f6nlendirmek i\u00e7in temel bile\u015fendir. Helm kullanarak kurulumu olduk\u00e7a basittir.<\/p>\n<h4>1. Helm Repository Ekleme<\/h4>\n<p>\u00d6ncelikle Nginx Ingress Controller&#8217;\u0131n Helm repository&#8217;sini eklememiz gerekiyor:<\/p>\n<pre><code class=\"language-bash\">helm repo add ingress-nginx https:\/\/kubernetes.github.io\/ingress-nginx\nhelm repo update<\/code><\/pre>\n<h4>2. Nginx Ingress Controller&#8217;\u0131 Kurma<\/h4>\n<p>\u015eimdi Ingress Controller&#8217;\u0131 <code>ingress-nginx<\/code> ad\u0131nda ayr\u0131 bir namespace&#8217;e kural\u0131m. DigitalOcean Kubernetes&#8217;te Ingress Controller&#8217;\u0131 bir <code>LoadBalancer<\/code> tipi servis olarak da\u011f\u0131tt\u0131\u011f\u0131m\u0131zda, DigitalOcean otomatik olarak bir Load Balancer (Y\u00fck Dengeleyici) olu\u015fturur ve bu Load Balancer&#8217;a bir genel IP adresi atar. Bu IP adresi, uygulamalar\u0131n\u0131za d\u0131\u015far\u0131dan eri\u015fim i\u00e7in kullan\u0131lacakt\u0131r.<\/p>\n<pre><code class=\"language-bash\">helm install nginx-ingress ingress-nginx\/ingress-nginx \\\n  --namespace ingress-nginx --create-namespace \\\n  --set controller.service.type=LoadBalancer \\\n  --set controller.service.externalTrafficPolicy=Local<\/code><\/pre>\n<p>*   <code>--namespace ingress-nginx --create-namespace<\/code>: Ingress Controller&#8217;\u0131 <code>ingress-nginx<\/code> ad\u0131nda bir namespace&#8217;e kurar ve e\u011fer yoksa bu namespace&#8217;i olu\u015fturur.<br \/>\n*   <code>--set controller.service.type=LoadBalancer<\/code>: Bu ayar, DigitalOcean&#8217;da otomatik olarak bir Load Balancer olu\u015fturulmas\u0131n\u0131 sa\u011flar.<br \/>\n*   <code>--set controller.service.externalTrafficPolicy=Local<\/code>: Bu ayar, istemci kaynak IP adresinin korunmas\u0131na yard\u0131mc\u0131 olur ve trafi\u011fi yaln\u0131zca Ingress Controller&#8217;\u0131n \u00e7al\u0131\u015ft\u0131\u011f\u0131 d\u00fc\u011f\u00fcmlere y\u00f6nlendirir.<\/p>\n<h4>3. Kurulumu Do\u011frulama ve Load Balancer IP Adresini Alma<\/h4>\n<p>Ingress Controller&#8217;\u0131n ba\u015far\u0131yla da\u011f\u0131t\u0131ld\u0131\u011f\u0131n\u0131 ve DigitalOcean Load Balancer&#8217;\u0131n olu\u015fturuldu\u011funu do\u011frulamak i\u00e7in servisleri kontrol edin:<\/p>\n<pre><code class=\"language-bash\">kubectl get svc -n ingress-nginx<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131 a\u015fa\u011f\u0131daki gibi olacakt\u0131r:<\/p>\n<pre><code class=\"language-\">NAME                           TYPE           CLUSTER-IP      EXTERNAL-IP    PORT(S)                      AGE\nnginx-ingress-controller       LoadBalancer   10.245.X.Y      XXX.XXX.XXX.XXX   80:31448\/TCP,443:32402\/TCP   2m\nnginx-ingress-defaultbackend   ClusterIP      10.245.A.B      <none>         80\/TCP                       2m<\/code><\/pre>\n<p><code>nginx-ingress-controller<\/code> servisinin <code>EXTERNAL-IP<\/code> s\u00fctununda g\u00f6rd\u00fc\u011f\u00fcn\u00fcz IP adresi, DigitalOcean Load Balancer&#8217;\u0131n\u0131z\u0131n genel IP adresidir. Bu IP adresini bir yere not edin.<\/p>\n<h4>4. DNS Kayd\u0131 Olu\u015fturma<\/h4>\n<p>Uygulamalar\u0131n\u0131za alan ad\u0131n\u0131z \u00fczerinden eri\u015febilmek i\u00e7in, alan ad\u0131n\u0131z\u0131n DNS kay\u0131tlar\u0131nda bir <code>A<\/code> kayd\u0131 olu\u015fturman\u0131z gerekmektedir. Bu <code>A<\/code> kayd\u0131n\u0131, yukar\u0131da elde etti\u011finiz <code>EXTERNAL-IP<\/code> adresine i\u015faret etmelisiniz.<\/p>\n<p>\u00d6rne\u011fin, <code>app.example.com<\/code> adresi \u00fczerinden uygulaman\u0131za eri\u015fmek istiyorsan\u0131z, DNS sa\u011flay\u0131c\u0131n\u0131z\u0131n kontrol panelinde a\u015fa\u011f\u0131daki gibi bir kay\u0131t olu\u015fturmal\u0131s\u0131n\u0131z:<br \/>\n*   <strong>Type:<\/strong> <code>A<\/code><br \/>\n*   <strong>Host:<\/strong> <code>app<\/code> (veya <code>@<\/code> e\u011fer ana alan ad\u0131n\u0131 kullanacaksan\u0131z)<br \/>\n*   <strong>Value:<\/strong> <code>XXX.XXX.XXX.XXX<\/code> (Load Balancer&#8217;\u0131n\u0131z\u0131n EXTERNAL-IP adresi)<br \/>\n*   <strong>TTL:<\/strong> (Genellikle varsay\u0131lan de\u011fer b\u0131rak\u0131labilir, \u00f6rne\u011fin 3600 saniye)<\/p>\n<p>DNS de\u011fi\u015fikliklerinin internet genelinde yay\u0131lmas\u0131 biraz zaman alabilir (genellikle birka\u00e7 dakika ila birka\u00e7 saat).<\/p>\n<h3>Cert-Manager Kurulumu<\/h3>\n<p>Nginx Ingress Controller trafi\u011fi y\u00f6nlendirecek olsa da, HTTPS trafi\u011fi i\u00e7in SSL\/TLS sertifikalar\u0131na ihtiyac\u0131m\u0131z var. Cert-Manager, bu sertifikalar\u0131 otomatik olarak y\u00f6netecek ve yenileyecektir.<\/p>\n<h4>1. Helm Repository Ekleme<\/h4>\n<p>Cert-Manager&#8217;\u0131n Helm repository&#8217;sini ekleyin:<\/p>\n<pre><code class=\"language-bash\">helm repo add jetstack https:\/\/charts.jetstack.io\nhelm repo update<\/code><\/pre>\n<h4>2. Cert-Manager&#8217;\u0131 Kurma<\/h4>\n<p>Cert-Manager&#8217;\u0131 <code>cert-manager<\/code> ad\u0131nda ayr\u0131 bir namespace&#8217;e kural\u0131m. Kurulum s\u0131ras\u0131nda CRD&#8217;leri (Custom Resource Definitions) de y\u00fcklemesini sa\u011flamak \u00f6nemlidir.<\/p>\n<pre><code class=\"language-bash\">helm install cert-manager jetstack\/cert-manager \\\n  --namespace cert-manager --create-namespace \\\n  --version v1.13.1 \\\n  --set installCRDs=true<\/code><\/pre>\n<p>*   <code>--version v1.13.1<\/code>: Belirli bir Cert-Manager s\u00fcr\u00fcm\u00fcn\u00fc y\u00fcklemenizi sa\u011flar. En g\u00fcncel kararl\u0131 s\u00fcr\u00fcm\u00fc kullanmak iyi bir pratiktir.<br \/>\n*   <code>--set installCRDs=true<\/code>: Cert-Manager&#8217;\u0131n \u00e7al\u0131\u015fmas\u0131 i\u00e7in gerekli olan Custom Resource Definitions&#8217;\u0131 (Issuer, Certificate, CertificateRequest vb.) kurar.<\/p>\n<h4>3. Kurulumu Do\u011frulama<\/h4>\n<p>Cert-Manager&#8217;\u0131n t\u00fcm bile\u015fenlerinin \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 do\u011frulamak i\u00e7in pod&#8217;lar\u0131 kontrol edin:<\/p>\n<pre><code class=\"language-bash\">kubectl get pods -n cert-manager<\/code><\/pre>\n<p>T\u00fcm pod&#8217;lar\u0131n <code>Running<\/code> durumunda olmas\u0131 gerekir:<\/p>\n<pre><code class=\"language-\">NAME                                       READY   STATUS    RESTARTS   AGE\ncert-manager-5d465c87f4-xxxxx              1\/1     Running   0          2m\ncert-manager-cainjector-78c4d76c6d-yyyyy   1\/1     Running   0          2m\ncert-manager-webhook-7d77b878b-zzzzz       1\/1     Running   0          2m<\/code><\/pre>\n<h3>Issuer ve ClusterIssuer Konfig\u00fcrasyonu<\/h3>\n<p>Cert-Manager, sertifikalar\u0131 d\u00fczenlemek i\u00e7in <code>Issuer<\/code> veya <code>ClusterIssuer<\/code> kaynaklar\u0131n\u0131 kullan\u0131r. <code>Issuer<\/code>, sertifikalar\u0131 belirli bir namespace i\u00e7inde d\u00fczenlerken, <code>ClusterIssuer<\/code> k\u00fcme genelinde sertifika d\u00fczenleyebilir. Genellikle <code>ClusterIssuer<\/code> tercih edilir, b\u00f6ylece farkl\u0131 namespace&#8217;lerdeki uygulamalar ayn\u0131 sertifika sa\u011flay\u0131c\u0131y\u0131 kullanabilir. Let&#8217;s Encrypt ile \u00e7al\u0131\u015faca\u011f\u0131m\u0131z i\u00e7in <code>ClusterIssuer<\/code> kullanaca\u011f\u0131z.<\/p>\n<p>\u00d6nce Let&#8217;s Encrypt&#8217;in &#8220;staging&#8221; ortam\u0131n\u0131 kullanarak sertifika almay\u0131 denemek iyi bir uygulamad\u0131r. Bu, Let&#8217;s Encrypt&#8217;in &#8220;rate limit&#8221;lerine tak\u0131lmadan yap\u0131land\u0131rman\u0131z\u0131 test etmenizi sa\u011flar.<\/p>\n<h4>1. Let&#8217;s Encrypt Staging ClusterIssuer Olu\u015fturma<\/h4>\n<p><code>letsencrypt-staging-clusterissuer.yaml<\/code> ad\u0131nda bir dosya olu\u015fturun:<\/p>\n<pre><code class=\"language-yaml\">apiVersion: cert-manager.io\/v1\nkind: ClusterIssuer\nmetadata:\n  name: letsencrypt-staging\nspec:\n  acme:\n    # E-posta adresinizi buraya girin. Let's Encrypt size sertifika yenileme bildirimlerini g\u00f6nderecektir.\n    email: your-email@example.com\n    server: https:\/\/acme-staging-v02.api.letsencrypt.org\/directory\n    privateKeySecretRef:\n      # ACME hesab\u0131n\u0131z\u0131n \u00f6zel anahtar\u0131n\u0131n saklanaca\u011f\u0131 Kubernetes Secret ad\u0131.\n      name: letsencrypt-staging-private-key\n    solvers:\n    - http01:\n        ingress:\n          class: nginx<\/code><\/pre>\n<p>*   <code>email<\/code>: Kendi e-posta adresinizi girmeniz zorunludur.<br \/>\n*   <code>server<\/code>: Let&#8217;s Encrypt&#8217;in staging (test) ortam\u0131n\u0131n URL&#8217;si.<br \/>\n*   <code>privateKeySecretRef<\/code>: ACME hesab\u0131n\u0131z\u0131n \u00f6zel anahtar\u0131n\u0131n saklanaca\u011f\u0131 Secret&#8217;\u0131n ad\u0131.<br \/>\n*   <code>solvers<\/code>: Cert-Manager&#8217;\u0131n alan ad\u0131 sahipli\u011fini nas\u0131l do\u011frulayaca\u011f\u0131n\u0131 belirtir. <code>http01<\/code> challenge tipi, Ingress Controller \u00fczerinden ge\u00e7ici bir web sunucusu ba\u015flatarak do\u011frulamay\u0131 yapar. <code>ingress.class: nginx<\/code> ise Nginx Ingress Controller&#8217;\u0131 kullanaca\u011f\u0131m\u0131z\u0131 belirtir.<\/p>\n<p>Bu dosyay\u0131 uygulay\u0131n:<\/p>\n<pre><code class=\"language-bash\">kubectl apply -f letsencrypt-staging-clusterissuer.yaml<\/code><\/pre>\n<h4>2. Let&#8217;s Encrypt Production ClusterIssuer Olu\u015fturma<\/h4>\n<p>Staging ortam\u0131nda testleriniz ba\u015far\u0131l\u0131 oldu\u011funda, \u00fcretim ortam\u0131 i\u00e7in <code>ClusterIssuer<\/code>&#8216;\u0131 olu\u015fturabilirsiniz. <code>letsencrypt-production-clusterissuer.yaml<\/code> ad\u0131nda bir dosya olu\u015fturun:<\/p>\n<pre><code class=\"language-yaml\">apiVersion: cert-manager.io\/v1\nkind: ClusterIssuer\nmetadata:\n  name: letsencrypt-production\nspec:\n  acme:\n    # E-posta adresinizi buraya girin. Let's Encrypt size sertifika yenileme bildirimlerini g\u00f6nderecektir.\n    email: your-email@example.com\n    server: https:\/\/acme-v02.api.letsencrypt.org\/directory\n    privateKeySecretRef:\n      # ACME hesab\u0131n\u0131z\u0131n \u00f6zel anahtar\u0131n\u0131n saklanaca\u011f\u0131 Kubernetes Secret ad\u0131.\n      name: letsencrypt-production-private-key\n    solvers:\n    - http01:\n        ingress:\n          class: nginx<\/code><\/pre>\n<p>Tek fark <code>server<\/code> URL&#8217;sinin <code>https:\/\/acme-v02.api.letsencrypt.org\/directory<\/code> olmas\u0131d\u0131r.<\/p>\n<p>Bu dosyay\u0131 uygulay\u0131n:<\/p>\n<pre><code class=\"language-bash\">kubectl apply -f letsencrypt-production-clusterissuer.yaml<\/code><\/pre>\n<p><code>ClusterIssuer<\/code>&#8216;lar\u0131n\u0131z\u0131n durumunu kontrol edebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">kubectl get clusterissuers<\/code><\/pre>\n<p>Durumlar\u0131 <code>Ready<\/code> olarak g\u00f6r\u00fcnmelidir.<\/p>\n<h3>\u00d6rnek Bir Uygulama Da\u011f\u0131tma<\/h3>\n<p>\u015eimdi Nginx Ingress Controller ve Cert-Manager&#8217;\u0131 test etmek i\u00e7in basit bir uygulama da\u011f\u0131tal\u0131m. Bu, &#8220;Hello World&#8221; benzeri bir Nginx web sunucusu olacakt\u0131r.<\/p>\n<h4>1. Nginx Deployment Olu\u015fturma<\/h4>\n<p><code>nginx-deployment.yaml<\/code> ad\u0131nda bir dosya olu\u015fturun:<\/p>\n<pre><code class=\"language-yaml\">apiVersion: apps\/v1\nkind: Deployment\nmetadata:\n  name: nginx-example\n  labels:\n    app: nginx-example\nspec:\n  replicas: 2\n  selector:\n    matchLabels:\n      app: nginx-example\n  template:\n    metadata:\n      labels:\n        app: nginx-example\n    spec:\n      containers:\n      - name: nginx\n        image: nginx:latest\n        ports:\n        - containerPort: 80<\/code><\/pre>\n<p>Bu da\u011f\u0131t\u0131m, <code>nginx:latest<\/code> imaj\u0131n\u0131 kullanarak iki adet Nginx pod&#8217;u olu\u015fturur.<\/p>\n<h4>2. Nginx Service Olu\u015fturma<\/h4>\n<p>Bu pod&#8217;lara eri\u015fimi sa\u011flamak i\u00e7in bir <code>ClusterIP<\/code> tipi servis olu\u015ftural\u0131m. <code>nginx-service.yaml<\/code> ad\u0131nda bir dosya olu\u015fturun:<\/p>\n<pre><code class=\"language-yaml\">apiVersion: v1\nkind: Service\nmetadata:\n  name: nginx-example-service\nspec:\n  selector:\n    app: nginx-example\n  ports:\n    - protocol: TCP\n      port: 80\n      targetPort: 80\n  type: ClusterIP<\/code><\/pre>\n<p>Bu servis, <code>app: nginx-example<\/code> etiketine sahip pod&#8217;lara gelen trafi\u011fi 80 numaral\u0131 porttan y\u00f6nlendirecektir.<\/p>\n<p>Her iki dosyay\u0131 da uygulay\u0131n:<\/p>\n<pre><code class=\"language-bash\">kubectl apply -f nginx-deployment.yaml\nkubectl apply -f nginx-service.yaml<\/code><\/pre>\n<p>Uygulaman\u0131z\u0131n \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 do\u011frulamak i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">kubectl get pods -l app=nginx-example\nkubectl get svc nginx-example-service<\/code><\/pre>\n<h3>Ingress Kayna\u011f\u0131 Olu\u015fturma<\/h3>\n<p>\u015eimdi Nginx Ingress Controller&#8217;\u0131, <code>app.example.com<\/code> adresinden gelen trafi\u011fi <code>nginx-example-service<\/code>&#8216;e y\u00f6nlendirmesi ve Cert-Manager&#8217;\u0131 kullanarak bu alan ad\u0131 i\u00e7in otomatik olarak bir SSL sertifikas\u0131 almas\u0131 i\u00e7in yap\u0131land\u0131raca\u011f\u0131z.<\/p>\n<p><code>nginx-ingress.yaml<\/code> ad\u0131nda bir dosya olu\u015fturun:<\/p>\n<pre><code class=\"language-yaml\">apiVersion: networking.k8s.io\/v1\nkind: Ingress\nmetadata:\n  name: nginx-example-ingress\n  annotations:\n    # Cert-Manager'a bu Ingress i\u00e7in sertifika vermesini s\u00f6yleyen annotation\n    cert-manager.io\/cluster-issuer: letsencrypt-production # Veya letsencrypt-staging\n    # Nginx Ingress Controller i\u00e7in baz\u0131 ayarlar (iste\u011fe ba\u011fl\u0131)\n    nginx.ingress.kubernetes.io\/ssl-redirect: \"true\" # T\u00fcm HTTP isteklerini HTTPS'ye y\u00f6nlendirir\n    nginx.ingress.kubernetes.io\/force-ssl-redirect: \"true\"\nspec:\n  ingressClassName: nginx # Nginx Ingress Controller'\u0131 kullanaca\u011f\u0131m\u0131z\u0131 belirtir\n  rules:\n  - host: app.example.com # Kendi alan ad\u0131n\u0131z\u0131 buraya girin\n    http:\n      paths:\n      - path: \/\n        pathType: Prefix\n        backend:\n          service:\n            name: nginx-example-service\n            port:\n              number: 80\n  tls:\n  - hosts:\n    - app.example.com # Kendi alan ad\u0131n\u0131z\u0131 buraya girin\n    secretName: nginx-example-tls # Sertifikan\u0131n saklanaca\u011f\u0131 Kubernetes Secret ad\u0131<\/code><\/pre>\n<p>*   <code>cert-manager.io\/cluster-issuer: letsencrypt-production<\/code>: Cert-Manager&#8217;a, <code>letsencrypt-production<\/code> adl\u0131 <code>ClusterIssuer<\/code>&#8216;\u0131 kullanarak bu Ingress i\u00e7in bir sertifika almas\u0131n\u0131 s\u00f6yler. \u0130lk testleriniz i\u00e7in <code>letsencrypt-staging<\/code> kullanmay\u0131 unutmay\u0131n.<br \/>\n*   <code>nginx.ingress.kubernetes.io\/ssl-redirect: \"true\"<\/code>: HTTP \u00fczerinden gelen t\u00fcm istekleri otomatik olarak HTTPS&#8217;ye y\u00f6nlendirir.<br \/>\n*   <code>ingressClassName: nginx<\/code>: Kubernetes 1.18 ve sonras\u0131 i\u00e7in \u00f6nerilen Ingress Controller s\u0131n\u0131f\u0131n\u0131 belirtir.<br \/>\n*   <code>host: app.example.com<\/code>: Uygulaman\u0131za eri\u015fmek i\u00e7in kullanaca\u011f\u0131n\u0131z alan ad\u0131d\u0131r. Kendi alan ad\u0131n\u0131zla de\u011fi\u015ftirin.<br \/>\n*   <code>backend<\/code>: Gelen trafi\u011fin y\u00f6nlendirilece\u011fi Kubernetes servisini belirtir.<br \/>\n*   <code>tls<\/code>: Bu b\u00f6l\u00fcm, Cert-Manager&#8217;\u0131n sertifika almas\u0131n\u0131 ve bu sertifikay\u0131 belirtilen <code>secretName<\/code> alt\u0131nda saklamas\u0131n\u0131 sa\u011flar. Ingress Controller bu secret&#8217;\u0131 kullanarak SSL sonland\u0131rmas\u0131 yapacakt\u0131r.<\/p>\n<p>Bu Ingress kayna\u011f\u0131n\u0131 uygulay\u0131n:<\/p>\n<pre><code class=\"language-bash\">kubectl apply -f nginx-ingress.yaml<\/code><\/pre>\n<h4>Sertifika Talebi ve Durumunu \u0130zleme<\/h4>\n<p>Ingress kayna\u011f\u0131n\u0131 uygulad\u0131ktan sonra Cert-Manager otomatik olarak bir <code>Certificate<\/code> nesnesi olu\u015fturacak ve Let&#8217;s Encrypt&#8217;ten sertifika talebinde bulunacakt\u0131r. Bu s\u00fcreci izleyebilirsiniz:<\/p>\n<pre><code class=\"language-bash\"># Olu\u015fturulan Certificate nesnesini g\u00f6r\u00fcnt\u00fcle\nkubectl get certificate -n default # Uygulaman\u0131z\u0131n ve Ingress'inizin oldu\u011fu namespace\n\n<h2>Certificate nesnesinin detaylar\u0131n\u0131 incele (olas\u0131 hatalar i\u00e7in)<\/h2>\nkubectl describe certificate nginx-example-tls -n default\n\n<h2>Cert-Manager'\u0131n loglar\u0131n\u0131 kontrol et (sorun giderme i\u00e7in)<\/h2>\nkubectl logs -n cert-manager deploy\/cert-manager-5d465c87f4-xxxxx # Kendi pod ad\u0131n\u0131zla de\u011fi\u015ftirin<\/code><\/pre>\n<p>Sertifika ba\u015far\u0131yla al\u0131nd\u0131\u011f\u0131nda, <code>kubectl get certificate<\/code> \u00e7\u0131kt\u0131s\u0131nda <code>READY<\/code> s\u00fctunu <code>True<\/code> olmal\u0131 ve <code>SECRET<\/code> s\u00fctununda <code>nginx-example-tls<\/code> secret&#8217;\u0131n\u0131n ad\u0131 g\u00f6r\u00fcnmelidir.<\/p>\n<h3>Test ve Do\u011frulama<\/h3>\n<p>Her \u015fey yolunda gittiyse, \u015fimdi taray\u0131c\u0131n\u0131zdan <code>https:\/\/app.example.com<\/code> (kendi alan ad\u0131n\u0131zla de\u011fi\u015ftirin) adresine giderek uygulaman\u0131za eri\u015febilmelisiniz.<\/p>\n<p>*   Taray\u0131c\u0131n\u0131zda bir kilit simgesi g\u00f6rmelisiniz, bu da HTTPS ba\u011flant\u0131s\u0131n\u0131n g\u00fcvenli oldu\u011funu g\u00f6sterir.<br \/>\n*   Kilit simgesine t\u0131klayarak sertifika detaylar\u0131n\u0131 inceleyebilir ve Let&#8217;s Encrypt taraf\u0131ndan verildi\u011fini do\u011frulayabilirsiniz.<br \/>\n*   HTTP \u00fczerinden (<code>http:\/\/app.example.com<\/code>) eri\u015fmeye \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131zda otomatik olarak HTTPS&#8217;ye y\u00f6nlendirildi\u011finizi g\u00f6rmelisiniz.<\/p>\n<h3>S\u0131k Kar\u015f\u0131la\u015f\u0131lan Sorunlar ve \u00c7\u00f6z\u00fcmleri<\/h3>\n<p>Kurulum s\u00fcrecinde baz\u0131 sorunlarla kar\u015f\u0131la\u015fman\u0131z olas\u0131d\u0131r. \u0130\u015fte yayg\u0131n sorunlar ve \u00e7\u00f6z\u00fcm ipu\u00e7lar\u0131:<\/p>\n<p>*   <strong>DNS Yay\u0131l\u0131m\u0131 Sorunlar\u0131:<\/strong> Alan ad\u0131n\u0131z\u0131n <code>EXTERNAL-IP<\/code> adresine do\u011fru \u015fekilde i\u015faret etti\u011finden emin olun. DNS de\u011fi\u015fikliklerinin tam olarak yay\u0131lmas\u0131 biraz zaman alabilir. <code>dig app.example.com<\/code> veya <code>nslookup app.example.com<\/code> komutlar\u0131yla DNS \u00e7\u00f6z\u00fcmlemesini kontrol edin.<br \/>\n*   <strong>Cert-Manager Sertifika Alam\u0131yor:<\/strong><br \/>\n    *   <code>kubectl describe certificate <certificate-name><\/code> komutunun \u00e7\u0131kt\u0131s\u0131n\u0131 inceleyin. Genellikle burada hatan\u0131n nedeni belirtilir.<br \/>\n    *   <code>kubectl logs -n cert-manager deploy\/cert-manager-<pod-name><\/code> komutuyla Cert-Manager pod&#8217;unun loglar\u0131n\u0131 kontrol edin.<br \/>\n    *   <code>ClusterIssuer<\/code> yap\u0131land\u0131rman\u0131zdaki e-posta adresinin do\u011fru oldu\u011fundan emin olun.<br \/>\n    *   <code>http01<\/code> challenge i\u00e7in Ingress Controller&#8217;\u0131n\u0131z\u0131n do\u011fru \u015fekilde \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan ve 80 numaral\u0131 porttan eri\u015filebilir oldu\u011fundan emin olun.<br \/>\n    *   Let&#8217;s Encrypt&#8217;in &#8220;rate limit&#8221;lerine tak\u0131lmamak i\u00e7in \u00f6nce <code>staging<\/code> ortam\u0131n\u0131 kulland\u0131\u011f\u0131n\u0131zdan emin olun.<br \/>\n*   <strong>Ingress Controller Trafi\u011fi Y\u00f6nlendirmiyor:<\/strong><br \/>\n    *   <code>kubectl get ingress<\/code> komutuyla Ingress&#8217;inizin durumunu kontrol edin.<br \/>\n    *   <code>kubectl describe ingress <ingress-name><\/code> komutunun \u00e7\u0131kt\u0131s\u0131n\u0131 inceleyin. Kurallar\u0131n do\u011fru servislere i\u015faret etti\u011finden emin olun.<br \/>\n    *   Nginx Ingress Controller pod&#8217;unun loglar\u0131n\u0131 kontrol edin: <code>kubectl logs -n ingress-nginx deploy\/nginx-ingress-controller-<pod-name><\/code>.<br \/>\n    *   <code>ingressClassName: nginx<\/code> tan\u0131m\u0131n\u0131n do\u011fru oldu\u011fundan ve Nginx Ingress Controller&#8217;\u0131n bu s\u0131n\u0131f\u0131 kulland\u0131\u011f\u0131ndan emin olun.<br \/>\n*   <strong>Yanl\u0131\u015f <code>ClusterIssuer<\/code> Kullan\u0131m\u0131:<\/strong> Ingress tan\u0131m\u0131n\u0131zdaki <code>cert-manager.io\/cluster-issuer<\/code> annotation&#8217;\u0131n\u0131n, olu\u015fturdu\u011funuz <code>ClusterIssuer<\/code>&#8216;\u0131n <code>name<\/code> alan\u0131yla tam olarak e\u015fle\u015fti\u011finden emin olun.<\/p>\n<h3>Geli\u015fmi\u015f Konfig\u00fcrasyonlar (K\u0131saca)<\/h3>\n<p>Bu rehber temel bir kurulumu kapsasa da, Nginx Ingress ve Cert-Manager daha geli\u015fmi\u015f senaryolar i\u00e7in de kullan\u0131labilir:<\/p>\n<p><em>   <strong>Wildcard Sertifikalar (DNS-01 Challenge):<\/strong> <code><\/em>.example.com<\/code> gibi wildcard sertifikalar almak i\u00e7in Cert-Manager&#8217;\u0131n DNS-01 challenge y\u00f6ntemini kullanman\u0131z gerekir. Bu, genellikle DNS sa\u011flay\u0131c\u0131n\u0131z\u0131n API&#8217;si ile entegrasyon gerektirir (DigitalOcean DNS i\u00e7in Cert-Manager&#8217;\u0131n DigitalOcean DNS webhook&#8217;u kullan\u0131labilir).<br \/>\n*   <strong>Farkl\u0131 Ingress Controller Se\u00e7enekleri:<\/strong> Kubernetes ekosisteminde Nginx d\u0131\u015f\u0131nda Contour, Traefik, HAProxy gibi farkl\u0131 Ingress Controller&#8217;lar da mevcuttur. \u0130htiya\u00e7lar\u0131n\u0131za g\u00f6re farkl\u0131 birini se\u00e7ebilirsiniz.<br \/>\n*   <strong>GitOps Yakla\u015f\u0131mlar\u0131:<\/strong> T\u00fcm Kubernetes kaynaklar\u0131n\u0131z\u0131 (Deployment, Service, Ingress, Issuer vb.) Git repolar\u0131nda tutarak ve Argo CD veya Flux CD gibi ara\u00e7larla otomatik olarak senkronize ederek GitOps prensiplerini uygulayabilirsiniz.<br \/>\n*   <strong>Daha Fazla Ingress Kural\u0131:<\/strong> Tek bir Ingress kayna\u011f\u0131 alt\u0131nda birden fazla host veya yol tabanl\u0131 kural tan\u0131mlayarak farkl\u0131 uygulamalar\u0131 veya ayn\u0131 uygulaman\u0131n farkl\u0131 b\u00f6l\u00fcmlerini y\u00f6nlendirebilirsiniz.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Bu kapsaml\u0131 rehberde, DigitalOcean Kubernetes \u00fczerinde Nginx Ingress Controller ve Cert-Manager&#8217;\u0131 ba\u015far\u0131yla kurmay\u0131 ve yap\u0131land\u0131rmay\u0131 \u00f6\u011frendiniz. Art\u0131k uygulamalar\u0131n\u0131z\u0131 d\u0131\u015f d\u00fcnyaya g\u00fcvenli ve verimli bir \u015fekilde a\u00e7abilir, trafi\u011fi y\u00f6nlendirebilir ve Let&#8217;s Encrypt ile otomatik olarak SSL\/TLS sertifikalar\u0131 al\u0131p yenileyebilirsiniz. Bu entegrasyon, Kubernetes tabanl\u0131 uygulamalar\u0131n\u0131z i\u00e7in g\u00fcvenilir, otomatik ve \u00f6l\u00e7eklenebilir bir trafik y\u00f6netimi ve g\u00fcvenlik altyap\u0131s\u0131 sa\u011flar.<\/p>\n<p>DigitalOcean Kubernetes&#8217;in sundu\u011fu kolayl\u0131klar sayesinde, karma\u015f\u0131k altyap\u0131 kurulumlar\u0131 yerine uygulama geli\u015ftirmeye odaklanabilir ve modern bulut yerel mimarilerin t\u00fcm avantajlar\u0131ndan faydalanabilirsiniz. Bu yetenekler, \u00fcretim ortam\u0131nda \u00e7al\u0131\u015fan uygulamalar i\u00e7in temel bir gereklilik olup, geli\u015ftiricilerin ve operasyon ekiplerinin i\u015f y\u00fck\u00fcn\u00fc \u00f6nemli \u00f6l\u00e7\u00fcde azaltmaktad\u0131r. Gelecekte, daha geli\u015fmi\u015f trafik y\u00f6netimi ve g\u00fcvenlik senaryolar\u0131 i\u00e7in bu temel kurulumun \u00fczerine in\u015fa edebilirsiniz.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"DigitalOcean Kubernetes \u00dczerinde Nginx Ingress ve Cert-Manager Kurulumu: Kapsaml\u0131 Bir Rehber\nModern uygulama geli\u015ftirme ve da\u011f\u0131t\u0131m s\u00fcre\u00e7lerin","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":[1504],"tags":[],"class_list":{"0":"post-36616","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-nginx","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>DigitalOcean Kubernetes \u00dczerinde Nginx Ingress ve Cert-Manager Kurulumu: Kapsaml\u0131 Bir Rehber - 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\/digitalocean-kubernetes-uzerinde-nginx-ingress-ve-cert-manager-kurulumu-kapsamli-bir-rehber\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"DigitalOcean Kubernetes \u00dczerinde Nginx Ingress ve Cert-Manager Kurulumu: Kapsaml\u0131 Bir Rehber\" \/>\n<meta property=\"og:description\" content=\"DigitalOcean Kubernetes \u00dczerinde Nginx Ingress ve Cert-Manager Kurulumu: Kapsaml\u0131 Bir Rehber Modern uygulama geli\u015ftirme ve da\u011f\u0131t\u0131m s\u00fcre\u00e7lerin\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/digitalocean-kubernetes-uzerinde-nginx-ingress-ve-cert-manager-kurulumu-kapsamli-bir-rehber\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-20T14:40:43+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\/digitalocean-kubernetes-uzerinde-nginx-ingress-ve-cert-manager-kurulumu-kapsamli-bir-rehber\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/digitalocean-kubernetes-uzerinde-nginx-ingress-ve-cert-manager-kurulumu-kapsamli-bir-rehber\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"DigitalOcean Kubernetes \u00dczerinde Nginx Ingress ve Cert-Manager Kurulumu: Kapsaml\u0131 Bir Rehber\",\"datePublished\":\"2025-12-20T14:40:43+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/digitalocean-kubernetes-uzerinde-nginx-ingress-ve-cert-manager-kurulumu-kapsamli-bir-rehber\/\"},\"wordCount\":2301,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Nginx\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/digitalocean-kubernetes-uzerinde-nginx-ingress-ve-cert-manager-kurulumu-kapsamli-bir-rehber\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/digitalocean-kubernetes-uzerinde-nginx-ingress-ve-cert-manager-kurulumu-kapsamli-bir-rehber\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/digitalocean-kubernetes-uzerinde-nginx-ingress-ve-cert-manager-kurulumu-kapsamli-bir-rehber\/\",\"name\":\"DigitalOcean Kubernetes \u00dczerinde Nginx Ingress ve Cert-Manager Kurulumu: Kapsaml\u0131 Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-12-20T14:40:43+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/digitalocean-kubernetes-uzerinde-nginx-ingress-ve-cert-manager-kurulumu-kapsamli-bir-rehber\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/digitalocean-kubernetes-uzerinde-nginx-ingress-ve-cert-manager-kurulumu-kapsamli-bir-rehber\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/digitalocean-kubernetes-uzerinde-nginx-ingress-ve-cert-manager-kurulumu-kapsamli-bir-rehber\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"DigitalOcean Kubernetes \u00dczerinde Nginx Ingress ve Cert-Manager Kurulumu: Kapsaml\u0131 Bir Rehber\"}]},{\"@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":"DigitalOcean Kubernetes \u00dczerinde Nginx Ingress ve Cert-Manager Kurulumu: Kapsaml\u0131 Bir Rehber - 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\/digitalocean-kubernetes-uzerinde-nginx-ingress-ve-cert-manager-kurulumu-kapsamli-bir-rehber\/","og_locale":"tr_TR","og_type":"article","og_title":"DigitalOcean Kubernetes \u00dczerinde Nginx Ingress ve Cert-Manager Kurulumu: Kapsaml\u0131 Bir Rehber","og_description":"DigitalOcean Kubernetes \u00dczerinde Nginx Ingress ve Cert-Manager Kurulumu: Kapsaml\u0131 Bir Rehber Modern uygulama geli\u015ftirme ve da\u011f\u0131t\u0131m s\u00fcre\u00e7lerin","og_url":"https:\/\/fatihsoysal.com\/blog\/digitalocean-kubernetes-uzerinde-nginx-ingress-ve-cert-manager-kurulumu-kapsamli-bir-rehber\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-12-20T14:40:43+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\/digitalocean-kubernetes-uzerinde-nginx-ingress-ve-cert-manager-kurulumu-kapsamli-bir-rehber\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/digitalocean-kubernetes-uzerinde-nginx-ingress-ve-cert-manager-kurulumu-kapsamli-bir-rehber\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"DigitalOcean Kubernetes \u00dczerinde Nginx Ingress ve Cert-Manager Kurulumu: Kapsaml\u0131 Bir Rehber","datePublished":"2025-12-20T14:40:43+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/digitalocean-kubernetes-uzerinde-nginx-ingress-ve-cert-manager-kurulumu-kapsamli-bir-rehber\/"},"wordCount":2301,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Nginx"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/digitalocean-kubernetes-uzerinde-nginx-ingress-ve-cert-manager-kurulumu-kapsamli-bir-rehber\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/digitalocean-kubernetes-uzerinde-nginx-ingress-ve-cert-manager-kurulumu-kapsamli-bir-rehber\/","url":"https:\/\/fatihsoysal.com\/blog\/digitalocean-kubernetes-uzerinde-nginx-ingress-ve-cert-manager-kurulumu-kapsamli-bir-rehber\/","name":"DigitalOcean Kubernetes \u00dczerinde Nginx Ingress ve Cert-Manager Kurulumu: Kapsaml\u0131 Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-12-20T14:40:43+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/digitalocean-kubernetes-uzerinde-nginx-ingress-ve-cert-manager-kurulumu-kapsamli-bir-rehber\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/digitalocean-kubernetes-uzerinde-nginx-ingress-ve-cert-manager-kurulumu-kapsamli-bir-rehber\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/digitalocean-kubernetes-uzerinde-nginx-ingress-ve-cert-manager-kurulumu-kapsamli-bir-rehber\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"DigitalOcean Kubernetes \u00dczerinde Nginx Ingress ve Cert-Manager Kurulumu: Kapsaml\u0131 Bir Rehber"}]},{"@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\/36616","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=36616"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/36616\/revisions"}],"predecessor-version":[{"id":36617,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/36616\/revisions\/36617"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=36616"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=36616"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=36616"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}