외부 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 docs에서 --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를 표시하기 위해 주석을 사용합니다(여기 참조). 이 차트에서 사용할 Ingress 클래스를 구성할 수 있도록 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