Kubernetes 쿠버네티스 - Ingress

salgu·2023년 5월 5일
0

kubernetes

목록 보기
10/16

Ingress란


  • Service 추상화, 의미있는 단일 엔드포인트 제공
  • 클라이언트는 클러스터 안에 있는 여러 Service를 하나의 IP로 접근
  • 클라이언트가 호출한 Host 헤더나 Path를 통해 Service를 구분하고 트래픽을 포워딩
  • Spring Cloud의 Gateway와 비슷한 역할

클러스터 외부에서 클러스터 내부 서비스로 HTTP와 HTTPS 경로를 노출합니다. 트래픽 라우팅은 인그레스 리소스에 정의된 규칙에 의해 컨트롤된다.



선언 방식


Host로 Service에 맵핑 방식

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: snackbar
  namespace: snackbar
  labels:
    project: snackbar
    
spec:
  rules:
  - host: order.snackbar.com	# Host Header가 일치하는 요청만 매칭
    http:
      paths:
      - pathType: Prefix		# /로 시작하는 모든 경로에 매칭
        path: /
        backend:				# order 서비스의 80포트로 포워딩
          service:
            name: order
            port:
              number: 80
  - host: payment.snackbar.com	# Host Header가 일치하는 요청만 매칭
    http:
      paths:
      - pathType: Prefix		# /로 시작하는 모든 경로에 매칭
        path: /
        backend:				# order 서비스의 80포트로 포워딩
          service:
            name: payment
            port:
              number: 80

하나의 Host에 URL path별 서비스 맵핑 방식

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: snackbar
  namespace: snackbar
  labels:
    project: snackbar
    
spec:
  rulse:
  - http:
      paths:
      - pathType: Prefix
        path: /order
        backend:
          service:
            name: order
            port:
              number: 80
      - pathType: Prefix
        path: /payment
        backend:
         service:
            name: payment
            port:
              number: 80

defaultBackend 설정 - Ingress에 정의되지 않은 요청

spec:
  defaultBackend:
    service:
      name: order
      port:
       number: 80
  • 정의하지 않은 Host Header request를 받은 경우 라우팅
  • path 표현식과 일치하지 않는 경우 라우팅





reference :

profile
https://github.com/leeeesanggyu, leeeesanggyu@gmail.com

0개의 댓글