{"id":1236,"date":"2022-09-21T07:03:45","date_gmt":"2022-09-21T07:03:45","guid":{"rendered":"https:\/\/sunucucozumleri.com\/?p=1236"},"modified":"2022-09-21T07:04:18","modified_gmt":"2022-09-21T07:04:18","slug":"yeni-baslayanlar-icin-kubernetes-ingress-egitimi","status":"publish","type":"post","link":"https:\/\/sunucucozumleri.com\/blog\/yeni-baslayanlar-icin-kubernetes-ingress-egitimi\/","title":{"rendered":"Yeni Ba\u015flayanlar \u0130\u00e7in Kubernetes Ingress E\u011fitimi"},"content":{"rendered":"<p><em>Kubernetes Ingress, d\u0131\u015f kaynaklardan kubernetes cluster\u2019daki service\u2019lere kurallar ekleyerek trafik y\u00f6nlendirmek i\u00e7in kullan\u0131lan bir kaynakt\u0131r.<\/em><\/p>\n<p>Bu Kubernetes giri\u015f e\u011fitim serisinde, d\u0131\u015f trafi\u011fi Kubernetes deployment\u2019lar\u0131na y\u00f6nlendirmek i\u00e7in kullan\u0131lan ingress ve ingress controller kavram\u0131n\u0131 \u00f6\u011freneceksiniz.<\/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 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/sunucucozumleri.com\/blog\/yeni-baslayanlar-icin-kubernetes-ingress-egitimi\/#Kubernetes_Ingress_Egitimi\" >Kubernetes Ingress E\u011fitimi<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/sunucucozumleri.com\/blog\/yeni-baslayanlar-icin-kubernetes-ingress-egitimi\/#Kubernetes_Ingress\" >Kubernetes Ingress:<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/sunucucozumleri.com\/blog\/yeni-baslayanlar-icin-kubernetes-ingress-egitimi\/#Kubernetes_Ingress_Controller\" >Kubernetes Ingress Controller<\/a><\/li><\/ul><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"Kubernetes_Ingress_Egitimi\"><\/span>Kubernetes Ingress E\u011fitimi<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Ba\u015flamak i\u00e7in iki \u00f6nemli \u015feyi anlaman\u0131z gerekir.<\/p>\n<ol>\n<li>Kubernetes Ingress<\/li>\n<li>Kubernetes Ingress Controller<\/li>\n<\/ol>\n<p>Bu kavramlar\u0131n her birine bir g\u00f6z atal\u0131m.<\/p>\n<h4><span class=\"ez-toc-section\" id=\"Kubernetes_Ingress\"><\/span>Kubernetes Ingress:<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Kubernetes Ingress, trafi\u011fi harici bir kaynaktan cluster i\u00e7inde bulunan service endpoint\u2019lerine y\u00f6nlendirmek i\u00e7in kurallara sahip olabilece\u011finiz yerel bir kubernetes kayna\u011f\u0131d\u0131r.Ingress\u2019de belirtilen kurallar\u0131 y\u00f6nlendirmek i\u00e7in bir ingress controller gerektirir.\u00a0Bir ingress nesnesi a\u015fa\u011f\u0131dakine benzer.<\/p>\n<p><code><br \/>\napiVersion: extensions\/v1beta1<br \/>\nkind: Ingress<br \/>\nmetadata:<br \/>\nname: test-ingress<br \/>\nnamespace: development<br \/>\nspec:<br \/>\nrules:<br \/>\n- host: test.sunucucozumleri.com<br \/>\nhttp:<br \/>\npaths:<br \/>\n- backend:<br \/>\nserviceName: hello-service<br \/>\nservicePort: 80<br \/>\n<\/code><\/p>\n<p>Yukar\u0131daki ingress,\u00a0<strong>test.sunucucozumleri.com<\/strong>\u2018a yap\u0131lan t\u00fcm \u00e7a\u011fr\u0131lar\u0131n development namespace\u2019inde bulunan\u00a0<strong>hello-service<\/strong>\u00a0ismindeki service\u2019e y\u00f6nlendirilmesi gerekti\u011fi anlam\u0131na gelir.<\/p>\n<p>Ingress hakk\u0131nda anla\u015f\u0131lmas\u0131 gereken \u00f6nemli noktalar.<\/p>\n<ul>\n<li>Service\u2019lerin da\u011f\u0131t\u0131ld\u0131\u011f\u0131 namespace\u2019de ingress kurallar\u0131 olu\u015fturmal\u0131s\u0131n\u0131z.\u00a0Trafi\u011fi, ingress\u2019e sahip olmad\u0131\u011f\u0131n\u0131z farkl\u0131 bir namespace\u2019deki bir service\u2019e y\u00f6nlendiremezsiniz.<\/li>\n<li>Bir ingress, trafi\u011fi y\u00f6nlendirmek i\u00e7in bir ingress controller gerektirir.<\/li>\n<li>Harici trafik, ingress API\u2019na vurmaz, bunun yerine ingress controller service\u2019ine vurur<\/li>\n<\/ul>\n<h4><span class=\"ez-toc-section\" id=\"Kubernetes_Ingress_Controller\"><\/span>Kubernetes Ingress Controller<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>Ingress controller, genellikle cluster\u2019da da\u011f\u0131t\u0131lan bir <a href=\"https:\/\/sunucucozumleri.com\/blog\/073-proxy-nedir-proxy-nasil-kullanilabilir\/\">proxy<\/a> service\u2019idir.\u00a0 service ile expose edilmi\u015f kubernetes deployment\u2019dan ba\u015fka bir\u015fey de\u011fildir.\u00a0A\u015fa\u011f\u0131da kubernetes i\u00e7in kullan\u0131labilen ingress controller bulunmaktad\u0131r.<\/p>\n<ul>\n<li><a href=\"https:\/\/sunucucozumleri.com\/blog\/080-nginx-reverse-proxy-nasil-kurulur\/\">Nginx<\/a> Ingress Controller (<a href=\"https:\/\/github.com\/kubernetes\/ingress-nginx\" target=\"_blank\" rel=\"noopener nofollow\">Community<\/a>\u00a0&amp;\u00a0<a href=\"https:\/\/github.com\/nginxinc\/kubernetes-ingress\" target=\"_blank\" rel=\"noopener nofollow\">From Nginx Inc<\/a>)<\/li>\n<li><a href=\"https:\/\/github.com\/containous\/traefik\" target=\"_blank\" rel=\"noopener nofollow\">Traefik<\/a><\/li>\n<li><a href=\"https:\/\/www.haproxy.com\/blog\/haproxy_ingress_controller_for_kubernetes\/\" target=\"_blank\" rel=\"noopener nofollow\">HAproxy<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/heptio\/contour\" target=\"_blank\" rel=\"noopener nofollow\">Contour<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/kubernetes\/ingress-gce\" target=\"_blank\" rel=\"noopener nofollow\">GKE Ingress Controller<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/zalando\/skipper\" target=\"_blank\" rel=\"noopener nofollow\" aria-label=\"Skipper (yeni sekmede a\u00e7\u0131l\u0131r)\">Skipper<\/a><\/li>\n<\/ul>\n<p>Genellikle, Nginx bir ingress controller olarak yayg\u0131n olarak kullan\u0131lmaktad\u0131r.\u00a0Nginx ingress controller \u015fu \u015fekilde \u00e7al\u0131\u015f\u0131r.<\/p>\n<ul>\n<li>Nginx controller pod\u2019unun i\u00e7indeki nginx.conf dosyas\u0131, Kubernetes ingress API\u2019siyle konu\u015fabilen ve trafik y\u00f6nlendirmesi i\u00e7in en son de\u011ferleri ger\u00e7ek zamanl\u0131 olarak alabilen bir go template\u2019idir.<\/li>\n<li>Nginx controller, trafik y\u00f6nlendirmesi i\u00e7in olu\u015fturulmu\u015f bir kural olup olmad\u0131\u011f\u0131n\u0131 kontrol etmek i\u00e7in Kubernetes ingress API\u2019s\u0131 ile konu\u015fur.<\/li>\n<li>Herhangi bir ingress kural\u0131 bulursa\u00a0, go template\u2019inde kullanan pod i\u00e7indeki\u00a0bir\u00a0dosya\u00a0olan nginx.conf nginx controller yap\u0131land\u0131rmas\u0131na uygulan\u0131r\u00a0.<\/li>\n<\/ul>\n<p>Pod\u2019a exec kullanarak ba\u011flan\u0131r ve\u00a0\/etc\/nginx\/nginx.conf dosyas\u0131n\u0131\u00a0kontrol\u00a0ederseniz, conf dosyas\u0131nda uygulanan ingress nesnesinde belirtilen t\u00fcm kurallar\u0131 g\u00f6rebilirsiniz.<\/p>\n<p>\u00d6rnek olarak;<br \/>\n<code>kubectl get pods -n ingress-nginx<\/code><br \/>\nyukardaki komutun sonucunda gelen pod ismi ile a\u015fa\u011f\u0131daki gibi ilgili config dosyas\u0131 g\u00f6r\u00fcnebilir.<\/p>\n<p><code> kubectl exec nginx-ingress-controller-dfb855c4b-b497z cat \/etc\/nginx\/nginx.conf -n ingress-nginx<\/code><br \/>\n\u0130\u015fte kubernetes cluster\u2019da ingress kurulumunu a\u00e7\u0131klayan mimari diyagram.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-1238\" src=\"https:\/\/sunucucozumleri.com\/wp-content\/uploads\/2022\/09\/kubernetes-ingress-1-1.png\" alt=\"\" width=\"808\" height=\"840\" title=\"\" srcset=\"\/\/sunucucozumleri.com\/blog\/wp-content\/uploads\/2022\/09\/kubernetes-ingress-1-1.png 808w, \/\/sunucucozumleri.com\/blog\/wp-content\/uploads\/2022\/09\/kubernetes-ingress-1-1-289x300.png 289w, \/\/sunucucozumleri.com\/blog\/wp-content\/uploads\/2022\/09\/kubernetes-ingress-1-1-768x798.png 768w\" sizes=\"(max-width: 808px) 100vw, 808px\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Kubernetes Ingress, d\u0131\u015f kaynaklardan kubernetes cluster\u2019daki service\u2019lere kurallar ekleyerek trafik y\u00f6nlendirmek i\u00e7in kullan\u0131lan bir kaynakt\u0131r. Bu Kubernetes giri\u015f e\u011fitim serisinde, d\u0131\u015f trafi\u011fi Kubernetes deployment\u2019lar\u0131na y\u00f6nlendirmek i\u00e7in kullan\u0131lan ingress ve ingress controller kavram\u0131n\u0131 \u00f6\u011freneceksiniz. Kubernetes Ingress E\u011fitimi Ba\u015flamak i\u00e7in iki \u00f6nemli \u015feyi anlaman\u0131z gerekir. Kubernetes Ingress Kubernetes Ingress Controller Bu kavramlar\u0131n her birine bir g\u00f6z atal\u0131m. &hellip;<\/p>\n","protected":false},"author":1,"featured_media":1237,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[5],"tags":[],"class_list":["post-1236","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\/1236","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=1236"}],"version-history":[{"count":0,"href":"https:\/\/sunucucozumleri.com\/blog\/wp-json\/wp\/v2\/posts\/1236\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sunucucozumleri.com\/blog\/wp-json\/wp\/v2\/media\/1237"}],"wp:attachment":[{"href":"https:\/\/sunucucozumleri.com\/blog\/wp-json\/wp\/v2\/media?parent=1236"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sunucucozumleri.com\/blog\/wp-json\/wp\/v2\/categories?post=1236"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sunucucozumleri.com\/blog\/wp-json\/wp\/v2\/tags?post=1236"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}