Closed4

aws-load-balancer-controllerがサブネットを検知できるようにする

not75743not75743

概要

以下のようにエラーが出てALBのデプロイが出来ませんでした
使っているのはaws-load-balancer-controllerです

  Warning  FailedBuildModel  4s (x12 over 16s)  ingress  Failed build model due to couldn't auto-discover subnets: unable to resolve at least one subnet (0 match VPC and tags: [kubernetes.io/role/elb])

サブネットが見つけられない、とあるので原因は明白です。
以下を参考にいろいろ試してみます。
https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.8/guide/ingress/annotations/
https://repost.aws/ja/knowledge-center/eks-vpc-subnet-discovery
https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/network-load-balancing.html

バージョン

aws-load-balancer-controller 2.8.1

not75743not75743

① 直接サブネットを指定する

サブネットIDをingressのマニフェストに追加

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: apps-ingress
  namespace: apps
  annotations:
    alb.ingress.kubernetes.io/subnets: subnet-1xxxxxxxx, subnet-2xxxxxxxx

すると問題なくデプロイされました

  Warning  FailedBuildModel        5m53s (x17 over 11m)  ingress  Failed build model due to couldn't auto-discover subnets: unable to resolve at least one subnet (0 match VPC and tags: [kubernetes.io/role/elb])
  Normal   SuccessfullyReconciled  24s (x2 over 47s)     ingress  Successfully reconciled
not75743not75743

② サブネットにタグをつける

サブネットにタグをつけ、それを自動で検知してもらう方法です。
検証にはパブリックサブネットを利用しているため
タグキー:kubernetes.io/role/elb
タグバリュー:1
とします。

こちらも問題なくデプロイ出来ます。

not75743not75743

まとめ

サブネットを指定/タグ付けすることでALBを召喚できました。
前者はk8s、後者はAWS側で管理出来るため、運用に優しいほうを選ぶのがいいと思いました。

このスクラップは5ヶ月前にクローズされました