쿠버네티스에서 HTTP(S)기반의 L7 로드밸런싱 기능을 제공하는 컴포넌트를 Ingress라고 한다.
Ingress Controller 설치
아래와 같은 설치 명령어로 해당 파일을 배포하면 인그레스 컨트롤러의 새로운 namespace가 생성된다.
kubectl apply -f http://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/baremetal/deploy.yaml
Metal LB 설치
온프레미스 환경에서는 로드밸런서 타입을 이용할 수 없기 때문에 로드밸런서 타입의 서비스를 배포할 수 있게 해주는 도구인 Metal Load-balancer를 설치한다.
아래와 같은 설치 명령어로 해당 파일을 배포하면 Metal LB의 새로운 namespace가 생성된다.
kubectl apply -f https://raw.githubusercontent.com/google/metallb/v0.8.3/manifests/metallb.yaml
ConfigMap 배포
ConfigMap 배포 예제
apiVersion: v1 kind: ConfigMap metadata: namespace: metallb-system name: config data: config: | address-pools: - name: default protocol: layer2 addresses: - 192.168.1.240-192.168.1.250
11~12 라인 addresses 설정을 자신이 외부로 노출할 수 있는 IP 범위로 작성하면 된다.
아래와 같은 명령어로 ConfigMap 배포
kubectl apply -f config.yaml
서비스 배포
로드밸런서 타입의 Service 배포 예제
apiVersion: apps/v1 kind: Deployment metadata: name: nginx spec: selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1 ports: - name: http containerPort: 80 --- apiVersion: v1 kind: Service metadata: name: nginx spec: ports: - name: http port: 8080 protocol: TCP targetPort: 80 selector: app: nginx type: LoadBalancer
다음과 같은 명령어로 ConfigMap 배포
kubectl apply -f service.yaml
Add Comment