Eyup Aktas
Turk Telekom Bulut Teknolojileri
3 min readAug 1, 2023

--

Openshift Metal LB kurulum ve Konfigürasyonu

  1. Openshift Metal LB Nedir?:
  • Openshift Kubernetes platformunda kullanılan bir Load Balancer çözümüdür. Uygulamaları dengeler ve yüksek erişilebilirlik sağlar.
  • Metal LB’nin Avantajları: Kolay kurulum, dinamik yapılandırma ve yüksek performanslı Load Balancing gibi avantajlara sahiptir. Metal LB, uygulamaların trafik yükünü otomatik olarak birden fazla backend pod arasında eşit bir şekilde dağıtarak Load Balancing işlevi sağlar. Bu, uygulamaların yüksek talepler altında stabil ve dengeli bir şekilde çalışmasını sağlar ve yüksek erişilebilirlik sunar.

2. Metal LB Operator Kurulumu:

  • Openshift Cluster’a erişim sağlama: Openshift konsoluna veya CLI aracılığıyla cluster’a erişim sağlanır.
  • OperatorHub’dan Metal LB Operator’ünü bulma ve yükleme: Openshift OperatorHub’dan Metal LB Operator’ünü bulun ve kurulumu gerçekleştirin.
  • Metal LB Operator’ünün kurulumunu doğrulama: Kurulumun başarılı olup olmadığını doğrulayın.

3. Metal LB Instance Kurulumu:

  • Metal LB Instance Nedir?: Metal LB’nin belirli bir cluster’da çalışan örneğidir.
  • Metal LB Instance Kurulum Adımları: Metal LB Instance’ı oluşturmak için gerekli adımları takip edilir
Podlar running

4. Address Pool Oluşturulması:

  • Metal LB’de Address Pool Kavramı: Metal LB’nin IP adresleri için kullanılacak havuzudur.
  • Yeni Bir Address Pool’un Oluşturulması: Yeni bir adres havuzu oluşturarak yük dengeleme için kullanılacak IP adreslerini belirlenir.
adresspool

5. Httpd Servis Deployment ve Servis İsmi Oluşturulması:

  • Örnek Bir Httpd Servisi Deployment’u: Örnek bir Apache Httpd servisi oluşturarak uygulamanızı cluster’a dağıtıyoruz.
 apiVersion: apps/v1
kind: Deployment
metadata:
namespace: metallb-system
name: httpd
spec:
selector:
matchLabels:
app: httpd
replicas: 3
template:
metadata:
labels:
app: httpd
spec:
containers:
- name: container
image: >-
registry.redhat.io/rhscl/httpd-24-rhel7:2.4-170
ports:
- containerPort: 8090
protocol: TCP
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
  • Servis İsmi Tanımlama ve Metal LB ile İlişkilendirme: Servis ismi tanımlayarak Metal LB ile bu servise erişilebilirliği sağlıyoruz.
 apiVersion: v1
kind: Service
metadata:
name: httpd
namespace: metallb-system
spec:
loadBalancerIP: 192.168.20.200
selector:
app: httpd
ports:
- protocol: TCP
port: 8090
targetPort: 9376
type: LoadBalancer
  • Servis İsmini cli üzerinden bir pod expose edebiliriz. Yukardaki manuel servis tanımlama ile aynı anlama gelmektedir.
oc expose pod httpd-pod-name - port=8090 - type=LoadBalancer

6. Httpd Servisine atanan External ip cli üzerinden görüntülenmesi

 #oc get svc

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
httpd LoadBalancer 172.30.2.13 192.168.20.200 8090:30405/TCP 14m
httpd-service LoadBalancer 172.30.9.255 192.168.20.200 8080:31234/TCP 147m

7. Aynı ip farklı servisler için kullanmak isterseniz farklı portlar ile Deployment ve service yamlların metadata alanlarına bu annotation girmeniz gerekmektedir.

annotations:
metallb.universe.tf/allow-shared-ip: eyup

Faydalı olması dileğiyle mutlu şekilde çalişmalar dilerim.

--

--