NGINX 사용하기

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

우리는 Ingress Controller로 사용하기 위해 완전한 NGINX 배포를 제공합니다. 모든
Kubernetes 공급자가 NGINX Ingress를 기본적으로 지원하는 것은 아닙니다.
호환성을 보장하기 위함입니다.

note
우리의 fork
GitHub에서 가져온 NGINX 차트입니다.
우리의 포크에서 수정된 내용에 대한 자세한 내용은 우리 NGINX 포크를 참조하십시오.
note
global.hosts.domain 값은 하나만 가능합니다.
여러 도메인에 대한 지원은 issue 3147에서 추적되고 있습니다.

NGINX 구성하기

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

전역 설정

우리는 우리의 차트 간에 일부 공통 전역 설정을 공유합니다.
GitLab 및 Registry 호스트 이름과 같은 일반 구성 옵션은 Globals Documentation를 참조하십시오.

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

GitLab 서버와 Registry 서버의 호스트 이름은
우리의 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
재정의할 수 있습니다.

사용자 지정 헤더 처리는 주 사이트에서 이차 사이트에서 전달된 트래픽을 처리하기 위해서만 필요합니다.
사이트가 주 사이트로 승격될 예정인 경우에만 이차에서 사용해야 합니다.

Failover 중 IngressClass를 변경하면 다른 컨트롤러가 수신 트래픽을 처리하게 됩니다.
다른 컨트롤러는 할당된 다른 loadbalancer IP를 가지고 있으므로 DNS 구성을 추가로 변경해야 할 수 있습니다.

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

주석 값 단어 블록리스트

클러스터 운영자가 생성된 NGINX 구성을 보다 잘 제어해야 하는 상황에서
NGINX Ingress는 구성 스니펫을 허용합니다.
이는 표준 주석 및 ConfigMap 항목으로 해결되지 않은 원시 NGINX 구성의 “스니펫”을 삽입합니다.

이 구성 스니펫의 단점은 클러스터 운영자가 LUA 스크립팅 및
서비스 계정 토큰 및 비밀을 노출하는 등 GitLab 설치 및 클러스터의 보안을
위험에 빠뜨릴 수 있는 유사한 구성을 포함하는 Ingress 객체를 배포할 수 있도록 한다는 것입니다.

자세한 내용은 CVE-2021-25742
이 upstream ingress-nginx issue를 참조하십시오.

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

GitLab Ingress 구성에서 구성 스니펫을 사용하거나
구성 스니펫을 사용하는 타사 Ingress 객체와 GitLab NGINX Ingress Controller를 사용하는 경우,
GitLab 타사 도메인에 방문할 때 404 오류가 발생할 수 있으며
nginx-controller 로그에서 “잘못된 단어” 오류가 발생할 수 있습니다.
이 경우 nginx-ingress.controller.config.annotation-value-word-blocklist 설정을 검토하고 조정해야 합니다.

또한 “Invalid Word” 오류가 nginx-controller 로그에서 발생하고
404 오류가 발생하는 문제 해결 문서
를 참조하십시오.