AWS Load Balancer Controller とは - Amazon EKS

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 で管理されるオープンソースプロジェクトです。

コントローラをデプロイする前に、Amazon EKS でのアプリケーション負荷分散 および Amazon EKS でのネットワーク負荷分散 についての前提条件と考慮事項を、確認しておくことをお勧めします。これらのトピックでは、AWS ロードバランサーを含むサンプルアプリケーションをデプロイしています。

コントローラーのデプロイ 🚀

非推奨バージョンの削除

  • 非推奨バージョンの 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 に設定すると、この機能をオフにして、レガシークラウドプロバイダーをデフォルトのコントローラーとして使用するように戻すことができます。この機能をオフにしない限り、クラスターはサービスに新しい Classic Load Balancer をプロビジョニングしません。既存の Classic Load Balancer は従来どおり機能します。