buildersconで知ったkuba-awsを触ってみた

この記事は Classi Advent Calendar 2016 - Qiita 7日目の記事です。前日はkitaharamikiyaによるFabric Beta によるテストアプリの配信 - Qiita でした。

12月3日に builderscon - Discover Something New に行ってきました。そこでkubernetesをAWS上で動かすという紹介をやっていたので、自分でも試しに触ってみました。と言ってもほとんどチュートリアルをやっただけです。事前にお断りしますがこれがClassiのサービスに入るわけではありません。ただこういう素振りは手を動かしてこそ身になります。

github.com

なおバージョンは0.9.1です。

完成図

チュートリアルを進めた結果ざっくりとこんな感じのものができました。 f:id:hs_hachi:20161207000814p:plain

ローカル環境から kube-aws validate --s3-uri=<S3URL> と実行すると、事前に作成したS3へ設定ファイルがアップされました。その後、 kube-aws up --s3-uri=<S3URL> を実行するとCloudFormation経由で図に書いてあるRoute53へ登録を行ったり、VPC作成、ELBなどの設定が行われて、kubernetesを使う準備ができます。

それぞれを複数台,MultiAZになっているので、仮にどちらかのサーバがダウンしてもAutoScaleが働いて別サーバが立ち上がる構成になってます。実際のプロダクション環境の場合は多重障害を懸念するのと、サーバ負荷の関係でNodeサーバは3台以上立ち上げる構成にすると思います。実際にサンプルアプリを配置すると各NodeにそれぞれDockerがビルドされました。

この絵を手で書いてるときに思ったのがこちら。MongoDBと似てるとなるとお金かかりそうな気がする。

普通にプロビジョニングをするのか、Dockerなどでインフラもアプリもまとめるのかはサービス次第なのですが自分はアプリケーションサーバなど頻繁に変わるものはDockerにしたいタイプです(Amazon LinuxのDocker Imageもできましたし)。可能な限りベンダーロックインは避けたいのでECSもなぁという気持ちはあります。

まだきちんと調べきれてない/触れていないところ

  • 上の図では書いてますが、controllerとetcdの通信経路。(AZをまたいで通信してるのか?)
  • 不要になったDocker Imageを廃棄する方法

明日は

未定らしいです。なければ frontrend 勉強会に行ってきた記事でも書きます