AWS Fargate for EKS がなかなかリリースされないのでそれっぽい環境を作った話
職場で Kubernetes を導入したのですが、管理コストや障害耐性などを考慮してマネージドサービスを探したところ EKS と Fargate にたどり着きました。EKS のスコープはマスタノード(Etcd + Controller Node)のマネージドサービスですのでワーカーノードはあくまでも自己管理です。そこでワーカーノードまで管理してくれるサービスとして Fargate との連携が re:Invent 2017 で発表されたのですが、2019 になってもリリースされないので自分達でそれっぽい環境を作ってみました。
Fargate の利点
そもそも Fargate を使うメリットとしては
1. ワーカー管理が不要
2. オートスケーリング
などがリストアップされます。似たような機能を持つ Cluster Autoscaler を思い浮かびますが、ただ同じスペックのノードグループを増やすのではなく用途に合わせて適切なスペックのノードが追加されるスマートなオートスケールが理想的です(テトリススケーリング)。
スポットインスタンスで節約しよう
AWSでは余剰のキャパシティを入札制で提供し、通常のEC2インスタンスより大幅に安い価格で提供しています。デメリットとしては余剰のキャパシティなのでいつでも強制終了される可能性はありますが、通常価格の30%OFFほどの相場(最大90%OFF)で利用できるため、うまくインスタンスを繋ぎ合わせれば大幅なコストカットが出来ます。
理想な環境とは
上記の要件を合わせると理想な開発環境は:
インスタンスの数を管理してくれる
インスタンスのスペックを管理してくれる
スポットインスタンスの相場に合わせて安いインスタンスタイプを購入してくれる
インスタンスが終了した場合は自動復活させる
探したらありました
少し探してみたら Spotinst という会社が EKS を含む Kubernetes クラスタに対してスポットインスタンスのワーカーノードを入札から監視まで一元管理してくれるサービスを提供していることが判明しました(日本語の紹介記事もあります)。クラスターにコントローラー Pod を一つ起動するだけで導入することができますが、中身はクラスターのリソースとスポットインスタンスの落札価格を監視していて、リソースが足りない場合は随時追加入札してくれる優れものです。本社はイスラエルにいるようで、日本時間の午後などはサポートとライブチャットできるので分からないところなどはサクッと解決できます(但し英語必須)。
コスト
Spotinst の価格設定はものすごく面白く、顧客がスポットインスタンスで節約した分の20%が取り分として設定されます。サポートにも確認しましたが、入札に失敗してオンデマンドインスタンスをプロビジョニングした場合、彼らの取り分は0円です。大企業などは自分達で実装しているとこともあると思いますが、自分達は実装コストや管理コストも考慮してEC2課金額が半分以下になるだけで大きなメリットだと考えております。
最後に
インフラの管理コスト、障害耐性、開発体験(DX)などの設計は重要だと思います。今回はいい感じにコスト管理してくれるツールとして Spotinst を紹介させていただきましたが、いかがでしょうか?Terraform でインフラを管理している方は Spotinst Provider があるので宜しければお使いください。また機会があればCI/CDなど開発環境についても共有させて頂ければと思います。
気軽にクリエイターの支援と、記事のオススメができます!