Ingress

Ingress는 클러스터 외부의 HTTP 및 HTTPS 경로를 services에 노출 합니다. 트래픽 라우팅은 Ingress 리소스에 정의 된 규칙에 의해 제어 됩니다.

다음은 Ingress가 모든 트래픽을 하나의 서비스로 보내는 간단한 예 입니다.

Ingress는 서비스에 외부에서 연결할 수있는 URL을 제공하고, 트래픽 부하를 분산하고, SSL/TLS를 터미네이션 하고, 이름 기반의 가상 호스팅을 제공 하도록 구성 할 수 있습니다. Ingress controller는 일반적으로 로드 밸런서를 사용하여 Ingress를 수행하는 역할을 하지만, 트래픽을 처리하는 데 도움이 되도록 엣지 라우터 또는 추가 프런트 엔드를 구성 할 수 도 있습니다.

Ingress는 임의의 포트 또는 프로토콜을 노출하지 않습니다. HTTP 및 HTTPS 이외의 서비스를 인터넷에 노출하는 경우 일반적으로 Service.Type = NodePort 또는 Service.Type=LoadBalancer를 사용합니다.

Ingress는 외부 요청 처리에 대한 규칙들을 설정해놓은 것을 의미하며, 이런 설정이 동작하기 위해서 필요한 것이 Ingress controller입니다.

AWS Load Balancer Controller와 같은 Ingress controller를 배포해야 하며, 여러 Ingress 컨트롤러 중에서 선택할 수 있으며 다양한 Ingress controller 마다 약간 다르게 작동합니다.

ingress-nginx를 위한 최소 Ingress 리소스 예 입니다.

다른 모든 쿠버네티스 리소스와 마찬가지로 Ingress에는 apiVersion,kind,metadata 필드가 필요합니다. Ingress 객체의 이름은 유효한 DNS subdomain name 이어야 합니다. 설정 파일 작업에 대한 일반 정보는 deploying applications, configuring containers, managing resources를 참조 하십시오. Ingress는 annotation을 사용하여 Ingress 컨트롤러의 일부 옵션을 빈번하게 구성 합니다. 예로 rewrite-target annotation가 있습니다. 다른 Ingress controller는 다른 annotation을 지원합니다. 어떤 annotation이 지원 되는지 알아 보려면 선택한 Ingress 컨트롤러에 대한 문서를 검토 하십시오.

Ingress spec에는 로드 밸런서 또는 프록시 서버를 구성하는 데 필요한 모든 정보가 포함됩니다. 가장 중요한 것은 모든 수신 요청과 일치하는 규칙 목록이 포함되어 있다는 것 입니다. Ingress 리소스는 HTTP 트래픽을 전달하기 위한 규칙만 지원 합니다.

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

  • 선택적 호스트. 이 예에서는 호스트가 지정되지 않았으므로 지정된 IP 주소를 통해 모든 인바운드 HTTP 트래픽에 규칙이 적용 됩니다. 호스트가 제공되면 (예:foo.bar.com) 규칙이 해당 호스트에 적용 됩니다.

  • 각각 serviceName 및 servicePort로 정의된 연관된 백엔드가 있는 경로 목록 (예:/testpath). 로드 밸런서가 트래픽을 참조 된 서비스로 보내기 전에 호스트와 경로가 수신 요청의 콘텐츠와 일치해야 합니다.

  • 백엔드는 Services doc에 설명된 대로 서비스 및 포트 이름의 조합 입니다. 규칙의 호스트 및 경로와 일치하는 Ingress에 대한 HTTP (및 HTTPS) 요청이 나열된 백엔드로 전송 됩니다.

기본 백엔드는 종종 사양의 경로와 일치하지 않는 모든 요청을 처리하는 Ingress 컨트롤러에서 구성 됩니다.

규칙이 없는 Ingress는 모든 트래픽을 단일 기본 백엔드로 보냅니다. 기본 백엔드는 일반적으로 Ingress controller의 구성 옵션이며 Ingress 리소스에 지정되지 않습니다.

Ingress 객체의 HTTP 요청과 일치하는 호스트 또는 경로가 없으면 트래픽이 기본 백엔드로 라우팅됩니다.

여기를 클릭하여 관련 주제를 더 읽어 보십시오.

Last updated