---
# System prepended metadata

title: '4 ft_services : loadBalancer'
tags: [ft_service]

---

---
Category : ft_service
Id : 4
Title : "ft_services : load balancer"
Description : "kubernetes에 loadbalancer를 적용해보자"
Date : 2020, 11, 4 (Wed)
Auther : seolim
pre : 3
next : 0
tags : ft_service
---

# 4 ft_services : loadBalancer
> Link

[link not yet]()

> Caution

본 문서를 포함한 블로그의 모든 내용은 <b>42 innovation academy</b>의 과제의 작성자의 해석 및 풀이 등으로 이루어져 있습니다.</br>본인이 42 교육생이거나 42 교육을 희망하는 분이라면 글을 먼저 보기보다는 고민해보고 읽어보기를 추천드립니다.


> 목적

1. Kubernetes에서 load balancer가 어떤 역할을 진행하는지 알 수 있다.
2. metallb를 kubernetes controller에 적용시킬 수 있다.

> Load Balancer

로드 밸런서(Load Balancer)는 서버에 가해지는 부하(load)를 분산(balancing)하는 기술, 혹은 방법을 말한다. 쿠버네티스상에서도 로드벨런서를 통해 클러스텅 가해지는 부하를 분산시킨다.

> metallb

쿠버네티스 서비스 타입은 **ClusterIP**, **NodePort**, **LoadBalancer**, **ExternalName**가 있는데, 이중 Load Balancer는 파드와 본인을 연결한 후, 로드밸런서의 IP를 이용해 외부에서 파드에 접근할 수 있는 방식이다. 온프레미스(로컬)환경에는 로드벨런서 장비가 없으므로 사용이 불가하지만, metallb와 같은 addon을 통해서 구현이 가능하다.</br></br>metallb를 minikube에 적용하려면 두가지 방법이 있다. 첫번째가 minikube의 addon을 사용하거나 직접 설치를 하면 된다.


**직접 설치**
```shell
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.9.4/manifests/namespace.yaml
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.9.4/manifests/metallb.yaml
# On first install only
kubectl create secret generic -n metallb-system memberlist --from-literal=secretkey="$(openssl rand -base64 128)"
```

**addon 추가**
```shell
minikube addons enable metallb 
```

정상적으로 설치되었다면 `get pods -n metallb-system`을 통해 controller를 확인할 수 있을 것이다.</br></br>이후 로드벨런서 설정을 해 줘야 하는데, 이 부분도 직접 설정할 수 도 있고 addon을 활용할 수 도 있다.
[addon](https://medium.com/faun/metallb-configuration-in-minikube-to-enable-kubernetes-service-of-type-loadbalancer-9559739787df)
