外部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