EC2インスタンスからEKS上のアプリケーションにアクセスしたい


2 min read
EC2インスタンスからEKS上のアプリケーションにアクセスしたい

TR;DR

  • KubernetesのServiceで、Internal LoadBalancerってのがあるので、それを使うと良い

Internal LoadBalancer

皆さんはEKS、もう使ってますか?私は使っています。業務システムをリプレースで新規開発する的な案件で、新システムの基盤がEKSという感じです。EKSはネットワークが素敵に気持ち悪い感じになっており、普通はKubernetesのクラスタ内部っていうのは、外側と別のサブネットを作る訳なんですが、なんとEKSが所属するVPCと同じサブネットで接続できるようになっています。

そんなわけで、同一VPCに存在したり、VPC PeeringしたりなんかしちゃってるEC2インスタンスとEKS上のPodはIPアドレスベースでは普通に接続がとれちゃったりするんです。
EKS上のアプリケーションから、EC2インスタンスへアクセスしたいときは、普通にEC2インスタンスのIPアドレスやら内部エンドポイントへアクセスすれば良いですね。EC2インスタンスが動きっぱなしならまぁさほどIPも変わらんでしょう(雑)。

しかし逆は問題です。PodのIPは勿論割り振られてはいますけれど、これはPodが再生成されると勿論変わってしまいます。アプリケーションは動きっぱなしだから変わらない、なんて言うこともできないです。EC2インスタンスはインスタンス上でアプリケーションの更新なんかもしちゃうかもしれないですけど、EKS上のPodに乗ったアプリケーションの更新は普通、Podの再作成が伴います。Podの再作成が起きると、勿論IPが変わります。

そうすると、やはり考えるのはServiceをつくることですね。外部からアクセスするためにはそうしますから、同じように考えるのが普通です。
しかし、ここで問題が発生します。普通に外部向けに公開するのと同じようにServiceを作成すると、グローバルIPが当たってしまい、プライベートIPベースで接続できる状況では接続ができないのです。困った。

まぁドキュメントちゃんと読めよって話なんですが、Kubernetesのドキュメントを読むと、Internal LoadBalancerってのがちゃんと書いてあります。AWSの方のドキュメントには無かったのでちょっと盲点でした。annotationで次の様に指定します。

# ...
metadata:
    name: my-service
    annotations:
        service.beta.kubernetes.io/aws-load-balancer-internal: 0.0.0.0/0
# ...

これだけで、type: LoadBalancerで作成されるELBが内部向けのものになります。internal-なんちゃらみたいなエンドポイントです。IPアドレスもしっかりプライベートIPです。最高。後ろの0.0.0.0/0のところで、アクセスできるIPレンジ制限できるのかなーなんて希望的観測を持ちましたが、全然関係ありませんでした。
ちょっと気持ち悪いのは、普通にパブリックDNSで名前引きができてしまうことですかね。全然関係ない外部のネットワークとかでも(パブリックDNSに名前があるので)名前解決ができてしまって、かつプライベートのアドレスが帰って来るという不思議な体験をすることができます。

$ nslookup internal-xxxxx.us-west-2.elb.amazonaws.com 1.1.1.1
Server:		1.1.1.1
Address:	1.1.1.1#53

Non-authoritative answer:
Name:	internal-xxxxx.us-west-2.elb.amazonaws.com
Address: 192.168.187.214
Name:	internal-xxxxx.us-west-2.elb.amazonaws.com
Address: 192.168.222.128
Name:	internal-xxxxx.us-west-2.elb.amazonaws.com
Address: 192.168.109.84

うーん、まぁ実害は無いんでしょうけど。


fitbit versaを購入したので開封の儀
Previous article

fitbit versaを購入したので開封の儀

スマートウォッチ的なものが欲しいなーと思ったので、fitbit versaを購入しました。 fitbit versaはその名の通り、fitbitが今年(2018)の6月に発売したスマートウォッチです。トップの写真からもわかるように、若干Apple Watchに似ています。 元々、Huawei Watchが欲しいなーと数年前に思っていたんですが、(当然ながら)新しいモデルが出ており、これがまた初代のHuawei Watchとは全く方向性の違うスポーツタイプ。これはちょっと・・・と言うことでPebbleもいいな、と探してみると、いつの間にやらサポートが終わってしまっていました。よくよく調べると、Pebbleはfitbitに買収されたとのことでした。かといってApple

fitbit versa三日目レビュー
Next article

fitbit versa三日目レビュー

fitbit versaを使い始めて3日ほど経ったので、現時点での感想をば。 電池の持ちは前情報通り1日で20%〜25%減る程度 常時接続・Keep-AliveウィジェットはともにON 夜にお風呂/シャワー上がってから、翌日お風呂/シャワーに入るまで、で1日。 お風呂/シャワーの間に充電100% 画面つける動作の反応が悪い、という情報があったが、そんなに気にならない 歩数計は少し過敏な様で、実際歩いた歩数より多い気がする PCでの作業でも反応してる気がする 本体が防水でも、バンドが水を吸うと水に過敏になる 明日からはCLASSIC BANDに取り替えてみる


Related Articles

バックアップはちゃんと取りましょう、という話

諸般の事情・・・というか単純に本ブログを動かしていたサーバーがどうやら壊れたようで(すぐに作業できる場所に置いてない)、とりあえずクラウド上に同じような環境を作ってバックアップからリストアしたんですが、最後にバックアップ取ってから何本か記事を書いていた物が消失しました。 皆さんちゃんとバックアップは定期的にとりましょう。 以上です。

1 min read
ingress-nginxで諸々設定する
1 min read

GO TOP

🎉 You've successfully subscribed to something tech.!
OK