[K8s] Ingress

개발者·2023년 1월 11일
0

K8s

목록 보기
1/1

K8s 네트워크는 대부분의 클러스터들과 내부에서 동작하는 애플리케이션들이 외부와 통신하기 때문에 중요하다.

K8s 클러스터에서 동작하는 서비스가 공용으로 접속할 수 있게 직접적으로 노출 되어있으면 관리, 보안 측면에서 좋지 않다.

일반적으로, 공용 액세스를 허용하는 전용 서비스를 노출하고 클러스터에서 호스팅되는 올바른 대상 서비스로 요청을 라우팅할 수 있다. IngressIngress controller가 그 역할을 한다.

Ingress는 클러스터 외부의 HTTP 및 HTTPS 경로를 클러스터 내 서비스에 노출한다. 트래픽 라우팅은 Ingress에 정의된 rule에 의해 된다.

Ingress는 수신자로서 네트워크 트래픽을 제어한다. 수신자는 게스트가 건물에 들어갈 수 있는지 여부와 게스트의 요청에 따라 게스트가 어디로 가야 하는지(어느 방 또는 사무실)를 확인한다.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: minimal-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    kubernetes.io/ingress.class: nginx
  labels:
    app: test
spec:
  ingressClassName: nginx-example
  rules:
  - http:
      paths:
      - path: /testpath # 해당 경로에 들어온 요청을 어느 서비스로 전달할지
        pathType: Prefix
        backend:
          service:
            name: test # 해당 서비스로 전달
            port:
              number: 80

가장 중요한 annotation은 kubernetes.io/ingress.class: nginx 이다. Ingress rule을 이행할 Ingress Controller를 명시한다.

Ingress의 rule은 Ingress Controller 에서 수행된다. 즉 Ingress Controller 없이 ingress만으로 동작할 수 없다.


reference

profile
solrasido

0개의 댓글