외부 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