Posted at

DEISでJavaアプリケーションを動かしてみたよ(DevOpsだね)

More than 5 years have passed since last update.

deis-logo.png


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を動かすために必要なものをインストールしてください。



  • VagrantVitualBoxを入れましょう


  • Dockerもインストールしましょう

  • あとpythonとpipもいれましょう

  • fleetcltのv0.3.2をインストールしましょう。

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が表示されるはずです。

先ほど登録したユーザでログインしてみてください。

deis-dashboard.png

ダッシュボードが表示できれば成功です。


クラスタの初期化

とりあえずdevクラスタを作ります。



$ deis clusters:create dev local.deisapp.com --hosts=local.deisapp.com --auth=~/.vagrant.d/insecure_private_key

deis-cluster.png

こんな感じでクラスタができます。


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すると自動的にビルドされてデプロイされる状態になりました。

便利ですねー

これならプライベートクラウドもってる企業とかはフル活用できそうですね〜

おしまい