ingress ngix - oomichi/try-kubernetes GitHub Wiki
https://kubernetes.github.io/ingress-nginx/deploy/baremetal/ を翻訳、メモ
ベアメタル環境の考察
伝統的なクラウド環境において、つまりネットワークロードバランサが要求に応じて利用可能な状態の環境、一つの Kubernetes マニフェストによって NGINX Ingress controller への接続を外部クライアントに提供し、間接的に Kubernetes クラスタ内部で稼働するアプリケーションへのアクセスを実現する。 ベアメタル環境において、この一般化が不足している。外部クライアントからのアクセスを許容するという同じ種類の要望を実現するに、異なるセットアップが必要となっている。
このドキュメントでは NGINX Ingress Controller を Kubernetes クラスタ内部にデプロイするいくつかの推奨方法について記述する。
ソフトウェア実装: MetalLB
MetalLB は非クラウド環境における Kubernetes クラスタ向けネットワーク LB 実装を提供する。 いかなるクラスタにおいても効率的な LoadBalancer Servicesを提供するための。
ここでは、外部からのアクセス可能なノードを持つ Kubernetes クラスタ内における MetalLB の L2設定モードと NGINX Ingress controller の使い方について説明する。 このモードでは、一つのノードがすべての ingress-nginx トラフィックを受け持つことになる。
MetalLB は単純な Kubernetes マニフェスト、もしくは Helm chart どちらでもデプロイ可能だ。 ingress-nginx Service の所有権を持つことを可能にするため、MetalLB は IP address のプールを必要とする。このプールは MetalLB コントローラと同じ Namespace に存在する ConfigMap で定義される。このプールの IP address は MetalLB に占有される必要があり、ほかの Kubernetes の node IP などには再利用できないものだ。