외부 NGINX Ingress Controller로 GitLab 차트 구성하기

이 차트는 공식 NGINX Ingress 구현을 사용하기 위한 Ingress 리소스를 구성합니다. NGINX Ingress Controller는 이 차트의 일부로 배포됩니다. 클러스터에 이미 있는 기존 NGINX Ingress Controller를 재사용하려면 이 가이드가 도움이 될 것입니다.

외부 Ingress Controller에서의 TCP 서비스

GitLab Shell 구성 요소는 기본적으로 포트 22를 통해 TCP 트래픽을 통과해야 합니다(기본 설정;이를 변경할 수 있음). Ingress는 직접적으로 TCP 서비스를 지원하지 않으므로 추가 구성이 필요합니다. NGINX Ingress Controller가 직접 배포되었거나 공식 Helm 차트를 통해 배포되었을 수 있습니다. 배포 접근 방식에 따라 TCP 통과 구성이 다를 것입니다.

직접 배포

직접 배포하는 경우, NGINX Ingress Controller는 ConfigMap을 사용하여 TCP 서비스를 구성합니다(여기를 참조하세요: 문서). GitLab 차트가 gitlab 네임스페이스에 배포되고 Helm 릴리스 이름이 mygitlab이라면 ConfigMap은 다음과 같아야 합니다:

apiVersion: v1
kind: ConfigMap
metadata:
  name: tcp-configmap-example
data:
  22: "gitlab/mygitlab-gitlab-shell:22"

ConfigMap을 획득한 후 NGINX Ingress Controller 문서에 설명된대로 --tcp-services-configmap 옵션을 사용하여 활성화할 수 있습니다.

args:
  - /nginx-ingress-controller
  - --tcp-services-configmap=gitlab/tcp-configmap-example

마지막으로 NGINX Ingress Controller의 Service가 80 및 443 외에도 포트 22를 노출하도록 확인하세요.

Helm 배포

NGINX Ingress Controller를 Helm 차트를 사용하여 설치하거나 계획 중이라면 명령줄을 사용하여 차트에 값을 추가해야 합니다:

--set tcp.22="gitlab/mygitlab-gitlab-shell:22"

또는 values.yaml 파일을 사용합니다:

tcp:
  22: "gitlab/mygitlab-gitlab-shell:22"

값의 형식은 “직접 배포” 섹션에 설명된 것과 동일합니다.

GitLab Ingress 옵션 사용자화

NGINX Ingress Controller는 특정 Ingress를 처리할 Ingress Controller를 표시하는 주석을 사용합니다(여기를 참조하세요: 문서). 이 차트에서 이를 사용하여 구성하려면 global.ingress.class 설정을 사용합니다. 이를 Helm 옵션에 설정하세요.

--set global.ingress.class=myingressclass

필수는 아니지만 외부 Ingress Controller를 사용하는 경우 기본적으로 이 차트에 배포된 Ingress Controller를 비활성화해야 할 것입니다.

--set nginx-ingress.enabled=false

사용자 정의 인증서 관리

귀하의 TLS 옵션의 전체 범위는 다른 곳에서 문서화되어 있습니다(여기).
외부 Ingress Controller를 사용하는 경우 외부 cert-manager 인스턴스를 사용하거나 다른 사용자 정의 방법으로 인증서를 관리할 수 있습니다. TLS 옵션에 대한 전체 문서는 여기에 있지만 이 토론의 목적을 위해 cert-manager 차트를 비활성화하고 내장 인증서 리소스를 찾지 않도록 두 값이 설정되어야 합니다.

--set certmanager.install=false
--set global.ingress.configureCertmanager=false