[Kubernetes] Ingress
이번 포스팅에서는 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://kubernetes.io/docs/concepts/services-networking/ingress/