LoginSignup
4

More than 3 years have passed since last update.

posted at

updated at

AWS ALB Ingress は時期尚早って話

はじめに

この記事はAmazon EKS #2 Advent Calendar 2019の3日目の記事です。
WordPress on AWS EKS 的な作業をしたんだけど、AWS ALB Ingress は時期尚早だったわ、という話をします。
2019年11月半ばくらいの話であり、この記事が表に出た後にバージョンアップしてる可能性はゼロじゃないです。

TL;DR

  • やってみた系ブログのやってみた、は、そりゃできる
  • ただし、AWS ALB として出来ることの多くが(たぶんもうしばらくは) できない
  • つまり、表向き動くものはできる、が、顧客が本当に必要だったもの、は(今は)できない、のがわかったという話

環境構築

AWS ALB Ingress Controller

  • https://github.com/kubernetes-sigs/aws-alb-ingress-controller
  • Setup のところに導入方法があります
  • 今回の作業では helm のインストールやらコントローラのインストールやらも terraform の k8s provider を使ったんだけど、null_resource や file 関数を乱発したし、概ねマニフェストが公開されているのをいちいちリソースに直すのも面倒だった。k8s provider も正直いらんかった
  • ExternalDNS とセットで使えば、作成された ALB を Route53 に登録してくれて便利。これは便利。

(現時点でも)できることリスト

  1. ALB(Application Load Balancers) - LR(ListenerRules) - TG(TargetGroups) の基本構成
  2. 80,443 ポートリスナー
  3. ACM 設定
  4. パスベースのLR
  5. Cognito を挟んでアクセス制限的なこと
  6. 複数のTGへの振り分け(今回はWP本体とWP管理画面用の2つに分けた)

うん、まぁ一通りできる雰囲気はあるよね。ところがどっこい。

(現時点では)できなかったことリスト

  • ポートリスナー別のLRは書けない
    • 80 -> 443 へのリダイレクトルールは書ける
    • 80 用、443用と分けて書くことができない(別々のLRが書けない。両方に同じLRが同じ順序で登録される。これは酷い)
    • でもまぁ正直そんなに問題じゃない(80の最初で443へリダイレクトで特に困らないから)
  • Cognito を挟むと全てのLRに適用される
    • 一部だけ外す、はできない
    • WP管理画面にCognitoを残してブログ面は外す、ができない。これは辛い
  • パスベース以外のLRは書けない
    • IPベースやヘッダベースが使えない(もうどうしようもない)
    • ISSUE はあがってる
    • ヘッダーベースのルールが使えないので、CloudFront からのアクセスのみ受け入れ、等ができない。完全に詰んだ。
  • ALBの名前が自由に付けられない
    • 逆にそれさえあれば ExternalDNSなくても困らないのに
    • クラスター別の数字-deploymentで付ける名前-よくわからない英数字、みたいな名前になる
    • たくさんあると管理がめんどくさい
  • できないこと、ではないけど、裏で頻繁に書き直し?が走っていて、コンソールやCLIでALBに手を加えてもマニフェストどおりに戻る
    • 手でLRを追加したり変更したりしても、元に戻ってしまう。Ingress を削除するわけにもいないので手が打てない
  • コスト無視なら表向き用の ALB を Ingress でもう一つ作って(ブログ用と管理画面用と分ける)、CloudFront オリジンの1つとして追加して、パスベースルーティングを CloudFront にやらせることも可能だけど、ソウジャナイ感があったのでやらなかった

対策できたこと

  • Cognito はなしの方向で、CloudFront + WAF でがんばった
  • LBの名前はどうにもならないけど、ExternalDNS で Route53 record は固定の名前で登録できるので、それをオリジンにした
  • CloudFront からだけ接続許可、は未だに出来ていないので、オリジンLBでアクセスされると普通のWPと同じ。セキュリティが気になるならここは致命的

最後に

  • 遊びや勉強目的で使う分には特に問題ない
  • 仕事で使うなら今はやめといたほうが無難
  • 先のISSUEのコメント先のリンク先にもあるけど、今コミッタたちもどうやってマニフェストを書いて展開するか、を議論しているようなので、経過観察
  • 一番欲しいところ、パスベース以外のルール対応なので、この辺どうにかすればワンチャン。。。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
4