( 참고 : [교재] 핵심만 콕! 쿠버네티스 )
Ingress 리소스
1. Ingress란?
Ingress = HTTP,HTTPS 등 네트워크 Layer7에 대한 설정을 담당하는 리소스
- 외부 HTTP 호출에 대한 트래픽 처리
- cluster 내부 서비스에, “외부에서 접근 가능한 URL”을 부여
- Ingress Controller가 존재
1-1. Ingress Controller란?
Ingress 리소스
- 프로그램,코드라기보다는,
- “트래픽 처리에 대한 정보를 담는 규칙”
Ingress Controller
- Ingress의 규칙따라 외부의 트래픽을 service로 전달
- 따로 설치해줘야!
1-2. NGINX Ingress Controller
대표적인 Ingress Controller 중 하나!
1-3. NGINX Ingress Controller 설치
step 1) Controller 설치를 위한 “네임스페이스” 생성
kubectl create ns ctrl
step 2) Controller 관련된 리소스들 생성 ( pod, service )
helm install nginx-ingress stable/nginx-ingress --version 1.40.3 -n ctrl
step 3) 생성된 것을 확인
kubectl get pod -n ctrl
kubectl get svc -n ctrl
2. Ingress 기본 사용법
2-1. Ingress 생성
step 1) (ingress와 연결할) nginx 서비스 생성 & 확인
kubectl run mynginx --image nginx --expose --port 80
kubectl get pod,svc mynginx
step 2) Ingress 리소스 정의
# mynginx-ingress.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
name: mynginx
spec:
rules:
- host: 10.0.1.1.sslip.io
http:
paths:
- path: /
backend:
serviceName: mynginx
servicePort: 80
annotations
- label과 유사하지만, 필터하는데에는 사용 X
- Ingress Controller에 정보 전달할 용으로
- ex)
kubernetes.io/ingress.class: nginx
- 해당 Ingress가 NGINX Ingress Controller에 의해 처리될 것을 의미
rules
: 외부 traffic 처리 규칙
step 3) Ingree 리소스 생성 & 조회
kubectl apply -f mynginx-ingress.yaml
kubectl get ingress
# NAME CLASS HOSTS ADDRESS PORTS AGE
# mynginx <none> 10.0.1.1.sslip.io 10.0.1.1 80 10m
step 4) mynginx 서비스 연결
- mynginx의 80번 포트로 전달될 것
curl 10.0.1.1.sslip.io