외부 NGINX Ingress Controller와 GitLab 차트 구성

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

외부 Ingress Controller의 TCP 서비스

GitLab Shell 구성 요소는 TCP 트래픽이 포트 22를 통과해야 합니다(기본값; 변경 가능). Ingress는 직접적으로 TCP 서비스를 지원하지 않기 때문에 추가 구성이 필요합니다. NGINX Ingress Controller가 직접 배포(즉, Kubernetes 사양 파일로)되었거나 공식 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가 포트 22뿐만 아니라 80과 443을 노출하도록 확인하세요.

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 class를 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