{"id":1232,"date":"2022-09-21T07:01:38","date_gmt":"2022-09-21T07:01:38","guid":{"rendered":"https:\/\/sunucucozumleri.com\/?p=1232"},"modified":"2022-09-21T07:04:38","modified_gmt":"2022-09-21T07:04:38","slug":"kubernetes-nginx-controller-kurulumu-ve-ingress-kullanimi","status":"publish","type":"post","link":"https:\/\/sunucucozumleri.com\/blog\/kubernetes-nginx-controller-kurulumu-ve-ingress-kullanimi\/","title":{"rendered":"Kubernetes Nginx Controller Kurulumu ve Ingress Kullan\u0131m\u0131"},"content":{"rendered":"<p><em>Bu yaz\u0131mda, <a href=\"https:\/\/sunucucozumleri.com\/blog\/080-nginx-reverse-proxy-nasil-kurulur\/\">Nginx<\/a> ingress controller kullanarak Kubernetes\u2019de nas\u0131l ingress kullanca\u011f\u0131m\u0131z\u0131 ve trafi\u011fi joker karakter\u2019li DNS kayd\u0131 kullanarak deployment\u2019lara nas\u0131l y\u00f6nlendirece\u011finizi \u00f6\u011freneceksiniz.<\/em><\/p>\n<p>Kubernetes ingress\u2019in nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 anlamak istiyorsan\u0131z, l\u00fctfen\u00a0<a href=\"https:\/\/sunucucozumleri.com\/yeni-baslayanlar-icin-kubernetes-ingress-egitimi\/\">Yeni Ba\u015flayanlar \u0130\u00e7in Kubernetes Ingress E\u011fitimi<\/a>\u2019daki bu blog g\u00f6nderisini okuyun.<\/p>\n<p>\u0130\u015fte Nginx ingress controller kullanan Kubernetes ingress \u00f6rnek mimarisi<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-1234\" src=\"https:\/\/sunucucozumleri.com\/wp-content\/uploads\/2022\/09\/kubernetes-ingress-1.png\" alt=\"\" width=\"808\" height=\"840\" title=\"\" srcset=\"\/\/sunucucozumleri.com\/blog\/wp-content\/uploads\/2022\/09\/kubernetes-ingress-1.png 808w, \/\/sunucucozumleri.com\/blog\/wp-content\/uploads\/2022\/09\/kubernetes-ingress-1-289x300.png 289w, \/\/sunucucozumleri.com\/blog\/wp-content\/uploads\/2022\/09\/kubernetes-ingress-1-768x798.png 768w\" sizes=\"(max-width: 808px) 100vw, 808px\" \/><\/p>\n<p><strong>\u00d6n \u015fartlar:<\/strong><\/p>\n<ol>\n<li>Bir Kuberntes cluster.<\/li>\n<li>kubectl yard\u0131mc\u0131 program\u0131.<\/li>\n<li>Kubernetes cluster\u2019a y\u00f6netici eri\u015fimi.<\/li>\n<li>Ingress controller load balancer\u2019\u0131na i\u015faret etmek i\u00e7in ge\u00e7erli bir etki alan\u0131.<\/li>\n<\/ol>\n<p><strong>Not:<\/strong>\u00a0Bu e\u011fitici, AWS \u00fczerinde buluan bir kubernetes cluster\u2019\u0131nda denendi.\u00a0Mant\u0131ken t\u00fcm bulut ortamlar\u0131nda \u00e7al\u0131\u015fmal\u0131d\u0131r.\u00a0E\u011fer herhangi bir hatayla kar\u015f\u0131la\u015f\u0131rsan\u0131z, kurulumda baz\u0131 ayarlamalar yapman\u0131z gerekebilir.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Makale \u0130\u00e7eri\u011fi<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"\u0130\u00e7indekiler Tablosunu A\u00e7\/Kapat\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/sunucucozumleri.com\/blog\/kubernetes-nginx-controller-kurulumu-ve-ingress-kullanimi\/#Nginx_Ingress_Controller_Kurulumu\" >Nginx Ingress Controller Kurulumu<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/sunucucozumleri.com\/blog\/kubernetes-nginx-controller-kurulumu-ve-ingress-kullanimi\/#Ingress_controller_icin_LoadBalancer_serviceini_ayarlama\" >Ingress controller i\u00e7in LoadBalancer service\u2019ini ayarlama<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/sunucucozumleri.com\/blog\/kubernetes-nginx-controller-kurulumu-ve-ingress-kullanimi\/#Bir_Alan_Adini_Loadbalancer_IPsiyle_Esleme\" >Bir Alan Ad\u0131n\u0131 Loadbalancer IP\u2019siyle E\u015fleme<\/a><\/li><\/ul><\/nav><\/div>\n<h4><span class=\"ez-toc-section\" id=\"Nginx_Ingress_Controller_Kurulumu\"><\/span>Nginx Ingress Controller Kurulumu<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0130ki adet nginx ingress controller vard\u0131r.<\/p>\n<ol>\n<li><a href=\"https:\/\/github.com\/kubernetes\/ingress-nginx\" target=\"_blank\" rel=\"noopener nofollow\">Kubernetes toplulu\u011fu taraf\u0131ndan sunulan Nginx ingress controller<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/nginxinc\/kubernetes-ingress\" target=\"_blank\" rel=\"noopener nofollow\" aria-label=\"Nginx Inc taraf\u0131ndan \u00fcretilen Nginx ingress controller (yeni sekmede a\u00e7\u0131l\u0131r)\">Nginx Inc taraf\u0131ndan \u00fcretilen Nginx ingress controller<\/a><\/li>\n<\/ol>\n<p>Ben Kubernetes toplulu\u011fu taraf\u0131ndan sunulan\u00a0<a href=\"https:\/\/kubernetes.github.io\/ingress-nginx\/\" target=\"_blank\" rel=\"noopener nofollow\" aria-label=\"Nginx ingress controller (yeni sekmede a\u00e7\u0131l\u0131r)\">Nginx ingress controller<\/a>\u2018\u0131 kullanaca\u011f\u0131m.<\/p>\n<p>Ingress controller\u2019\u0131n belirli bir namespace, service account, cluster role vb. ba\u011flar\u0131na, yap\u0131land\u0131rmalara \u0130htiyac\u0131 vard\u0131r.\u00a0<a href=\"https:\/\/github.com\/kubernetes\/ingress-nginx\/blob\/master\/docs\/deploy\/index.md\" target=\"_blank\" rel=\"noopener nofollow\" aria-label=\"Resmi ingress (yeni sekmede a\u00e7\u0131l\u0131r)\">Resmi ingress<\/a>\u00a0deposundan\u00a0<a href=\"https:\/\/raw.githubusercontent.com\/kubernetes\/ingress-nginx\/nginx-0.30.0\/deploy\/static\/mandatory.yaml\" target=\"_blank\" rel=\"noopener nofollow\" aria-label=\"yaml dosyas\u0131n\u0131 (yeni sekmede a\u00e7\u0131l\u0131r)\">yaml dosyas\u0131n\u0131<\/a>\u00a0kullanarak belirtilen t\u00fcm kubernetes nesnelerini olu\u015fturabilirsiniz\u00a0<a href=\"https:\/\/github.com\/kubernetes\/ingress-nginx\/tree\/master\/deploy\" target=\"_blank\" rel=\"noopener nofollow\">.<\/a><\/p>\n<p>Resmi\u00a0ingress deposundaki mandatory.yaml dosyas\u0131n\u0131\u00a0kullanarak ingress controller\u2019\u0131 deploy edelim.<\/p>\n<p>Kubectl kullanarak\u00a0<strong>Nginx ingress deployment<\/strong>\u00a0olu\u015ftural\u0131m.<\/p>\n<p><code>$ kubectl apply -f https:\/\/raw.githubusercontent.com\/kubernetes\/ingress-nginx\/master\/deploy\/static\/mandatory.yaml<\/code><\/p>\n<p>\u0130pucu: E\u011fer 1.14 \u00f6nceki bir Kubernetes s\u00fcr\u00fcm\u00fcn\u00fc kullan\u0131yorsan\u0131z, mandatory.yaml dosyas\u0131n\u0131n 217. sat\u0131r\u0131nda kubernetes.io\/os sat\u0131r\u0131n\u0131 beta.kubernetes.io\/os ile de\u011fi\u015ftirin.<br \/>\nDosyay\u0131 indirip vim ile d\u00fczenleyelim.<\/p>\n<p><code><br \/>\nwget https:\/\/raw.githubusercontent.com\/kubernetes\/ingress-nginx\/master\/deploy\/static\/mandatory.yaml<br \/>\nvim mandatory.yaml<br \/>\n<\/code><\/p>\n<p>217. sat\u0131rda bulunan kubernetes.io\/os: linux k\u0131sm\u0131 beta.kubernetes.io\/os: linux ile de\u011fi\u015ftirip dosyay\u0131 kaydedip \u00e7\u0131kal\u0131m ve bu \u015fekilde deployment olu\u015ftural\u0131m.<br \/>\n<code>kubectl apply -f mandatory.yaml <\/code><br \/>\nsonras\u0131nda bu \u015fekilde bir output g\u00f6rmeniz gerekiyor.<\/p>\n<p><code><br \/>\nnamespace\/ingress-nginx created<br \/>\nconfigmap\/nginx-configuration created<br \/>\nconfigmap\/tcp-services created<br \/>\nconfigmap\/udp-services created<br \/>\nserviceaccount\/nginx-ingress-serviceaccount created<br \/>\nclusterrole.rbac.authorization.k8s.io\/nginx-ingress-clusterrole created<br \/>\nrole.rbac.authorization.k8s.io\/nginx-ingress-role created<br \/>\nrolebinding.rbac.authorization.k8s.io\/nginx-ingress-role-nisa-binding created<br \/>\nclusterrolebinding.rbac.authorization.k8s.io\/nginx-ingress-clusterrole-nisa-binding created<br \/>\ndeployment.apps\/nginx-ingress-controller created<br \/>\nlimitrange\/ingress-nginx created<br \/>\n<\/code><\/p>\n<p>Ingress Controller pod\u2019lar\u0131n\u0131n do\u011fru ayarland\u0131\u011f\u0131ndan emin olmak i\u00e7in kontrol edelim.<\/p>\n<p><code>kubectl get pods -n ingress-nginx<\/code><\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Ingress_controller_icin_LoadBalancer_serviceini_ayarlama\"><\/span>Ingress controller i\u00e7in LoadBalancer service\u2019ini ayarlama<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Sonraki ad\u0131m, nginx ingress deployment\u2019\u0131n\u0131 k\u00fcmenin d\u0131\u015f\u0131na eri\u015fime a\u00e7mak i\u00e7in Type\u2019\u0131 Loadbalancer olan bir service olu\u015fturmakt\u0131r.<\/p>\n<p>Bu kurulumda, ELB\u2019yi hangi katmanda (L4 veya L7) yap\u0131land\u0131rmak istedi\u011fimizi se\u00e7menizi gerektirir:<\/p>\n<ul>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/OSI_model#Layer_4:_Transport_Layer\" rel=\"nofollow noopener\" target=\"_blank\">Layer 4<\/a>\u00a0: 80 ve 443 numaral\u0131 ba\u011flant\u0131 noktalar\u0131 i\u00e7in listener protokol\u00fc olarak TCP kullan\u0131n.<\/li>\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/OSI_model#Layer_7:_Application_Layer\" rel=\"nofollow noopener\" target=\"_blank\">Layer 7<\/a>\u00a0: 80 numaral\u0131 ba\u011flant\u0131 noktas\u0131 i\u00e7in listener protokol\u00fc olarak HTTP kullan\u0131n ve ELB\u2019de TLS\u2019yi sonland\u0131r\u0131n<\/li>\n<\/ul>\n<p>Ben layer 7 olarak bir yap\u0131land\u0131rma yapaca\u011f\u0131m.\u00a0<a href=\"https:\/\/kubernetes.github.io\/ingress-nginx\/deploy\/#prerequisite-generic-deployment-command\" target=\"_blank\" rel=\"noopener nofollow\" aria-label=\"bkz (yeni sekmede a\u00e7\u0131l\u0131r)\">bkz<\/a><\/p>\n<p><strong>Ad\u0131m 1:<\/strong>\u00a0daha \u00f6nceden olu\u015fturdu\u011fumuz nginx-configiration configmap a\u015fa\u011f\u0131daki \u015fekilde g\u00fcncellememiz gerekiyor.<\/p>\n<p><code><br \/>\nkubectl apply -f https:\/\/raw.githubusercontent.com\/kubernetes\/ingress-nginx\/master\/deploy\/static\/provider\/aws\/patch-configmap-l7.yaml<br \/>\nconfigmap\/nginx-configuration configured<br \/>\n<\/code><\/p>\n<p><strong>Ad\u0131m 2:<\/strong>\u00a0Yerel olarak bir proje dizini olu\u015fturun ve bu dizine ge\u00e7in.<br \/>\n<code><br \/>\nmkdir ingress-deployment<br \/>\ncd ingress-deployment<\/code><\/p>\n<p><strong>Ad\u0131m 3:<\/strong>\u00a0nginx-ingress.yaml adl\u0131 bir dosya olu\u015fturun<br \/>\n<code>vim nginx-ingress.yaml<\/code><\/p>\n<p>Ad\u0131m 4: A\u015fa\u011f\u0131daki i\u00e7eri\u011fi dosyaya kopyalay\u0131n.<\/p>\n<p>Not : Etiketlerin alt\u0131ndaki ek a\u00e7\u0131klamalar, nginx denetleyicisi da\u011f\u0131t\u0131m\u0131yla entegrasyon i\u00e7in \u00e7ok \u00f6nemlidir.<br \/>\n<code><br \/>\nkind: Service<br \/>\napiVersion: v1<br \/>\nmetadata:<br \/>\nname: ingress-nginx<br \/>\nnamespace: ingress-nginx<br \/>\nlabels:<br \/>\napp.kubernetes.io\/name: ingress-nginx<br \/>\napp.kubernetes.io\/part-of: ingress-nginx<br \/>\nspec:<br \/>\ntype: LoadBalancer<br \/>\nselector:<br \/>\napp.kubernetes.io\/name: ingress-nginx<br \/>\napp.kubernetes.io\/part-of: ingress-nginx<br \/>\nports:<br \/>\n- name: http<br \/>\nport: 80<br \/>\ntargetPort: http<br \/>\n- name: https<br \/>\nport: 443<br \/>\ntargetPort: https<br \/>\n<\/code><\/p>\n<p><strong>Ad\u0131m 5:\u00a0<\/strong>Ingress Controller\u00a0service\u2019ini olu\u015fturun.<br \/>\n<code> kubectl apply -f nginx-ingress.yaml<\/code><\/p>\n<p>Ad\u0131m 5: Olu\u015fturulan service\u2019i kontrol edin.<\/p>\n<p><code>kubectl get svc -n ingress-nginx<\/code><\/p>\n<h3><span class=\"ez-toc-section\" id=\"Bir_Alan_Adini_Loadbalancer_IPsiyle_Esleme\"><\/span>Bir Alan Ad\u0131n\u0131 Loadbalancer IP\u2019siyle E\u015fleme<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Ingress ayarlar\u0131m\u0131z\u0131n \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flamak i\u00e7in, loadbalancer IP\u2019siyle (veya CNAME) bir alan ad\u0131 e\u015flememiz gerekir. Bunu iki \u015fekilde yapabilirsiniz.<\/p>\n<p>Tek DNS E\u015flemesi:<br \/>\nTek etki alan\u0131n\u0131 do\u011frudan y\u00fck dengeleyici IP\u2019sine A kayd\u0131 olarak e\u015fleyebilirsiniz. Bunu kullanarak, giri\u015f denetleyicisi i\u00e7in yaln\u0131zca bir etki alan\u0131na ve birden \u00e7ok path\u2019e dayal\u0131 trafik y\u00f6nlendirmesine sahip olabilirsiniz.<\/p>\n<p>\u00d6rne\u011fin,<\/p>\n<p>www.sunucucozumleri.com \u2013&gt; Loadbalancer IP \/ CNAME<\/p>\n<p>Bu modeli kullanarak yola dayal\u0131 y\u00f6nlendirmeye sahip olabilirsiniz.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Bu yaz\u0131mda, Nginx ingress controller kullanarak Kubernetes\u2019de nas\u0131l ingress kullanca\u011f\u0131m\u0131z\u0131 ve trafi\u011fi joker karakter\u2019li DNS kayd\u0131 kullanarak deployment\u2019lara nas\u0131l y\u00f6nlendirece\u011finizi \u00f6\u011freneceksiniz. Kubernetes ingress\u2019in nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 anlamak istiyorsan\u0131z, l\u00fctfen\u00a0Yeni Ba\u015flayanlar \u0130\u00e7in Kubernetes Ingress E\u011fitimi\u2019daki bu blog g\u00f6nderisini okuyun. \u0130\u015fte Nginx ingress controller kullanan Kubernetes ingress \u00f6rnek mimarisi \u00d6n \u015fartlar: Bir Kuberntes cluster. kubectl yard\u0131mc\u0131 program\u0131. Kubernetes &hellip;<\/p>\n","protected":false},"author":1,"featured_media":1233,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[5],"tags":[],"class_list":["post-1232","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-linux"],"acf":[],"_links":{"self":[{"href":"https:\/\/sunucucozumleri.com\/blog\/wp-json\/wp\/v2\/posts\/1232","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sunucucozumleri.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sunucucozumleri.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sunucucozumleri.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sunucucozumleri.com\/blog\/wp-json\/wp\/v2\/comments?post=1232"}],"version-history":[{"count":0,"href":"https:\/\/sunucucozumleri.com\/blog\/wp-json\/wp\/v2\/posts\/1232\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sunucucozumleri.com\/blog\/wp-json\/wp\/v2\/media\/1233"}],"wp:attachment":[{"href":"https:\/\/sunucucozumleri.com\/blog\/wp-json\/wp\/v2\/media?parent=1232"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sunucucozumleri.com\/blog\/wp-json\/wp\/v2\/categories?post=1232"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sunucucozumleri.com\/blog\/wp-json\/wp\/v2\/tags?post=1232"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}