ALB Ingress Controllerで複数Ingressを同一クラスターに作る際の注意点
v1.1.3以降は挙動が変化している。
セキュリティグループを指定しなかった場合、ロードバランサー用のSGは自動作成されるが、ワーカーノードについては既存のSGが変更される挙動になった。
/icons/hr.icon
alb.ingress.kubernetes.io/security-groupsアノテーションを使ってALBにセキュリティグループを指定しないと、1つのIngressに対して2つのセキュリティグループが自動的に作成される。1つはALBに、1つはEC2インスタンス(つまりEKSノード)の各台に関連付けられる。
When this annotation is not present, the controller will automatically create 2 security groups: the first security group will be attached to the LoadBalancer and allow access from inbound-cidrs to the listen-ports. The second security group will be attached to the EC2 instance(s) and allow all TCP traffic from the first security group created for the LoadBalancer.
そのため、同一クラスターで複数個のIngressを作ったとき、ネットワークインターフェース当たりセキュリティグループは5個まで、という制限に引っかかるおそれがある。
セキュリティグループを指定しない場合以外に、
alb.ingress.kubernetes.io/inbound-cidrs
を指定した場合も、このアノテーションの内容をルールに持つセキュリティグループが毎度作られるため、同様に制限オーバーのおそれがある。
これを回避するためには、セキュリティグループをあらかじめ作っておき、
alb.ingress.kubernetes.io/security-groups
で指定する。
このとき、そのセキュリティグループをソースとするトラフィックを許可するようなセキュリティグループも合わせて作り、ノード(EC2インスタンス)全台に関連付けておく必要がある。
そうしないとALB→ノードの転送がうまくいかない。