外部NGINX IngressコントローラーでGitLabチャートを設定する
このチャートは、公式のNGINX Ingress実装で使用するためのIngressリソースを設定します。NGINX Ingressコントローラーは、このチャートの一部としてデプロイされます。クラスタ内で既に利用可能な既存のNGINX Ingressコントローラーを再利用する場合は、このガイドが役立ちます。
外部IngressコントローラーのTCPサービス
GitLab Shellコンポーネントは、ポート22(デフォルト)でTCPトラフィックが通過する必要があります(変更可能)。IngressはTCPサービスを直接サポートしていないため、追加の設定が必要です。NGINX Ingressコントローラーは、(Kubernetes仕様ファイルを使用して)直接デプロイされたか、公式Helm Chartを介してデプロイされた可能性があります。TCPパススルーの設定は、デプロイアプローチによって異なります。
直接デプロイ
直接デプロイでは、NGINX IngressコントローラーはConfigMapを使用してTCPサービスの設定を処理します。詳細については、Ingress NGINXコントローラーのドキュメントのTCPおよびUDPサービスの公開を参照してください。GitLabチャートがネームスペースgitlabにデプロイされ、Helmリリースにmygitlabという名前が付けられているとすると、ConfigMapは次のようになります:
apiVersion: v1
kind: ConfigMap
metadata:
name: tcp-configmap-example
data:
22: "gitlab/mygitlab-gitlab-shell:22"そのConfigMapを取得したら、NGINX Ingressコントローラーのドキュメントに記載されているように、--tcp-services-configmapオプションを使用して有効にできます。
args:
- /nginx-ingress-controller
- --tcp-services-configmap=gitlab/tcp-configmap-example最後に、NGINX IngressコントローラーのServiceが、80および443に加えてポート22を公開していることを確認してください。
Helmデプロイ
NGINX IngressコントローラーをHelmチャートを使用してインストールした場合、またはインストールを計画している場合は、コマンドラインを使用してチャートに値を追加する必要があります:
--set tcp.22="gitlab/mygitlab-gitlab-shell:22"または、values.yamlファイルを使用します:
tcp:
22: "gitlab/mygitlab-gitlab-shell:22"値の形式は、上記の「直接デプロイメント」セクションで説明されているものと同じです。
GitLab Ingressオプションをカスタマイズする
NGINX Ingressコントローラーは注釈を使用して、どのIngressコントローラーが特定のIngressにサービスを提供するかをマークします(ドキュメントを参照)。global.ingress.class設定を使用して、このチャートで使用するIngressクラスを設定できます。必ずHelmオプションでこれを設定してください。
--set global.ingress.class=myingressclass必ずしも必須ではありませんが、外部のIngressコントローラーを使用している場合は、デフォルトでこのチャートとともにデプロイされるIngressコントローラーを無効にすることをお勧めします:
--set nginx-ingress.enabled=falseカスタム証明書管理
TLSオプションの完全なスコープは、別の場所にドキュメント化されています。
外部のIngressコントローラーを使用している場合は、外部のcert-managerインスタンスを使用したり、他のカスタム方法で証明書を管理したりすることもできます。TLSオプションに関する完全なドキュメントについては、GitLabチャートのTLSを設定するを参照してください。ただし、このディスカッションの目的のために、cert-managerチャートを無効にし、GitLabコンポーネントチャートに組み込みの証明書リソースを探さないように指示するために設定する必要がある2つの値があります:
--set installCertmanager=false
--set global.ingress.configureCertmanager=false