{"id":99,"date":"2022-03-16T18:33:00","date_gmt":"2022-03-16T18:33:00","guid":{"rendered":"http:\/\/blog.firatyasar.com\/?p=99"},"modified":"2022-03-31T18:48:19","modified_gmt":"2022-03-31T18:48:19","slug":"metallb-for-onpremise-kubernetes-cluster","status":"publish","type":"post","link":"https:\/\/blog.firatyasar.com\/?p=99","title":{"rendered":"MetalLB for Onpremise Kubernetes Cluster"},"content":{"rendered":"\n<h2>Metallb Installation on Local Kubernetes Cluster<\/h2>\n\n\n\n<p>Baremetal kubernetes kurulumlar\u0131nda ingress controller&#8217;\u0131 konumland\u0131rmak ve ortamdan ip adresi almas\u0131n\u0131 sa\u011flamak cloud platformlar\u0131nda oldu\u011fu kadar kolay de\u011fil \ud83d\ude42<\/p>\n\n\n\n<p>Public cloud platformlar\u0131 loadbalancer tipinde service olu\u015fturdu\u011fumuzda otomatik olarak platformdaki loadbalancer \u00fczerine ip atamas\u0131 yapar ve bunu ingress controller&#8217;\u0131n servisi ile ili\u015fiklendirir. Onpremise kubernetes cluster&#8217;\u0131m\u0131z\u0131n da bu \u015fekilde davran\u0131p ingress controller&#8217;a node&#8217;lar\u0131n bulundu\u011fu ip network&#8217;\u00fcnden IP atamas\u0131 yapabilmesi i\u00e7in metallb entegrasyonu yaparak node&#8217;lar\u0131n interface&#8217;lerine speaker yerle\u015ftirmeniz gerekir.<\/p>\n\n\n\n<p>B\u00f6ylece node&#8217;lar speakerlar yard\u0131m\u0131 ile ARP mesajlar\u0131n\u0131 al\u0131p ingress controller servisine eri\u015ftirebilir hale gelirler.<\/p>\n\n\n\n<p>\u015eimdi onpremise bir kubernetes cluster&#8217;\u0131 i\u00e7in MetalLB konfig\u00fcrasyonunun nas\u0131l yap\u0131ld\u0131\u011f\u0131na bir g\u00f6z atal\u0131m.<\/p>\n\n\n\n<h3><a href=\"https:\/\/github.com\/yasarfirat\/metallb#prerequests\"><\/a>Gereksinimler<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote\"><p>kubectl config get-contexts<\/p><\/blockquote>\n\n\n\n<p>\u00d6ncelikle kubernetes cluster&#8217;a eri\u015fmek i\u00e7in gerekli olan context&#8217;in ayarland\u0131\u011f\u0131ndan emin olmak gerekir.<\/p>\n\n\n\n<h3><a href=\"https:\/\/github.com\/yasarfirat\/metallb#installation\"><\/a>Kurulum<\/h3>\n\n\n\n<p>\u00d6ncelikle ilgili yaml dosyalar\u0131n\u0131n bulundu\u011fu repoyu clone&#8217;layal\u0131m.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;github.com\/yasarfirat\/metallb.git<\/code><\/pre>\n\n\n\n<p>Directory&#8217;yi \u015fu \u015fekilde ayarlayal\u0131m<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl create ns metallb-system<\/code><\/pre>\n\n\n\n<p>IP network\u00fcn\u00fc belirtmek i\u00e7in gerekli configmap&#8217;i olu\u015ftural\u0131m.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apiVersion: v1\nkind: ConfigMap\nmetadata:\nnamespace: metallb-system\nname: config\ndata:\nconfig: |\n    address-pools:\n    - name: my-ip-space\n    protocol: layer2\n    addresses:\n    - 10.255.134.160-10.255.134.170<\/code><\/pre>\n\n\n\n<h1><a href=\"https:\/\/github.com\/yasarfirat\/metallb#usage\"><\/a><\/h1>\n\n\n\n<p>Gerekli yaml file&#8217;lar\u0131n\u0131 apply komutu ile g\u00f6nderelim.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl apply -f config.yaml\nkubectl apply -f metallb.yaml<\/code><\/pre>\n\n\n\n<p>MetalLB i\u00e7in gerekli secret objesini olu\u015ftural\u0131m.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl create secret generic -n metallb-system memberlist --from-literal=secretkey=\"$(openssl rand -base64 128)\"<\/code><\/pre>\n\n\n\n<h2>Kullan\u0131m<\/h2>\n\n\n\n<p>Service deploy edildikten sonra herhangi bir nginx image ile load balancer tipinde bir service olu\u015fturularak test i\u015flemi yap\u0131labilir. A\u015fa\u011f\u0131daki ad\u0131mlar\u0131 izleyerek test i\u015flemini ger\u00e7ekle\u015ftirelim.<\/p>\n\n\n\n<ol><li>Create Example Nginx Deploymentkubectl create deployment nginx &#8211;image=nginx<\/li><li>Expose Your Deploymentkubectl expose deploy nginx &#8211;port 80 &#8211;type LoadBalancer<\/li><li>Result<\/li><\/ol>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><thead><tr><th>NAME<\/th><th>TYPE<\/th><th>CLUSTER-IP<\/th><th>EXTERNAL-IP<\/th><th>PORT(S)<\/th><th>AGE<\/th><\/tr><\/thead><tbody><tr><td>nginx<\/td><td>LoadBalancer<\/td><td>172.19.2219.173<\/td><td>10.255.134.16<\/td><td>80:30383\/TCP,443:32503\/TCP<\/td><td>2m<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Yap\u0131lan deployment&#8217;\u0131n ard\u0131ndan loadbalancer tipinde servisin otomatik olarak configmap i\u00e7erisinde belirtilen ip havuzundan ip ald\u0131\u011f\u0131 g\u00f6r\u00fclecektir.<\/p>\n\n\n\n<p>Cheers.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Metallb Installation on Local Kubernetes Cluster Baremetal kubernetes kurulumlar\u0131nda ingress controller&#8217;\u0131 konumland\u0131rmak ve ortamdan ip adresi almas\u0131n\u0131 sa\u011flamak cloud platformlar\u0131nda oldu\u011fu kadar kolay de\u011fil \ud83d\ude42 Public cloud platformlar\u0131 loadbalancer tipinde service olu\u015fturdu\u011fumuzda otomatik olarak platformdaki loadbalancer \u00fczerine ip atamas\u0131 yapar ve bunu ingress controller&#8217;\u0131n servisi ile ili\u015fiklendirir. Onpremise kubernetes cluster&#8217;\u0131m\u0131z\u0131n da bu \u015fekilde davran\u0131p ingress\u2026 <span class=\"read-more\"><a href=\"https:\/\/blog.firatyasar.com\/?p=99\">Read More &raquo;<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":100,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[51,50],"_links":{"self":[{"href":"https:\/\/blog.firatyasar.com\/index.php?rest_route=\/wp\/v2\/posts\/99"}],"collection":[{"href":"https:\/\/blog.firatyasar.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.firatyasar.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.firatyasar.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.firatyasar.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=99"}],"version-history":[{"count":1,"href":"https:\/\/blog.firatyasar.com\/index.php?rest_route=\/wp\/v2\/posts\/99\/revisions"}],"predecessor-version":[{"id":101,"href":"https:\/\/blog.firatyasar.com\/index.php?rest_route=\/wp\/v2\/posts\/99\/revisions\/101"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.firatyasar.com\/index.php?rest_route=\/wp\/v2\/media\/100"}],"wp:attachment":[{"href":"https:\/\/blog.firatyasar.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=99"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.firatyasar.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=99"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.firatyasar.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=99"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}