前書き
DeisはオープンソースのプライベートPlatform as a Service(PaaS)であり、独自のサーバーへのアプリケーションのデプロイと管理を簡素化します。 DockerやCoreOSなどのテクノロジーを活用することにより、Deisは、選択したホスティングプロバイダーで、Herokuに類似したワークフローとスケーリング機能を提供します。 Deisは、Dockerコンテナーで実行できるアプリケーションをサポートしており、CoreOSをサポートする任意のプラットフォームで実行できます。
このチュートリアルでは、DigitalOceanで独自の3-machine Deisプラットフォームクラスターをセットアップする方法を示します。
前提条件
このガイドを完了するには、次のものが必要です。
-
少なくとも* 4GBのメモリ*と* 40GBのディスク容量*を備えた少なくとも* 3のドロップレット*を作成する機能。 これらは、DeisプラットフォームがインストールされるCoreOSマシンになります
-
ドロップに追加するSSHキー。これは、 `+ deisctl +`ツールを使用する際の認証に使用されます。
-
Deisのビルダーに対して認証するためのSSHキー
-
クラスターマシンを指すドメイン。このチュートリアルでは、ドメインとして「+ example.com +」を使用します。 別の方法は、http://xip.io [xip]を使用することです
このチュートリアルは、https://www.digitalocean.com/community/tutorials/how-to-set-up-a-coreos-cluster-on-digitalocean [DigitalOceanでCoreOSクラスターをセットアップする方法]に基づいています。 CoreOSクラスターの作成に関連するこのチュートリアルの手順を実行するのに問題がある場合は、それを確認してください。
Deis Control Utility、 + deisctl +
、およびhttps://github.com/deis/deis[Deisクライアント]、 + deis +
、ローカルMac OS Xコンピューターにインストールしますが、必要に応じてUbuntu 14.04 Dropletなどの別の場所にインストールすることもできます。 CoreOSドロップレットの作成に使用される公開SSHキーに対応する秘密SSHキーは、 `+ deisctl +`がインストールされているコンピューターに存在する必要があります。
新しいディスカバリーURLを生成する
DeisプラットフォームをインストールするCoreOSクラスターを作成するには、まず、ピアCoreOSアドレスとメタデータを格納する一意のアドレスである新しい検出URLを生成する必要があります。 これを行う最も簡単な方法は、無料のディスカバリサービスである `+ https:// discovery.etcd.io `を使用することです。 Webブラウザでhttps://discovery.etcd.io/new?size=3にアクセスするか、次の ` curl +`コマンドを実行して、新しい検出URLを作成します。
curl -w "\n" "https://discovery.etcd.io/new?size=3"
いずれの方法でも、次のような一意の新しい検出URLが返されます(強調表示された部分は一意のトークンになります)。
https://discovery.etcd.io/
結果のディスカバリーURLを使用して、新しいDeisプラットフォームクラスターを作成します。 特定のDeisプラットフォームクラスターに追加する各CoreOSサーバーのcloud-configの「+ etcd +」セクションで同じディスカバリーURLを指定する必要があります。
ディスカバリーURLができたので、Deisクラスターの各マシンを作成するために使用する `+ cloud-config +`にそれを追加してみましょう。
Deisユーザーデータ
Deisクラスターで使用されるCoreOSマシンのクラスターを作成するには、Deisのメンテナーが提供する特別な `+ cloud-config +`ファイルを使用します。 このファイルは、Deis GitHubリポジトリから入手できます。
提供されたユーザーデータをテキストエディターで開き、_discovery URL_が定義されている行を見つけます。 これは次のようになります。
--discovery
コメントを外し、強調表示された `+#DISCOVERY_URL +`を前の手順で生成した一意の検出URLに置き換えます。
このチュートリアルはDeis 1.9.0に基づいていますが、サンプルユーザーデータで指定されているバージョンはより新しい可能性があります。 次の行を探します(強調表示されている数字はバージョンを表します)。
ExecStart=/usr/bin/sh -c 'curl -sSL --retry 5 --retry-delay 2 http://deis.io/deisctl/install.sh | sh -s '
バージョン番号をメモします。 次の手順で `+ deisctl `と ` deis +`をインストールするときは、必ずユーザーデータのバージョンを使用してください。
必要に応じて、このユーザーデータファイルをどこかに保存できます。
CoreOSドロップレットを作成する
使用する_user data_ができたので、次にCoreOSマシンを作成しましょう。 ドロップレットの作成中に_user data_経由で `+ cloud-config +`ファイルを提供する方法に慣れていない場合は、https://www.digitalocean.com/community/tutorials/how-to-set-up-aを参照してください-coreos-cluster-on-digitalocean#how-to-provide-cloud-config-on-digitalocean [Cloud-Configを提供する方法]セクションのCoreOSクラスタリングチュートリアル。
以下の仕様で、少なくとも同じリージョンに少なくとも3つのドロップレットを作成します。
-
少なくとも* 4GBのメモリ*および* 40GBのディスク容量*
-
*プライベートネットワーキング*が有効になっている場合、有効です。 選択した地域でプライベートネットワークが利用できない場合は、ユーザーデータを編集し、出現するすべての `+ $ private_ipv4 `を ` $ public_ipv4 +`に置き換えます
-
ユーザーデータを有効にし、前のステップのユーザーデータを入力します
-
Linuxディストリビューションとして[* CoreOS Stable channel *]を選択します
-
リストからSSHキーを選択します
「+ docl +」便利ツールを使用してドロップレットをプロビジョニングする場合は、http://docs.deis.io/en/latest/installing_deis/digitalocean/ [こちら]の手順に従ってください。
これらのマシンを少なくとも3つ作成したら、Deisプラットフォームをインストールする準備が整ったCoreOSクラスターが必要です。 DNSのセットアップに移りましょう。
DNSを構成する
Deisが正常に機能するには、ワイルドカードDNSレコードが必要です。 使用しているトップレベルドメイン(TLD)が `+ example.com `である場合、アプリケーションは ` *。example.com `レベルに存在します。 たとえば、「app」というアプリケーションには、 ` app.example.com +`からアクセスできます。
DigitalOceanでこれを構成する1つの方法は、https://cloud.digitalocean.com/domains [DNSコントロールパネル]を介してラウンドロビンDNSをセットアップすることです。 これを行うには、次のレコードをドメインに追加します。
-
トップレベルドメインのワイルドカードCNAMEレコード、つまり 名前として「+ * 」、正規のホスト名として「 @ +」を持つCNAMEレコード
-
作成されたCoreOSマシンごとに、TLDを指すAレコード、つまり DropletのパブリックIPアドレスを持つ「+ @ +」という名前のAレコード
ゾーンファイルには、次のエントリが含まれるようになります(IPアドレスは異なります)。
DNS Records 1 of 2* CNAME @
@ IN A
@ IN A
@ IN A
この例では、Deisルーター/コントローラーは `+ deis.example.com +`を介して到達可能です。
便宜上、各ノードのDNSレコードを設定することもできます。
DNS Records 2 of 2deis-1 IN A
deis-2 IN A
deis-3 IN A
DNSコントロールパネルの使用についてサポートが必要な場合は、https://www.digitalocean.com/community/tutorials/how-to-set-up-a-host-name-with-digitalocean [このチュートリアル]をご覧ください。
xip.ioを使用する
独自のドメインを設定したくない場合は、 `+ xip.io +`を使用してワイルドカードDNSを提供できます。 基本的に、これにより、「。xip.io」が付加されたDropletのIPアドレスを、IPアドレスに解決されるワイルドカードドメインとして使用できます。
Deisプラットフォームをクラスターにインストールした後、どのCoreOSマシンが `+ deisctl list `で ` deis-router @ 1.service `ユニットを実行しているかを確認します。次のセクションで ` deisctl `をインストールします。 次に、そのマシンのパブリックIPアドレスを決定します。 ` 104.131.47.125 +`の場合、次のドメインを使用してDeisルーターに到達できます。
xip.io exampledeis..xip.io
セキュリティグループ設定を適用
DigitalOcean Dropletsではデフォルトでファイアウォールが有効になっていないため、部外者がコンポーネントにアクセスできないようにするために、いくつかの「+ iptables +」ルールを追加する必要があります。 Deisリポジトリーはスクリプトを提供します。これはhttps://github.com/deis/deis/blob/master/contrib/util/custom-firewall.sh [こちら]で見つけることができます。
curl -O https://raw.githubusercontent.com/deis/deis/master/contrib/util/custom-firewall.sh
スクリプトの内容を確認した後、各サーバーで実行します。 たとえば、前に作成したDNSエントリを使用して、次のコマンドを実行します。
ssh core@ 'bash -s' < custom-firewall.sh
ssh core@ 'bash -s' < custom-firewall.sh
ssh core@ 'bash -s' < custom-firewall.sh
必ずすべてのサーバーでスクリプトを実行してください。
Deisツールをインストールする
CoreOSクラスターがセットアップされたので、Deis Control UtilityとClientをインストールします。 Deisクラスターを制御するコンピューターにこれらのツールをインストールする必要があります。 別のUbuntu 14.04ドロップレットにインストールする方法を示しますが、好きな場所にインストールできます。
Deis Control Utilityのインストール
Deis Control Utilityを使用すると、Deisマシンと対話し、クラスターにDeisプラットフォームをインストールできます。
`+ deisctl +`バイナリをインストールしたいディレクトリに移動します。 次に、次のコマンドを使用してインストールスクリプトをダウンロードして実行し、Deis Control Utilityをインストールします(バージョンをユーザーデータで見つかった番号に置き換えます)。
/bin/bash -c 'curl -sSL http://deis.io/deisctl/install.sh | sh -s '
これにより、 `+ deisctl +`が現在のディレクトリにインストールされ、Deisユニットファイルが更新されます。
これを + / usr / local / bin`にリンクして、
+ PATH`に追加します:
sudo ln -fs $(pwd)/deisctl /usr/local/bin/deisctl
これで、 `+ deisctl +`コマンドを使用できます。
Deisクライアントをインストールする
Deisコマンドラインインターフェイスとも呼ばれるDeisクライアントを使用すると、Deisコントローラーユニットと対話できます。
`+ deis +`バイナリをインストールしたいディレクトリに移動します。 次のコマンドでインストールスクリプトをダウンロードして実行し、Deisクライアントをインストールします(バージョンをユーザーデータで見つかった番号に置き換えます)。
/bin/bash -c 'curl -sSL http://deis.io/deis-cli/install.sh | sh -s '
これにより、現在のディレクトリのクライアントである + deis +`がインストールされます。 これを `+ / usr / local / bin`にリンクして、
+ PATH`に追加します:
sudo ln -fs $(pwd)/deis /usr/local/bin/deis
Deisクライアントがインストールされます。 これで、 `+ deis +`コマンドを使用できます。
Deisプラットフォームのプロビジョニング
Deisツールをインストールしたコンピューターから、Deisプラットフォームをプロビジョニングします。
SSHエージェントが実行されていることを確認します(CoreOSドロップレットに追加されたSSHキーに対応する秘密キーを選択します):
eval `ssh-agent -s`
ssh-add ~/.ssh/
次に、名前またはパブリックIPアドレスで、Deisマシンの1つを指すように「+ DEISCTL_TUNNEL +」をエクスポートする必要があります。 「便利な」DNSレコードを設定する場合、トンネルにそれらの1つを使用できます。 例えば:
export DEISCTL_TUNNEL=
これは、 `+ deisctl `がクラスターとの通信を試みる場所です。 ` diesel list`を実行することで、正常に動作していることをテストできます。 1行の出力が表示される場合、制御ユーティリティは指定されたCoreOSマシンと通信しています。
プラットフォームをプロビジョニングする前に、DeisにSSHキーを追加して、 `+ deis run +`中にリモートホストに接続できるようにする必要があります。
deisctl config platform set sshPrivateKey=~/.ssh/
また、アプリケーションを展開するドメイン名をコントローラーに伝える必要があります。
deisctl config platform set domain=
前の構成コマンドが実行されたら、次のコマンドを使用してDeisプラットフォームをプロビジョニングします。
deisctl install platform
次のような出力が表示されます。これは、Deisの実行に必要なユニットがCoreOSクラスターにロードされたことを示しています。
Install Output:● ▴ ■
■ ● ▴ Installing Deis...
▴ ■ ●
Storage subsystem...
deis-store-metadata.service: loaded
...
Done.
Please run `deisctl start platform` to boot up Deis.
次のコマンドを実行して、Deisプラットフォームを起動します。
deisctl start platform
「Deis started。」と表示されると、Deisプラットフォームがクラスターで実行されています!
次のコマンドを実行して、すべてのDeisユニットが_loaded_および_active_であることを確認できます。
deisctl list
すべてのユニットがアクティブになっている必要があります。
Deis-store-adminのインストール(オプション)
先に進む前に、 `+ deis-store-admin +`コンポーネントをインストールすることをお勧めします。 ストレージの問題を診断するときに役立ちます。
コンポーネントをインストールするには、次のコマンドを実行します。
deisctl install store-admin
deisctl start store-admin
クラスターのプロビジョニングが完了したので、Deis管理ユーザーを登録して、プラットフォームの使用を開始してください!
Deisユーザーを登録する
Deisプラットフォームが実行されたので、 `+ deis `コマンドでユーザーを登録する必要があります。 ` deis `コマンドは、この例の ` deis.example.com +`でアクセス可能な_router_ユニットを介してDeisコントローラーと通信します。
deis register http://deis.
ユーザー名、パスワード、および*メールアドレス*の入力を求められます。 これらのアイテムを提供すると、Deisプラットフォームに自動的にログインします。
次に、適切なSSHキーを「+ deis +」に追加します。 次のコマンドを入力します。
deis keys:add
使用可能なキーからSSHキーを選択するよう求められます。 追加するキーを選択します。
Deisにログイン
後でログインする必要がある場合は、次のコマンドを使用します。
deis login http://deis.
前に作成したログインを求められます。
サンプルアプリケーションの展開(オプション)
Deisは、アプリケーションを構築する3つの異なる方法をサポートしています。
-
Herokuビルドパック
-
Dockerfiles
-
Dockerイメージ
Deisが提供するhttps://github.com/deis/example-ruby-sinatra[example-ruby-sinatra]を使用して、Heroku Buildpackワークフローを使用してアプリケーションをデプロイする方法を示します。
サンプルアプリケーションをダウンロードするディレクトリに移動します。 目的の場所に移動したら、次のコマンドを実行してgitリポジトリのクローンを作成します。
git clone https://github.com/deis/example-ruby-sinatra.git
cd example-ruby-sinatra
`+ deis create +`コマンドを使用して、Deisコントローラーでアプリケーションを作成できます。 今すぐ実行:
deis create
これにより、アプリケーションが作成され、Deisの自動命名アルゴリズムで名前が付けられます。
deis create output:Creating application... done, created
Git remote deis added
この場合、アプリケーションの名前は「+ dapper-yachting +」です。
ここで、アプリケーションをデプロイするには、 `+ git push deis master +`を使用します。 今やれ:
git push deis master
コマンドを実行してデプロイすると、多くの行の出力が表示されます。 完了すると、出力にアプリケーションがデプロイされたことが示され、自動的に生成された名前とアクセス可能な場所が通知されます。
git push deis master output:...
-----> Launching...
done, :v2 deployed to Deis
To learn more, use `deis help` or visit http://deis.io
To ssh://[email protected]:2222/dapper-yachting.git
* [new branch] master -> master
この例では、URLは「+ http://dapper-yachting.dev.example.com+」であり、これはアプリケーション名とクラスター名を組み合わせたものです。
WebブラウザーでアプリケーションのURLにアクセスするか、次のcurlコマンド(独自のURLで置換)を使用して、機能することをテストできます。
curl http://
次のような出力が表示されます。
App output:Powered by Deis! Running on container ID a0d35733aad8
サンプルアプリケーションは、実行されている場所のコンテナIDを検索し、出力します。 おめでとうございます。 あなたのDeisプラットフォームは機能します!
結論
Deisのセットアップが完了したので、他の2つのワークフローを使用してDeisアプリケーションをデプロイしてみてください。 _dockerfile_ワークフローはHeroku Buildpackフローに似ていますが、デプロイには `+ git push `を使用し、_docker image_ワークフローは ` deis pull +`を使用してデプロイします。 また、Deisはここで説明した機能よりもはるかに多くの機能を提供します。詳細については、http://docs.deis.io/en/latest/ [それらのドキュメント]を参照してください。