Git over SSH 지원
이 문서는 다양한 환경/플랫폼에서 Git over SSH를 구성하기 위한 구성 지침을 제공합니다.
전망
GitLab Shell Helm 차트는 GitLab에 대한 Git SSH 액세스를 구성한 SSH 서버를 제공합니다. 이 컴포넌트는 클러스터 외부에서 포트 22
로 노출되어야 합니다.
GitLab Operator는 gitlab.gitlab-shell.enabled
가 true
로 설정되면 gitlab-shell
을 배포합니다. 이것이 기본 설정입니다.
대상 플랫폼에 기반한 요구 사항을 요약하면 다음과 같습니다:
Git over SSH를 필요로 합니까? | Kubernetes | OpenShift |
---|---|---|
아니요 | 아래의 NGINX Ingress 프로바이더 중 하나를 사용해야 합니다 (Kubernetes에는 기본 Ingress 프로바이더가 없음). | 아래의 Ingress 프로바이더가 필요하지 않습니다. 내장된 라우트를 Ingress 프로바이더로 사용할 수 있습니다. |
예 | 아래의 NGINX Ingress 프로바이더 중 하나를 사용해야 합니다 (Kubernetes에는 기본 Ingress 프로바이더가 없음). | 아래의 Ingress 프로바이더 중 하나를 사용해야 합니다. 라우트는 포트 22 를 노출하는 것을 지원하지 않습니다.
|
Ingress 프로바이더
아래는 Ingress 프로바이더 디렉터리과 관련된 참고 사항 및 플랫폼별 세부 정보입니다.
NGINX-Ingress Helm 차트
GitLab은 변형된 NGINX-ingress
차트를 유지관리하고 있으며, 이를 사용하여 Git over SSH를 지원하는 수정된 NGINX 리소스를 배포할 수 있습니다.
이것은 GitLab Operator를 사용하는 경우의 기본 구성이며, GitLab CR의 nginx-ingress.enabled={true,false}
를 통해 제어됩니다. false
로 설정하면 외부 NGINX 인스턴스를 사용할 수 있습니다.
이 Ingress 프로바이더는 Kubernetes와 OpenShift에서 모두 사용할 수 있습니다.
NGINX Ingress 프로바이더의 설치 옵션에 대한 자세한 정보는 설치 문서에서 확인할 수 있습니다.
NGINX Ingress Operator
NGINX-Ingress Helm 차트 변형 대신, NGINX Ingress Operator를 사용하여 gitlab-shell
을 노출할 수 있습니다.
이 옵션에는 몇 가지 주의할 점이 있습니다:
- NGINXINC의 TransportServer/GlobalConfiguration 사용자 지정 리소스 정의는 기능 미리보기로 간주되며, 제품 사용에 대해 주의를 권장합니다.
- NGINX Inc. Operator는 여전히 상대적으로 젊습니다. 버전 0.3.0에서만 사용할 수 있습니다. 이것은 어떤 플레이버의 더 성숙한 Helm 차트에 비해 거의 많은 구성 옵션을 포함하고 있지 않습니다.
- 이 옵션은 여전히 NGINX 서비스에서 포트
22
를 매뉴얼으로 노출해야 합니다 (NGINXIngressController CR에서 구성할 수 없음).
더 충분한 연구 내용은 #58에 기록되어 있습니다.
OpenShift Routes
OpenShift Routes는 OpenShift 클러스터의 내장 컴포넌트입니다. 이것은 Kubernetes Ingresses에 해당하는 OpenShift의 컴포넌트입니다.
OpenShift에 배포할 때, GitLab CR에서 nginx-ingress.enabled=false
로 설정하고 OpenShift Routes에 외부 트래픽의 흐름을 제어할 수 있습니다. GitLab Operator가 Ingress 객체를 조화시키면, OpenShift는 자동적으로 클러스터의 기본 도메인에 매핑되는 동등한 Route 객체를 생성합니다.
OpenShift Routes는 TCP 트래픽 (포트 22
의 SSH) 노출을 지원하지 않으므로, gitlab-shell
을 통해 Git over SSH에 사용할 수 없습니다.
고려 사항
아래는 Ingress 사용 시 고려해야 할 사항입니다.
OpenShift에서 제3자 Ingress 프로바이더 사용
OpenShift에서 제3자 Ingress 컨트롤러를 사용할 때, 특정 경우에는 OpenShift Ingress 컨트롤러가 제3자 Ingress 컨트롤러와 충돌할 수 있습니다.
한 예는 NGINX Ingress 컨트롤러가 Ingress ADDRESS
를 NGINX 서비스의 외부 IP 주소로 설정한 후 OpenShift Ingress 컨트롤러가 클러스터의 기본 도메인으로 재정의하는 것입니다. 이는 Ingress가 특정 NGINX 서비스의 IP 주소를 가지고 URL을 해당 NGINX 서비스에 매핑하기 위해 external-dns와 같은 서비스를 사용할 때 DNS 구성과 충돌할 수 있습니다. 이는 GitLab Operator CI 환경에서의 경우입니다.
이를 해결하기 위해, 우리는 OpenShift Ingress 컨트롤러를 패치합니다 OpenShift-특정 네임스페이스만 관리하도록하여 GitLab-특정 네임스페이스에서 생성되는 Ingress가 원치 않는 수정을 받지 않도록합니다.