Help us understand the problem. What is going on with this article?

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

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

おしまい

cyberagent
サイバーエージェントは「21世紀を代表する会社を創る」をビジョンに掲げ、インターネットテレビ局「AbemaTV」の運営や国内トップシェアを誇るインターネット広告事業を展開しています。インターネット産業の変化に合わせ新規事業を生み出しながら事業拡大を続けています。
http://www.cyberagent.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした