Search

8. Ingress

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에서 httphttpsnodeport를 고정
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
복사
마지막으로 포트포워딩을 해주면 완성됨