NGINX 사용하기

Tier: Free, Premium, Ultimate Offering: Self-Managed

완전한 NGINX 배포를 제공하여 인그레스 컨트롤러로 사용할 수 있습니다. 모든 Kubernetes 제공업체가 기본적으로 NGINX Ingress를 지원하지는 않으므로, 호환성을 보장합니다.

note
NGINX 차트의 forkGitHub에서 가져왔습니다. 우리의 fork에서 어떤 부분이 수정되었는지에 대한 자세한 내용은 우리의 NGINX fork를 참조하십시오.
note
하나의 global.hosts.domain 값만 가능합니다. 여러 도메인을 지원하는 것은 이슈 3147에서 추적 중입니다.

NGINX 구성

구성 세부 정보는 NGINX 차트 문서를 참조하십시오.

전역 설정

우리의 차트들 사이에서 몇 가지 공통된 전역 설정을 공유합니다. 일반적인 구성 옵션인 GitLab 및 Registry 호스트명과 같은 공통 구성 옵션에 대해서는 Globals Documentation을 참조하십시오.

전역 설정을 사용하여 호스트 구성

GitLab 서버 및 레지스트리 서버의 호스트명은 우리의 Global settings 차트를 사용하여 구성할 수 있습니다.

GitLab Geo

GitLab Geo 트래픽을 위해 번들로 묶인 두 번째 NGINX 서브차트가 사전 구성되어 있으며, 기본 컨트롤러와 동일한 설정을 지원합니다. 컨트롤러는 nginx-ingress-geo.enabled=true로 활성화할 수 있습니다.

이 컨트롤러는 수신하는 모든 X-Forwarded-* 헤더를 수정하지 않도록 구성되어 있습니다. Geo 트래픽을 위한 다른 제공업체를 사용하려면 동일한 설정을 해야 합니다.

기본 컨트롤러의 값인 (nginx-ingress-geo.controller.ingressClassResource.controllerValue)은 k8s.io/nginx-ingress-geo로 설정되어 있으며, IngressClass 이름은 {ReleaseName}-nginx-geo로 설정되어 있어 기본 컨트롤러와의 간섭을 피하기 위한 조치입니다. IngressClass 이름은 global.geo.ingressClass로 재정의할 수 있습니다.

사용자 정의 헤더 처리는 주요 Geo 사이트에서 보내는 트래픽을 처리하기 위해 필요합니다. 만약 사이트가 주요 사이트로 승격될 예정이라면 두 번째 사이트에서만 사용해야 합니다.

페일오버 중에 IngressClass를 변경하면 다른 컨트롤러가 수신하는 트래픽을 처리하게 됩니다. 다른 컨트롤러에는 다른 로드밸런서 IP가 할당되어 있으므로 DNS 구성에 추가적인 변경이 필요할 수 있습니다.

이는 모든 Geo 사이트에서 Geo Ingress 컨트롤러를 활성화하고 기본 및 추가 웹 서비스 Ingresses를 해당 IngressClass (useGeoClass=true)를 사용하도록 구성함으로써 회피할 수 있습니다.

어노테이션 값 워드 차단 디렉터리

클러스터 운영자가 생성된 NGINX 구성에 대해 더 큰 제어를 필요로 할 때, NGINX Ingress는 표준 주석 및 ConfigMap 항목으로 처리되지 않는 “snippets”의 날것의 NGINX 구성을 삽입할 수 있도록 합니다.

이 구성 스니펫의 단점은 클러스터 운영자가 LUA 스크립팅 및 유사한 구성을 포함하여 GitLab 설치와 클러스터 자체의 보안을 compromise할 수 있는 구성 스니펫을 배포할 수 있도록 합니다. 이는 서비스 계정 토큰 및 시크릿을 노출할 수도 있습니다.

추가 세부 정보는 CVE-2021-25742이 upstream ingress-nginx 이슈를 참조하십시오.

GitLab Helm 차트 배포에서 CVE-2021-25742를 완화하기 위해 - nginx-ingress 커뮤니티에서 제안된 설정을 사용하여 annotation-value-word-blocklist을 설정합니다.

GitLab 인그레스 구성에서 구성 스니펫을 사용하거나 제3자 Ingress 객체에서 구성 스니펫을 사용하는 경우, GitLab 써드파티 도메인을 방문하려고 할 때 404 오류가 발생하거나 nginx-controller 로그에서 “invalid word” 오류가 발생할 수 있습니다. 이 경우 nginx-ingress.controller.config.annotation-value-word-blocklist 설정을 검토하고 조정하십시오.

또한 참조하십시오. “Invalid Word” errors in the nginx-controller logs and 404 errors in our chart troubleshooting docs.