Kubernetes

Ingress

라온클 2023. 2. 7. 06:27

<한줄 요약>

  • Ingress는 HTTP, HTTPS 등 네트워크 Layer 7에 대한 설정을 담당하는 리소스다.




<세줄 요약>

  • Ingress의 가장 기본적인 역할은 외부 HTTP 호출에 대한 트래픽을 처리하는 것이다. (예시 : 부하 분산, TLS 종료, 도메인 기반 라우팅 기능 등)
  • Ingress는 쿠버네티스 클러스터 내부 서비스에 외부에서 접근 가능한 URL을 부여함으로써 일반 사용자들이 쉽게 접근할 수 있는 통로를 제공한다.
  • Ingress에는 그에 맞는 Controller가 존재하며, Ingress Controller는 Ingress에 정의된 트래픽 라우팅 규칙을 보고 라우팅을 수행한다.


<특징>
Ingress 리소스 자체로는 어떠한 프로그램이 작동하는 코드가 아니라 트래픽 처리에 대한 정보를 담고 있는 정의에 가깝다.
예를 들어, 일반 사용자들이 foo.bar.com/account 으로 접속하느냐, foo.bar.com/shopping 으로 접속하느냐에 따라 트래픽을 어디로 이동시킬지 정의하는 것이다.

실제로 외부 트래픽을 Service로 전달하는 주체는 Ingress Controller다.
Ingress는 트래픽 처리를 정의하는 오브젝트!
Ingress Controller는 트래픽 처리를 수행하는 주체!


이미지 출처 : https://kubernetes.io/docs/concepts/services-networking/ingress/#terminology



(foo.bar.com/account 로 가는 트래픽을 정의한다고 했을 때) 클러스터 안의 그림을 자세히 그려보면 다음과 같다.

DKOS 스터디 때 배운 거 복습복습





<만드는 법>

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: {Ingress이름}
  annotations:
    kubernetes.io/ingress.class: "nginx"
spec:
  rules:
  - host: "{도메인}"
    http:
      paths:
      - path: "/{경로}"
        pathType: Prefix
        backend:
          service:
            name: {연결할 서비스 이름}
            port:
              number: {연결할 서비스의 port}




<존재 이유 or 흐름 속 의미>
Ingress는 쿠버네티스는 관리자에게 Layer7에 대한 설정을, 일반 사용자들에게는 쉽게 접근할 수 있는 URL을 제공해준다.





참고 :
쿠버네티스 스터디 <DKOS>

책 <컨테이너 환경을 구축을 위한 쿠버네티스/도커>
책 <쿠버네티스 완벽 가이드>
공식 문서 Ingress