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 Balancer を使用して TCP および UDP トラフィックをルーティングする で前提条件と考慮事項を確認しておくことをお勧めします。これらのトピックでは、AWS ロードバランサーを含むサンプルアプリケーションをデプロイしています。
コントローラーのインストール
次のどちらかの手順を使用して AWS Load Balancer Controller をインストールできます。
-
Amazon EKS を初めて使用する場合は、 AWS Load Balancer Controller インストールが簡素化されるため、Helm を使用してインストールすることをお勧めします。詳細については、「 AWS Load Balancer Controller で Helm をインストールする」を参照してください。
-
パブリックコンテナレジストリへのネットワークアクセスが制限されているクラスターなどの高度な設定には、Kubernetes マニフェストを使用します。詳細については、「マニフェストを使用して AWS Load Balancer Controller インストールする」を参照してください。
非推奨のコントローラーバージョンから移行する
-
非推奨バージョンの AWS Load Balancer Controller がインストールされている場合は、「非推奨の ALB Ingress 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
に設定すると、この機能をオフにして、レガシークラウドプロバイダー