Kubernetes Ingress
•
HTTP나 HTTPS를 통해 클러스터 내부의 서비스를 외부로 노출
•
기능
◦
Service에 외부 URL을 제공
◦
트래픽을 로드밸런싱
◦
SSL 인증서 처리
◦
Virtual hosting을 지원
Ingress Controller 설치
해당 링크는 kubernetes docs Ingress Controller 파트에서 확인할 수 있음
AWS, GCE도 지원해주며 Private 환경에서는 Bare metal을 설치하라고 함
# Bare metal clusters 설치
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.13.2/deploy/static/provider/baremetal/deploy.yaml
YAML
복사
Ingress Controller 또한 yaml 파일로 구성되어있어 아래의 방법으로 받아서 확인해 볼 수 있음
# Bare metal clusters 파일 받기
wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.13.2/deploy/static/provider/baremetal/deploy.yaml
YAML
복사
Ingress를 이용한 웹서비스 운영
Ingress 를 활용하기 위해선 Ingress Controller을 설치해야함
웹서비스 구성
•
Ingress Controller
◦
Ingress
•
Service
◦
marvel-service
◦
pay-service
•
Deployment
◦
mable-collection
•
ReplicationController
◦
pay
1.
Ingress Controller 포트 고정
포트포워딩을 하기위해 Ingress Controller을 설치할 때 받은 yaml 파일에 Service에서 http와 https의 nodeport를 고정
2.
Context 변경
Ingress Controller이 작동하는 namespace에서 작업하기 context를 변경합니다.
# context config
kubectl config view
# context 생성
kubectl config set-context ingress-admin@kubernetes --cluster=kubernetes --user=kubernetes-admin --namespace ingress-nginx
# context 변경
kubectl config use-context ingress-admin@kubernetes
YAML
복사
3.
pod, service 생성
# marvel-home.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: marvel-home
spec:
replicas: 1
selector:
matchLabels:
name: marvel
template:
metadata:
labels:
name: marvel
spec:
containers:
- image: smlinux/marvel-collection
name: marvel-container
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: marvel-service
spec:
selector:
name: marvel
ports:
- protocol: TCP
port: 80
targetPort: 80
YAML
복사
# pay.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: pay-rc
spec:
replicas: 3
template:
metadata:
labels:
app: pay
spec:
containers:
- image: smlinux/pay
name: pay-container
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: pay-service
spec:
selector:
app: pay
ports:
- protocol: TCP
port: 80
targetPort: 8080
YAML
복사
생성
kubectl create -f marvel-home.yaml -f pay.yaml
Shell
복사
4.
Ingress Rule
# ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: marvel-ingress
spec:
rules:
- http:
paths:
- path: /
backend:
service:
name: marvel-service
port:
number: 80
- path: /pay
backend:
service:
name: pay-service
port:
number: 80
YAML
복사
생성
kubectl create -f ingress.yaml
Shell
복사
마지막으로 포트포워딩을 해주면 완성됨
