NGINXの使用
Ingressコントローラとして使用するNGINXの完全なデプロイを提供します。互換性を確保するため、すべてのKubernetesプロバイダがNGINXIngressをネイティブサポートしているわけではありません。
NGINXの設定
設定の詳細については、NGINXチャートのドキュメントを参照してください。
グローバル設定
私たちのChartには共通のグローバル設定があります。GitLabやレジストリのホスト名など、共通の設定オプションについてはGlobals Documentationをご覧ください。
グローバル設定を使ったホストの設定
GitLab サーバーとレジストリ・サーバーのホスト名は、Global settingschart を使って設定することができます。
GitLab Geo
2つ目のNGINXサブチャートは、GitLab Geoトラフィック用にバンドルされ、事前に設定されており、デフォルトのコントローラと同じ設定をサポートしています。このコントローラはnginx-ingress-geo.enabled=true
で有効にすることができます。
このコントローラーは、受信するX-Forwarded-*
ヘッダーを変更しないように設定されています。Geo トラフィックに別のプロバイダを使いたい場合も同じようにしてください。
デフォルトのコントローラ値(nginx-ingress-geo.controller.ingressClassResource.controllerValue
)は、k8s.io/nginx-ingress-geo
に設定され、IngressClass名は、デフォルトのコントローラとの干渉を避けるために、{ReleaseName}-nginx-geo
に設定されます。IngressClass 名はglobal.geo.ingressClass
で上書きできます。
カスタムヘッダ処理は、セカンダリサイトから転送されるトラフィックを処理するために、プライマリGeoサイトでのみ必要です。セカンダリで使用する必要があるのは、サイトがプライマリに昇格させられようとしている場合のみです。
フェイルオーバー中に IngressClass を変更すると、もう一方のコントローラが受信トラフィックを処理することに注意してください。もう一方のコントローラには異なるロードバランサIPが割り当てられているため、DNS設定の変更が必要になる場合があります。
これは、すべての Geo サイトで Geo Ingress コントローラを有効にし、デフォルトと追加のウェブサービスの Ingress を設定して、関連する IngressClass (useGeoClass=true
) を使用することで回避できます。
注釈値の単語ブロックリスト
GitLab Helm chart 6.6 で導入されました。
クラスター・オペレーションが生成されたNGINX設定をより詳細に制御する必要がある場合、NGINX Ingressでは、標準のアノテーションやConfigMapエントリではアドレスされない生のNGINX設定の「スニペット」を挿入する設定スニペットを使用できます。
このようなコンフィギュレーション・スニペットの欠点は、クラスター・オペレーターがLUAスクリプトや同様のコンフィギュレーションを含むIngressオブジェクトをデプロイできるようになり、GitLabインストールやクラスター自体のセキュリティを損なう可能性があることです。
詳細については、CVE-2021-25742およびこのアップストリームingress-nginx
イシュー を参照してください。
GitLabのHelmチャートデプロイでCVE-2021-25742を緩和するために、 nginx-ingress
コミュニティから提案された設定を使用して、[annotation-value-word-blocklistを](https://gitlab.com/gitlab-org/charts/gitlab/-/blob/v6.6.0/values.yaml#L836)設定します。
GitLab Ingressの設定でコンフィギュレーションスニペットを使用している場合、またはコンフィギュレーションスニペットを使用しているサードパーティのIngressオブジェクトでGitLab NGINX Ingress Controllerを使用している場合、GitLabサードパーティのドメインにアクセスしようとすると404
、nginx-controller
のログで “invalid word” エラーが発生することがあります。その場合は、nginx-ingress.controller.config.annotation-value-word-blocklist
の設定をレビューして調整してください。
nginx-controller
ログの“Invalid Word” エラーや、Chart トラブルシューティングのの404
エラーもご覧ください。