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