外部Nginxイングレスコントローラ

このチャートでは、公式のNGINX Ingress実装で使用するためのIngress リソースを設定します。 NGINX Ingress Controllerはこのチャートの一部としてデプロイされます。 クラスターですでに利用可能な既存のNGINX Ingress Controllerを再利用する場合は、このガイドが役立ちます。

外部IngressコントローラーのTCPサービス

GitLab Shellコンポーネントは、TCPトラフィックをポート22で通過させる必要があります(デフォルトで、これは変更可能です)。 IngressはTCPサービスを直接サポートしていないため、いくつかの追加設定が必要です。 Nginx Ingressコントローラは、直接(つまり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 を公開していることを確認してください。

デプロイ

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 Controller が特定のIngress (docs を参照) をサービスするかをマークします。global.ingress.class 設定を使用して、このチャートで使用する Ingress クラスを設定できます。 Helm のオプションで必ず設定してください。

--set global.ingress.class=myingressclass

必ずしも必要ではありませんが、外部のIngress Controllerを使用している場合、このChartにデフォルトでデプロイされているIngress Controllerを無効にしたいと思うでしょう:

--set nginx-ingress.enabled=false

カスタム証明書の管理

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

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

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