正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

SSH経由でのGitのサポート

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab Self-Managed

このドキュメントでは、さまざまな環境/プラットフォームにおけるSSH経由のGitの設定ガイドラインを提供します。

概要

GitLab Shell Helmチャートは、GitLabへのGit SSHアクセス用に設定されたSSHサーバーを提供します。このコンポーネントは、ポート22でクラスターの外部に公開する必要があります。

gitlab.gitlab-shell.enabledtrueに設定されている場合、GitLab Operatorはgitlab-shellをデプロイします。これはデフォルト設定です。

ターゲットプラットフォームに基づく要件の概要は次のとおりです:

SSH経由のGitを必要とするかKubernetesOpenShift
いいえ以下のいずれかのNGINX Ingressプロバイダーを使用する必要があります(Kubernetesには組み込みのIngressプロバイダーがありません)。以下のIngressプロバイダーは必要ありません。組み込みのRoutesをIngressプロバイダーとして使用できます。
はい以下のいずれかのNGINX Ingressプロバイダーを使用する必要があります(Kubernetesには組み込みのIngressプロバイダーがありません)。以下のいずれかのIngressプロバイダーを使用する必要があります。Routesはポート22の公開をサポートしていません。

Ingressプロバイダー

以下は、Ingressプロバイダーのリストと、関連するノートおよびプラットフォーム固有の詳細です。

NGINX-Ingress Helmチャート

GitLabでは、フォークしたNGINX-ingressチャートを管理しており、これを使用することで、SSH経由のGitを「すぐに」サポートするように変更された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を公開することもできます。

このオプションにはいくつかの注意事項があります:

  • NGINX Inc.のTransportServer/GlobalConfigurationカスタムリソース定義は、機能プレビューと見なされており、本番環境での使用には注意が必要です。
  • NGINX Inc.のOperatorはまだ比較的新しく、現在のバージョンは0.3.0に過ぎません。どちらのフレーバーの成熟したHelmチャートと比べても、利用可能な設定オプションはそれほど多く含まれていません。
  • このオプションを使用する場合でも、NGINXサービスで22を手動で公開する必要があります(これは、NGINXIngressController CRでは設定できません)。

より広範な調査内容は、#58に記載されています。

OpenShift Routes

OpenShift Routesは、OpenShiftクラスターに組み込まれているコンポーネントです。OpenShiftにおけるRoutesは、KubernetesにおけるIngressに相当します。

OpenShiftにデプロイする場合、GitLab CRでnginx-ingress.enabled=falseを設定することで、外部トラフィックのフローをOpenShift Routesに制御させることができます。GitLab OperatorがIngressオブジェクトを調整すると、OpenShiftは、クラスターのベースドメインにマップする同等のRouteオブジェクトを自動的に作成します。

OpenShift RoutesはTCPトラフィック(ポート22のSSH)の公開をサポートしていないため、gitlab-shellを使用したSSH経由のGitには使用できません。

考慮事項

以下は、Ingressを使用する際の考慮事項です。

OpenShiftでサードパーティのIngressプロバイダーを使用する

OpenShiftでサードパーティのIngressコントローラーを使用する場合、OpenShiftのIngressコントローラーがサードパーティのIngressコントローラーと競合することがあります。

たとえば、NGINX Ingressコントローラーは、IngressのADDRESSにNGINXサービスの外部IPアドレスを設定しますが、その後、OpenShift Ingressコントローラーがその設定をクラスターのベースドメインでオーバーライドします。これは、特にexternal-dnsのように、IngressにIPアドレスがあることを前提に、URLを特定のNGINX ServiceにマップするAレコードを作成するサービスを使用している場合、DNS設定と競合する可能性があります。これはまさに、GitLab Operator CI環境で発生し得る事象です。

この問題を回避するために、OpenShift Ingressコントローラーにパッチを適用し、OpenShift固有のネームスペースのみを管理するようにしています。これにより、GitLab固有のネームスペースに作成するIngressが意図せず変更されることを防ぎます。