IT/Kubernetes

[Kubernetes] Ingress

물통꿀꿀이 2019. 3. 31. 21:03

이번 포스팅에서는 Ingress에 대해 알아보겠다.


Ingress

Ingress는 Cluster 외부에서 Service로 접근 할 수 있도록 하는 리소스이다. 그런데 Service의 NodePort와 비슷해보이는데 큰 차이점이 있다.

NodePort는 L4 (TCP, UDP) 까지만 다룰 수 있지만 Ingress는 L7 (HTTP, HTTPS)를 다룰 수 있다. 때문에 Service는 Ingress를 가상 호스트 및 경로 기반 라우팅(Routing), 로드 밸런싱 등의 역할로 수행 할 수 있다. (아래 그림 1 참조)

그림 1. Ingress Overview


그럼 관련 Service, Ingress 매니페스트 파일은 다음과 같다.

apiVersion: v1

kind: Service

metadata:

 name: echo

spec:

 selector:

  app: echo

 ports:

  - name: http

    port: 80 


apiVersion: extensions/v1beta1

kind: Ingress

metadata:

 name: echo

spec:

 rules:

 - host: test.example // 지정 호스트  

   http:

    paths:

    - path: /

      backend:

       serviceName: echo

       servicePort: 80 

위 파일에서 볼 수 있듯이 내부 Service의 경로를 설정한다. (Root 경로의 80번 포트를 갖는 echo Service) 해당 파일을 실행하면 다음과 같다.

그림 2. Service & Ingress


그림 2를 확인하면 매피페스트 파일에서 설정했던 호스트 값이 Ingress에 적용된 것을 확인 할 수 있다. (호스트 파일을 test.example 파일을 적용하면 Ingress가 적용된 Service를 사용 할 수 있다.)


그림 3. Ingress


이렇듯 간단히 Ingress에 대해 알아보았다. 좀 더 자세한 부분은 포스팅을 계속해서 이어나가면서 조금씩 알아보도록 하겠다.


Reference

https://matthewpalmer.net/kubernetes-app-developer/articles/kubernetes-ingress-guide-nginx-example.html

https://kubernetes.io/docs/concepts/services-networking/ingress/