このページの改善にご協力ください
本ユーザーガイドの改善にご協力いただけませんか? このページの下部までスクロールし、[GitHub でこのページの編集] を選択します。皆さまにご協力いただくことで、あらゆる人々に使いやすいユーザーガイドになります。
AWS Load Balancer Controller とは
AWS Load Balancer Controller によって Kubernetes クラスター向けの AWS Elastic Load Balancer が管理されます。コントローラーを使用すると、クラスターアプリケーションをインターネットに公開できます。コントローラーは、クラスターサービスまたは Ingress リソースを指す AWS ロードバランサーをプロビジョニングします。つまり、コントローラーはクラスター内の複数のポッドを指す単一の IP アドレスまたは DNS 名を作成します。
コントローラーは、Kubernetes Ingress リソースまたは Service リソースを監視します。これに応じて、適切な AWS Elastic Load Balancing リソースが作成されます。Kubernetes リソースに注釈を適用することで、ロードバランサーの特定の動作を設定できます。例えば、注釈を使用してロードバランサーに AWS セキュリティグループをアタッチできます。
コントローラは、以下のリソースをプロビジョニングします。
- Kubernetes
Ingress
-
Kubernetes
Ingress
を作成すると、LBC は AWS Application Load Balancer (ALB) を作成します。Ingress リソースに適用できる注釈を確認してください。 LoadBalancer
タイプの Kubernetes サービス-
LoadBalancer
タイプの Kubernetes サービスを作成すると、LBC は AWS Network Load Balancer (NLB) を作成します。サービスリソースに適用できる注釈を確認してください。以前は、インスタンスターゲットには Kubernetes Network Load Balancer が使用されていましたが、IP ターゲットには LBC が使用されていました。AWS Load Balancer Controller バージョン
2.3.0
以降では、いずれかのターゲットタイプを使用して NLBs を作成できます。NLB ターゲットタイプの詳細については、Network Load Balancer のユーザーガイドの 「ターゲットタイプ」を参照してください。
コントローラーは GitHub で管理されるオープンソースプロジェクト
コントローラをデプロイする前に、Application Load Balancers でアプリケーションと HTTP トラフィックをルーティングする および Network Load Balancers で TCP および UDP トラフィックをルーティングする についての前提条件と考慮事項を、確認しておくことをお勧めします。これらのトピックでは、AWS ロードバランサーを含むサンプルアプリケーションをデプロイしています。
Controller をインストールする 🚀
-
「Helm を使用して AWS Load Balancer Controller をインストールする」では、この手順を説明しています。Amazon EKS を初めて使用する場合は、これを使用してください。この手順では、Kubernetes のパッケージマネージャーである Helm
と eksctl
を使用して、LBC のインストールを簡素化します。 -
または、「Kubernetes マニフェストを使用して AWS Load Balancer Controller アドオンをインストールする」の手順を使用します。これは、高度なクラスター設定に適しており、パブリックコンテナレジストリへのネットワークアクセスが制限されているクラスターなどが対象です。
非推奨のコントローラーバージョンから移行する
-
非推奨バージョンの AWS Load Balancer Controller がインストールされている場合は、「非推奨のコントローラーから移行する」の手順を確認してください。
-
非推奨バージョンはアップグレードできません。このバージョンを削除し、AWS Load Balancer Controller の最新バージョンをインストールする必要があります。
-
非推奨バージョンには以下が含まれます。
-
AWS Load Balancer Controller の前身である AWS ALB Ingress Controller for Kubernetes (「Ingress Controller」)
-
AWS Load Balancer Controller の
0.1.x
バージョンすべて
-
レガシークラウドプロバイダー
Kubernetes には、AWS のレガシークラウドプロバイダーが含まれています。レガシークラウドプロバイダーは AWS Load Balancer Controller と同様に、AWS ロードバランサーをプロビジョニングできます。レガシークラウドプロバイダーは Classic Load Balancer を作成します。AWS Load Balancer Controller をインストールしない場合、Kubernetes はデフォルトでレガシークラウドプロバイダーを使用します。AWS Load Balancer Controller をインストールして、レガシークラウドプロバイダーを使用しないようにしてください。
重要
バージョン 2.5 以降では、AWS Load Balancer Controller は、type: LoadBalancer
を持つ Kubernetes サービスリソースのデフォルトコントローラーとなり、サービスごとに AWS Network Load Balancer (NLB) を作成します。これは、サービスの変更ウェブフックを変化することで実行され、これにより type:
LoadBalancer
の新しいサービスの spec.loadBalancerClass
フィールドが service.k8s.aws/nlb
に設定されます。Helm チャートの値 enableServiceMutatorWebhook
を false
に設定すると、この機能をオフにして、レガシークラウドプロバイダー