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