Deisとは
DeisはオープンソースのPaaS。プライベートHerokuみたいなやつでDockerとかCoreOSで動く。
DeisはアプリのデプロイをDockerfileでできる。あとHerokuのbuildpackでも可能。
まーそんな感じなのでCI/CDが簡単に実現できるわけですね。
あと簡単にスケールしたりもできるようです。
Deisのアーキテクチャ
Deisは7個のコンポーネントでできています。
Controller
Deisの頭脳となる部分でDjangoとCeleryでできています。
クラスタの管理やアプリの管理などをする部分です。
Database
データベースはPostgreSQLを使っています。
Cache
キャッシュはRedisです。
Builder
アプリケーションをビルドする部分でGitサーバになっています。
git pushされるとビルドされます。
Registry
Dockerイメージを配置する部分。AmazonS3とかOpenStackStorageが良く使われるみたいです。
Log Server
rsyslogを使ったログ集積部分。
Router
アプリケーションへのトラフィックをルーティングする部分。Nginxを使っている。
まー前置きはさておき
実際にうごかしてみます。
今回はMacで動かしてみるサンプルです。
事前準備
Deisを動かすために必要なものをインストールしてください。
fleetcltはCoreOSをゴニョゴニョするためのやつですが、このページからDLして
$ cp Downloads/fleet-v0.3.2-darwin-amd64/fleetctl /usr/local/bin/
こんなかんじで動かしておきます。
Controllerの用意
まずはControllerの用意をします。
$ git clone https://github.com/deis/deis.git # Deisのクローン
$ cd deis && vagrant up # DeisのVagrantを起動
$ ssh-add ~/.vagrant.d/insecure_private_key # SSHの設定
$ export DOCKER_HOST=tcp://172.17.8.100:4243 # dockerのおまじないてきなやつ
$ export FLEETCTL_TUNNEL=172.17.8.100 # fleetctlの設定
$ make pull && make run # これで起動する
$ sudo pip install deis # deisコマンドのインストール
$ deis register http://local.deisapp.com:8000 # コントローラに対してユーザの設定をする
$ deis keys:add # コントローラにたいするSSHの設定
http://local.deisapp.com:8000
このURLにアクセスすると無事Controllerが表示されるはずです。
先ほど登録したユーザでログインしてみてください。
ダッシュボードが表示できれば成功です。
クラスタの初期化
とりあえずdev
クラスタを作ります。
$ deis clusters:create dev local.deisapp.com --hosts=local.deisapp.com --auth=~/.vagrant.d/insecure_private_key
こんな感じでクラスタができます。
deis clusters:create
の引数の解説
- 第一引数はクラスタの名前
- 第二引数はクラスタのホスト名、実際にアプリがデプロイされると
balancing-giraffe.local.deisapp.com
みたいになる -
--hosts
はclusterのメンバー。カンマ区切りで複数記述可能。 -
--auth
はSSHkeyの設定。
アプリのデプロイ
前述しましたがDeisはDockerfileかBuildpackの形式のアプリのデプロイができます。
DeisのGithub organizationにサンプルが沢山あるので使ってみました。
DockerfileでPython
まずはDockerfile形式でPythonのwebサーバを動かして見るサンプル
$ git clone https://github.com/deis/example-dockerfile-python.git #サンプルをクローン
$ cd example-dockerfile-python
$ deis create #アプリの登録、これでControllerにアプリが出てきます
$ git push deis master #pushするとあら不思議、ビルドされてデプロイされます。
ビルドが終わると下記みたいな表示がでます。
remote: -----> queens-quadrant deployed to Deis
remote: http://queens-quadrant.local.deisapp.com
このURLにアクセスするとPowered by Deis
と表示されるはずです。
簡単!!
BuildpackスタイルでJavaアプリ
Buildpackのサンプルもやってみます。
$ git clone it clone https://github.com/deis/example-java-jetty.git #サンプルをクローン
$ cd example-java-jetty
$ deis create #アプリの登録、これでControllerにアプリが出てきます
$ git push deis master #pushするとあら不思議、ビルドされてデプロイされます。
まー同じですね。
こんな感じでdeisのビルドサーバにPushすると自動的にビルドされてデプロイされる状態になりました。
便利ですねー
これならプライベートクラウドもってる企業とかはフル活用できそうですね〜
おしまい