[kubernetes] Ingress -1

박원균·2021년 11월 3일
0

Kubernetes

목록 보기
6/24
post-thumbnail

이 포스팅은 쿠버네티스 문서 참고했습니다.

클러스터 내의 서비스에 대한 외부 접근을 관리하는 API 오브젝트이며, 일반적으로 HTTP를 관리합니다

인그레스는 부하 분산,SSL 종료, 명칭 기반의 가상 호스팅을 제공할 수 있습니다.

용어

  • Edge router : 클러스터에 방화벽 정책을 적용하는 라우터.
    클라우드 공급자 또는 물리적 하드웨어의 일부에서 관리한느 게이트웨이일 수 있습니다.
  • Cluster network :쿠버네티스 네트워킹 모델에따라 클러스터 내부에서 통신을 용이하게 하는 논리적 또는 물리적 링크 집합입니다.

인그레스란 ?

클러스터 외부에서 클러스터 내부 서비스로 HTTP와 HTTPS 경로를 노출합니다.

트래픽 라우팅은 인그레스 리소스에 정의된 규칙에 의해 컨트롤됩니다.

인그레스는 외부에서 서비스로 접속이 가능한 URL, 로드밸런스 트래픽, SSL/ TLS 종료 그리고 이름-기반의 가상 호스팅을 제공하도록 구성할 수 있습니다.

인그레스 컨트롤러는 일반적으로 로드밸런서를 사용해서 인그레스를 수행할 책임이 있으며, 트래픽을 처리하는데 도움이 되도록 에지 라우터 도는 추가 프런트 엔드를 구성할 수도 있습니다.

인그레스는 임의의 포트 또는 프로토콜을 노출시키지 않습니다. HTTP와 HTTPS 이외의 서비스를 인터넷에 노출할려면 Service.Type=NodePort 또는 Service.Type=LoacBalancer유형의 서비스를 사용합니다.

인그레스 컨트롤러

인그레스 리소스가 작동하려면 클러스터는 실행 중인 인그레스 컨트롤러가 반드시 필요합니다.

kube-controller-manager 바이너리의 일부로 실행되는 컨트롤러의 다른 타입과 달리 인그레스 컨트롤러는 클러스터와 함께 자동으로 실행되지 않습니다.

프로젝트로서 쿠버네티스는 AWS,GCE,nginx 인그레스 컨트롤러를 지원하고 유지합니다.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: minimal-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - http:
      paths:
      - path: /testpath
        pathType: Prefix
        backend:
          service:
            name: test
            port:
              number: 80

인그레스 오브젝트의 이름은 유효한 DNS 서브도메인 이름어야합니다. 인그레스는 종종 어노테이션을 이용해서 인그레스 컨트롤러에 따라 몇 가지 옵션을 구성합니다. 다른 인그레스 컨트롤러는 다른 어노테이션을 지원합니다. 지원되는 어노테이션을 확인하려면 선택한 인그레스 컨트롤러의 설명서를 확인해야합니다.

인그레스 사양에는 로드 밸런서 또는 프록시 서버를 구성하는데 필요한 모든 정보가 있습니다.

들어오는 요청과 일치하는 규칙 목록을 포함하는것이 가장 중요하며 인그레스 리소스는 HTTP(S) 트래픽을 지시하는 규칙만을 지원합니다.

인그레스 규칙

각 HTTP 규칙에는 다음의 정보가 포함됩니다.

  • 선택적 호스트
  • 경로 목록(예,/testpath)에는 각각 service.nameservice.port.name또는 service.port.number가 정의되어 있는 관련 백엔드를 가지고 있습니다. 로드 밸런서가 트래픽을 참조된 서비스를 보내기 전에 호스트와 경로가 모두 수신요청의 내용과 일치해야합니다.
  • 백엔드는 서비스와 포트 이름의 조합입니다.
    호스트와 규칙 경로가 일치하는 인그레스에 대한 HTTP(s) 요청은 백엔드 목록으로 전송됩니다.

defaultBackend는 종종 사양의 경로와 일치하지 않는 서비스에 대한 모든 요청을 처리하도록 인그레스 컨트롤러에 구성되는 경우가 많습니다.

DefaultBackend

규칙이 없는 인그레스는 모든 트래픽을 단일 기본 백엔드로 전송합니다. defaultBackend는 일반적으로 인그레스 컨트롤러의 구성 옵션이며, 인그레스 리소스에 지정되어 있지 않습니다.

리소스 백엔드

Resource 백엔드는 인그레스 오브젝트와 동일한 네임스페이스 내에 있는 다른 쿠버네티스 리소스에 대한 ObjectRef입니다. Resource는 서비스와 상호 배타적인 설정이며, 둘 다 지정하면 유효성 검사에 실패합니다.

Resource 백엔드의 일반적인 용도는 정적 자산이 있는 오브젝트 스토리지 백엔드로 데이터를 수신하는 것입니다.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-resource-backend
spec:
  defaultBackend:
    resource:
      apiGroup: k8s.example.com
      kind: StorageBucket
      name: static-assets
  rules:
    - http:
        paths:
          - path: /icons
            pathType: ImplementationSpecific
            backend:
              resource:
                apiGroup: k8s.example.com
                kind: StorageBucket
                name: icon-assets
profile
함바라기

0개의 댓글