DEV Community

Suleyman
Suleyman

Posted on

Kubernetes Helm ile Metallb Kurulumu

Merhaba, bu makalemizde on-prem ortamlar için yaygın olarak kullanılan metallb kurulumunu gerçekleştireceğiz.

Siz bulut sağlayıcılarında (AWS,Azure,GCP) kurulan kubernetes clusterlarında load balancer türünde bir servis oluşturduğunuzda servisiniz bir public IP adresi alır. On prem de ise public ip olmadığı için, kubernetesin sunucularının sahip olduğu bir IP adresi alarak bu servislere ulaşacağız. Bunun içinde metallb kurulumunu gerçekleştireceğiz.

Kurulumu helm ile gerçekleştireceğiz. Önceki makalemizde helm kurulumunu yazmıştır. Bu makalenin altında linki bulabilirsiniz.

Aşağıdaki URL den sizlerde metallb helm reposuna ulaşabilirsiniz.

https://artifacthub.io/packages/helm/bitnami/metallb

kubectl create ns metallb
helm repo add bitnami https://charts.bitnami.com/bitnami
helm install my-metallb bitnami/metallb --namespace metallb
Enter fullscreen mode Exit fullscreen mode

Kurulum işlemlerini tamamladık şimdi , bu metallb dağıtacağı IP adreslerini configure etmemiz gerekmektedir. Aşağıdaki komutlarla dosya açıp içine yine aşağıdaki kodu yapıştırıyoruz ve dosyamızı deploy ediyoruz.

nano ip.yaml
Enter fullscreen mode Exit fullscreen mode
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
  namespace: metallb
  name: ip-assign
spec:
  addresses:
  - 172.34.47.150 - 172.34.47.200

Enter fullscreen mode Exit fullscreen mode
kubectl apply -f ip.yaml
Enter fullscreen mode Exit fullscreen mode

Burada namespace , sizin metallb yi deploy ettiğiniz namespace, 172.34.47.150-172.34.47.150 bu network benim kubernetes sunucularımın kurulu olduğu networktür.

Şimdi sırada bu ip adreslerinin L2 seviyesinde çalıştığını söylemek gerekiyor. Bu yüzden aşağıdaki komutları çalıştırıyoruz.

nano l2.yaml
Enter fullscreen mode Exit fullscreen mode
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
  name: l2
  namespace: metallb
spec:
  ipAddressPools:
  - ip-assign
Enter fullscreen mode Exit fullscreen mode
kubectl apply -f l2.yaml
Enter fullscreen mode Exit fullscreen mode

Şimdi bir pod ve servis oluşturup yapmış işlemleri test edelim.

kubectl run --image=nginx webservis
kubectl expose pod webservis --port=80 --type=LoadBalancer
Enter fullscreen mode Exit fullscreen mode
kubectl get svc
Enter fullscreen mode Exit fullscreen mode

Image description

komutunu çalıştırdığımızda EXTERNEL-IP kısmında servisimizin belirlediğimiz IP aralığında ip adresini aldığını görebiliriz. Artık tarayıcımızda 172.34.47.150 yazdığımızda nginx'in varsayılan sayfasını görmemiz gerekmektedir.

Image description

İyi günler.

Top comments (0)