メインコンテンツまでスキップ

ALB ingress-controllerを用いて新しくリスナールールを追加する方法

· 約2分
ごとけん
Solutions Architect

EKS上にデプロイしたWebアプリケーションを外部に公開するために、ALB Ingress Controllerを使ってALBを作成していた。 とある理由で新しくリスナールールを追加する必要があったので、やり方について調べてみた。

  • alb.ingress.kubernetes.io/actions.${action-name}というannotationを用いることで、custom actionを設定することができる。
  • これを利用することで、ALB ingress-controller管理のもと、Serviceにルーティングするターゲットグループとは異なるターゲットグループに転送するリスナールールを新しく作成することができる。
  • 利用用途としては、静的ページを返すLambdaをターゲットグループとしたルールを作成しておき、メンテナンス時にPriorityを入れ替えることで静的ページを返すようにする、など。

設定方法

具体的な設定方法は以下のとおり。

  1. 任意のターゲットグループを作成する
  2. annotationを対象のIngressリソースに付与する
  3. IngressリソースのRuleを変更する

任意のターゲットグループを作成する​

annotationを対象のIngressリソースに付与する​

  • 以下のannotationを対象のIngressリソースに付与する。
  • TargetGroupArnは、転送したいターゲットグループのARNを指定する。
alb.ingress.kubernetes.io/actions.sample-action: '{"Type": "forward", "TargetGroupArn": "arn:aws:elasticloadbalancing:ap-northeast-1:<ACCOUNT_ID>:targetgroup/<TARGET_GROUP_NAME>/・・・"'

IngressリソースのRuleを変更する。​

  • 以下のとおり、IngressリソースのRuleを追加する。
    • serviceNameを2で作成したannotationのaction-nameに設定する
    • servicePortをuse-annotationにセットする
- path: /
backend:
serviceName: sample-action
servicePort: use-annotation

参考文献