事象
WAFV2のACLをIngressで作成したALBにマネコンから割り当てたところ、 20分程した後に設定が解除されてしまいました。
原因を探るため、CloudTrailのイベント履歴を辿ると、 aws-load-balancer-controllerによるDisassociateWebACLの実行が確認できました。
Podも同様のログを吐いています。
kubectl logs <aws-load-balancer-controller-pod> -n kube-system ... {"level":"info","ts":1687937027.5445116,"logger":"controllers.ingress","msg":"disassociated WAFv2 webACL","resourceARN":"arn:aws:elasticloadbalancing:ap-northeast-1:..."}
原因
対策
alb.ingress.kubernetes.io/wafv2-acl-arnで指定するのが正しいやり方でした。
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: "ingress" annotations: ... alb.ingress.kubernetes.io/wafv2-acl-arn: arn:aws:wafv2:ap-northeast-1: xxxxx:regional/webacl/xxxxxxx/xxxxxxx
kubectl logs <aws-load-balancer-controller-pod> -n kube-system ... {"level":"info","ts":1688012710.6455188,"logger":"controllers.ingress","msg":"associated WAFv2 webACL","resourceARN":"arn:aws:elasticloadbalancing:ap-northeast-1:...","webACLARN":"arn:aws:wafv2:ap-northeast-1: xxxxx:regional/webacl/xxxxxxx/xxxxxxx"} ...