NGINX 사용하기

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

우리는 Ingress Controller로 사용할 완전한 NGINX 배치를 제공합니다. 모든 Kubernetes 제공 업체가 기본적으로 NGINX Ingress를 지원하지는 않으므로 호환성을 확보하기 위해 필요합니다.

note
우리의 NGINX 차트의 forkGitHub에서 가져왔습니다. 우리의 fork에서 어떤 점이 수정되었는지에 대한 자세한 내용은 Our NGINX fork를 참조하십시오.

참고: 하나의 global.hosts.domain 값만 가능합니다. 여러 도메인에 대한 지원은 issue 3147에서 추적 중입니다.

NGINX 구성

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

전역 설정

우리는 일부 공통 전역 설정을 여러 차트에서 공유합니다. 일반 구성 옵션인 GitLab 및 Registry 호스트명과 같은 공통 구성 옵션에 대해서는 Globals Documentation을 참조하십시오.

글로벌 설정을 사용하여 호스트 구성

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

GitLab Geo

두 번째 NGINX 하위 차트는 GitLab Geo 트래픽을 위해 번들링되어 미리 구성되어 있으며, 기본 컨트롤러와 동일한 설정을 지원합니다. 컨트롤러는 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 사이트에서 들어오는 트래픽을 처리하기 위해서만 필요합니다. 프라이머리 Geo 사이트에서 사용하려면 두 번째 사이트에서만 사용해야 합니다.

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

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

어노테이션 값 워드 차단 목록

클러스터 운영자가 생성된 NGINX 구성에 대해 더 큰 제어 권을 필요로 하는 상황에서, NGINX Ingress는 구성 조각을 허용하여 표준 어노테이션 및 ConfigMap 항목에서 다루지 않는 “구성 조각”을 삽입할 수 있습니다.

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

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

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

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

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