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