Kubernets Ingress
란?
- HTTP나 HTTPS를 통해 클러스터 내부의 서비스를 외부로 호출하는 것
=> Layer 7의 동작을 처리할 수 있다.- 기능
- Service에 외부 URL을 제공
- 트래픽을 로드벨런싱
- SSL 인증서 처리
- Virtual Hosting 지정
다음을 보면
Ingress Controller
가 요청을 컨트롤 하는걸 볼 수 있다.
예를 들어 설명해보면ghkdtlwns987.com/login
으로 접속하면
Ingress Controller
에서login Pods
에 해당 요청을 전달한다.
Nginx Ingress Controller
설치
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.0.0/deploy/static/provider/baremetal/deploy.yaml
ingress-nginx-controller
service
의 NodePort
확인
Pod를 생성한다. 이때 생성된 Pod는 다음과 같다.
/
:svc-shopping
/customer
:svc-customer
/order
:svc-order
apiVersion: v1
kind: Pod
metadata:
name: pod-shopping
labels:
category: shopping
spec:
containers:
- name: container
image: kubetm/shopping:latest
---
apiVersion: v1
kind: Service
metadata:
name: svc-shopping
spec:
selector:
category: shopping
ports:
- port: 8080
apiVersion: v1
kind: Pod
metadata:
name: pod-customer
labels:
category: customer
spec:
containers:
- name: container
image: kubetm/customer
---
apiVersion: v1
kind: Service
metadata:
name: svc-customer
spec:
selector:
category: customer
ports:
- port: 8080
apiVersion: v1
kind: Pod
metadata:
name: pod-order
labels:
category: order
spec:
containers:
- name: container
image: kubetm/order
---
apiVersion: v1
kind: Service
metadata:
name: svc-order
spec:
selector:
category: order
ports:
- port: 8080
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: service-loadbalancing
spec:
ingressClassName: nginx
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: svc-shopping
port:
number: 8080
- path: /customer
pathType: Prefix
backend:
service:
name: svc-customer
port:
number: 8080
- path: /order
pathType: Prefix
backend:
service:
name: svc-order
port:
number: 8080
이후 각각 생성한다.
kubectl create ns ingress-test
kubectl apply -f ingress.yaml-n ingress-test
kubectl apply -f customer.yaml -n ingress-test
kubectl apply -f order.yaml -n ingress-test
kubectl apply -f shopping.yaml -n ingress-test
다음 그림을 보면
worker:31927
로 접속해 특정 경로로 이동하면 각자의 페이지가 출력된다.
이번엔 세 종류의 Pods를 생성하고 Ingress를 생성해 해당하는 Rule로 접근하는 실습을 진행했고 이를 Service Loadbalancing 이라 한다.
다음엔 Canary Deployment 에 대해 알아본다.