외부 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는 직접 배포되었을 수도 있고 (예: Kubernetes spec 파일로) 공식 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
을 가지고 나면, --tcp-services-configmap
옵션을 사용하여 NGINX Ingress Controller 문서에서 설명한 대로 활성화할 수 있습니다.
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 옵션에 대한 전체 문서는 여기에 있으며, 그러나 이 논의의 목적을 위해 인증서 관리 차트를 비활성화하고 GitLab 구성 요소 차트가 내장 인증서 리소스를 찾지 않도록 설정해야 하는 두 가지 값은 다음과 같습니다:
--set certmanager.install=false
--set global.ingress.configureCertmanager=false