앞에서 외부랑 통신하는 방법들은 Layer4단에서 처리하는 방식
이들과는 다르게 ingress는
서비스의 한 종류가 아닌 컨트롤러(ingress-controller)가 직접 수행하는 외부와 통신
즉, 여러 서비스들은 같은ip 주소로 외부에 노출할때 가장 유용한 방법
ingress (인그레스)
클러스터 외부-> 내부로 접근하는 요청을 어떻게(Layer7단에서) 처리할지 정의한 규칙들의 모임
(참고) egress(이그레스) : 서버 내부-> 외부로 나가는 트래픽
어떤 규칙들?
- 외부에서 접근가능한 url이 어떤건지
- 트래픽을 어떻게 로드밸런싱할지
- SSL/TLS 인증서를 어떻게 적용할지
- IP가 아닌 도메인기반으로 어떻게 주소처리를 할지
즉, 외부가 쿠버네티스에서 실행중인 deployment와 서비스에 접근하기 위한 일종의 관문(Gateway)
ingress를 사용하지 않으면? Layer4단에서 네트워크 요청을 처리하는 수준
외부요청을 nodeport, externalIP가 처리,
네트워크에 대한 세부적인 처리로직을 구현하는데는 한계가 있다
따라서, 서비스를 외부로 노출시켜서 제공하고 싶으면 ingress를 사용해한다
ingress를 사용하기 위해서 필요한것
1. ingress 오브젝트(yaml파일) : 네트워크 요청을 어떻게 처리할지 규칙 정의
2. ingress 컨트롤러 : 정의한 ingress 규칙을 실제로 동작하게 해줌
ingress object(yaml파일)
host : ingress 규칙을 적용하기 위해 외부에서 접근을 요청 할 호스트명
http : Layer7단에서 적용할 프로토콜
path : 외부에서 접근을 요청할 경로
backend / serviceName : 쿠버네티스에서 받을 서비스명
backend / servicePort : 쿠버네티스에서 받을 서비스포트
단지, 규칙을 정의하는 yaml파일을 선언한 것일뿐.
실제로 이 규칙을 수행하는건 컨트롤러
그래서 컨트롤러가 없으면 실제로 동작하지 않음
즉, ingress controller가 외부로부터 요청을 받으면 어떻게 수행할지 정의한 ingress 규칙에 의해서 동작
ingress controller
ingress 규칙을 실제로 동작하게 해주는 컨트롤러
쿠버네티스에서 제공하는 컨트롤러는?
1) ingress-gce : 구글클라우드를 사용한다면 제공해주는 컨트롤러 (자동으로 사용가능)
2) ingress-nginx : 그 외의 클라우드 또는 온프레미스 환경에서 사용한다면 제공해주는 컨트롤러(직접설치)
(https://github.com/kubernetes/ingress-nginx)
ingress로 설정된 내용을 nginx 환경설정으로 변경해서 nginx로 적용
사전환경
kops로 클러스터를 구성한 상태
https://pearlluck.tistory.com/166?category=854934
참고
https://blog.naver.com/alice_k106/221502890249
참고
https://gruuuuu.github.io/cloud/k8s-service/#
https://arisu1000.tistory.com/27840
'🌴 DevOps > Docker & K8s' 카테고리의 다른 글
[Docker] windows 10에 docker 설치하기 (1) | 2021.03.30 |
---|---|
컨테이너기반 3Tier구성 (Nginx/Tomcat/MySQL) (0) | 2020.12.27 |
쿠버네티스 ingress 구성 (2/3) - ingress / Nginx-Controller 생성 (0) | 2020.05.24 |
쿠버네티스로 외부통신하기(3/3) - LoadBalancer (0) | 2020.05.24 |
쿠버네티스로 외부통신하기(2/3) - NodePort (0) | 2020.05.24 |
쿠버네티스로 외부통신하기(1/3) - ClusterIP/Kube-Proxy (0) | 2020.05.24 |