😆

AWS Load Balancer Controllerに移行するために必要なこと

2021/04/25に公開

AWSのALB/NLBをIngressリソースとして扱う為のcontrollerである ALB Ingress Controllerは、メジャーバージョンが2.x.xにあがったタイミングで、AWS Load Balancer Controllerとして新しくリリースされました。
ALB Ingress ControllerからAWS Load Balancer Controllerに移行するにあたって、必要な対応及び作業の流れを調査・検討します。

公式ドキュメント

AWS LoadBalancer Controllerの公式DocにMigrate from v1 to v2があるので、確認していきます。

前提

バージョンアップ前のalb-ingress-controllerはv1.1.3以上のバージョンが前提となります。
もし古いマイナーバージョンを使っている場合は、事前にアップグレードしておく必要があります。

後方互換性

v2.0.0(AWS Load Balancer Controller)は、v1.1.3と後方互換性があり、v1.1.3以降のバージョンのalb-ingress-controllerによって作成されたALB/NLBをサポートします。
ただし、何点か注意事項があります。

The AWS LoadBalancer resource created for your Ingress will be preserved.

Ingress用に作成された AWS LoadBalancer resourceは保護されます。

If a numeric TargetPort is used in your service, the AWS TargetGroups created for your Ingress will be re-created.

もしServiceで数字のTargetPortを使っている場合は、Ingressの為に作成されたTargetGroupsは再作成されます。

downtimes

This would cause downtimes to your service during targets registration into new TargetGroups created
Targetが新しく作成されたTargetGroupに再登録される間、サービスのダウンタイムが発生します。

details

  • AWSALBIngressControllerはTargetPortとして常に1を使います。
  • AWSLoadBalancerControllerは、、
    • もし数字のTargetPortを使っている場合は、TargetGroupのポートとして、実際の数字を使う
    • もしlexical(字句?)のTargetPortを使っている場合は、TargetGroupのポートとして、1を使う
  • AWSLoadBalancerController新しいTargetGroupを自動的に生成し、古いターゲットグループを削除します。

If security-groups annotation isn't used, the SecurityGroup rule on worker node's SecurityGroup that allow LoadBalancer traffic should be manually adjusted post migration.

もしSevurityGroupのannotationが使われていない場合、Load Balancerトラフィックを許可します。Worker NodeのSGのRuleは、移行後に手動で調整する必要があります。

If you have used podReadinessGate feature, please refer PodReadinessGate for the guide about new readinessGate configuration.

もしpodReadinessGate機能を使っている場合は、新しいreadinessGateの設定について、PodReadinessGateのガイドを参照してください。
適切に設定されると、AWS LoadBalancer Controlerは自動的に新しいフォーマットのpodReadinessGateをPodにinjectし、古いpodReadinessGateがあれば削除します。

アップグレードの流れ

  1. 現在のバージョンを確認します
  2. 既存のAWSALBIngressControllerをアンインストール
  • 既存のAWSALBIngressControllerは、新しいバージョンのAWSALBIngressControllerをインストールする前にアンインストールする必要があります
  • 既存のIngress resourceを削除する必要はありません
  1. 新しいAWSALB Ingress Controllerをインストールします
  1. 全てのIngressが期待どおりであることを確認します

Discussion