外部のNGINX Ingress Controllerを使用したGitLabチャートの設定

このChartでは、公式のNGINX Ingress実装で使用するIngress リソースを設定します。NGINX Ingress ControllerはこのChartの一部としてデプロイされます。クラスターですでに利用可能な既存の NGINX Ingress Controller を再利用したい場合は、このガイドを参考にしてください。

外部Ingress ControllerのTCPサービス

GitLab ShellコンポーネントはTCPトラフィックをポート22で通過させる必要があります(デフォルト。)Ingress は TCP サービスを直接サポートしていないので、追加の設定が必要です。NGINX Ingress コントローラは直接デプロイされている(つまり Kubernetes spec ファイルでデプロイされている)かもしれませんし、公式の Helm chart を通してデプロイされているかもしれません。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のデプロイ

Helmチャートを使用してNGINX Ingress Controllerをインストールした場合、またはインストールする予定の場合は、コマンドラインを使用してチャートに値を追加する必要があります:

--set tcp.22="gitlab/mygitlab-gitlab-shell:22"

またはvalues.yaml ファイルを使用します:

tcp:
  22: "gitlab/mygitlab-gitlab-shell:22"

値の形式は、上記の「直接デプロイ」のセクションで説明したものと同じです。

GitLab Ingressオプションのカスタマイズ

NGINX Ingress コントローラは、どの Ingress コントローラが特定のIngress を扱うかを示すアノテーションを使用します (docs を参照)。このチャートで使用する Ingress クラスはglobal.ingress.class で設定できます。Helm のオプションで必ず設定してください。

--set global.ingress.class=myingressclass

必ずしも必要ではありませんが、外部の Ingress コントローラを使用する場合は、このチャートでデフォルトでデプロイされる Ingress コントローラを無効にしてください:

--set nginx-ingress.enabled=false

カスタム証明書管理

TLSオプションの全範囲については、別の場所で文書化されています。

外部のIngress Controllerを使用している場合、外部のcert-managerインスタンスを使用しているか、他のカスタム方法で証明書を管理している可能性があります。TLSオプションに関する完全なドキュメントはこちらにありますが、今回の議論では、cert-managerチャートを無効にし、GitLabコンポーネントチャートに組み込みの証明書リソースを探さないように指示するために設定する必要がある2つの値を示します:

--set certmanager.install=false
--set global.ingress.configureCertmanager=false