58
60

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

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

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

おしまい

58
60
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
58
60

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?