DigitalOceanでDeisクラスターを設定する方法
序章
Deisは、独自のサーバーでのアプリケーションの展開と管理を簡素化するオープンソースのプライベートPlatform as a Service(PaaS)です。 DockerやCoreOSなどのテクノロジーを活用することで、Deisは、選択したホスティングプロバイダーで、Herokuと同様のワークフローとスケーリング機能を提供します。 Deisは、Dockerコンテナーで実行できるアプリケーションをサポートし、CoreOSをサポートする任意のプラットフォームで実行できます。
このチュートリアルでは、DigitalOceanで独自の3マシンDeisプラットフォームクラスターをセットアップする方法を示します。
注:このチュートリアルは、Deisのv1.9.0リリースに基づいています。
前提条件
このガイドを完了するには、次のものが必要です。
- 少なくとも4GBのメモリと40GBのディスクスペースを持つ少なくとも3つの液滴を作成する機能。 これらは、DeisプラットフォームがインストールされるCoreOSマシンになります
- ドロップレットに追加するSSHキー。これは、を使用する際の認証に使用されます。
deisctl
道具 - Deisのビルダーに対して認証するためのSSHキー
- クラスタマシンを指すドメイン–このチュートリアルでは
example.com
そのドメインとして。 別の方法は、xipを使用することです。
このチュートリアルは、DigitalOceanでCoreOSクラスターをセットアップする方法に大きく基づいています。 CoreOSクラスターの作成に関連するこのチュートリアルの手順に従うのに問題がある場合は、それを確認してください。
Deis ControlUtilityもインストールします。 deisctl
、および Deisクライアント、 deis
、ローカルのMac OS Xコンピュータにインストールできますが、必要に応じて、Ubuntu14.04ドロップレットなどの別の場所にインストールできます。 CoreOSドロップレットの作成に使用される公開SSHキーに対応するプライベートSSHキーは、次の場所のコンピューターに存在する必要があります。 deisctl
がインストールされています。
新しい検出URLを生成する
DeisプラットフォームをインストールするCoreOSクラスターを作成するには、最初に、ピアCoreOSアドレスとメタデータを格納する一意のアドレスである新しい検出URLを生成する必要があります。 これを行う最も簡単な方法は、 https://discovery.etcd.io
、無料の発見サービス。 Webブラウザでhttps://discovery.etcd.io/new?size=3にアクセスするか、次のコマンドを実行して、新しい検出URLを指定します。 curl
指図:
curl -w "\n" "https://discovery.etcd.io/new?size=3"
どちらのメソッドも、次のような一意の新しい検出URLを返します(強調表示された部分は一意のトークンになります)。
https://discovery.etcd.io/f8d48be35b794da45e249bb149729a27
結果の検出URLを使用して、新しいDeisプラットフォームクラスターを作成します。 同じ検出URLをで指定する必要があります etcd
特定のDeisプラットフォームクラスターに追加する各CoreOSサーバーのcloud-configのセクション。
検出URLができたので、それをに追加してみましょう。 cloud-config
これを使用して、Deisクラスターの各マシンを作成します。
Deisユーザーデータ
Deisクラスターで使用されるCoreOSマシンのクラスターを作成するには、特別なものを使用します cloud-config
Deisのメンテナによって提供されるファイル。 このファイルは、DeisGitHubリポジトリで入手できます。
提供されたユーザーデータをテキストエディタで開き、検出URLが定義されている行を見つけます。 次のようになります。
--discovery #DISCOVERY_URL
コメントを外し、強調表示されたものを置き換えます #DISCOVERY_URL
前の手順で生成した一意の検出URLを使用します。
このチュートリアルはDeis1.9.0に基づいていますが、サンプルユーザーデータで指定されているバージョンの方が最新である可能性があります。 次の行を探します(強調表示された数字はバージョンを表します)。
ExecStart=/usr/bin/sh -c 'curl -sSL --retry 5 --retry-delay 2 http://deis.io/deisctl/install.sh | sh -s 1.9.0'
バージョン番号をメモしてください。 インストールするときは、必ずユーザーデータのバージョンを使用してください deisctl
と deis
次の手順で。
必要に応じて、このユーザーデータファイルをどこかに保存できます。
CoreOSドロップレットを作成する
使用するユーザーデータができたので、CoreOSマシンを作成しましょう。 提供する方法に慣れていない場合 cloud-config
ドロップレットの作成中にユーザーデータを介してファイルを作成するには、CoreOSクラスタリングチュートリアルのCloud-Configの提供方法セクションを参照してください。
次の仕様で、同じ領域に少なくとも3つのドロップレットを作成します。
- 少なくとも4GBメモリおよび40GBディスクスペース
- プライベートネットワークが有効になっている場合。 選択した地域でプライベートネットワークが利用できない場合は、ユーザーデータを編集し、発生するすべてのデータを置き換えます
$private_ipv4
と$public_ipv4
- ユーザーデータを有効にする前の手順のユーザーデータを入力します
- LinuxディストリビューションとしてCoreOSStableチャネルを選択します
- リストからSSHキーを選択します
使用したい場合 docl
ドロップレットをプロビジョニングするための便利なツールについては、こちらの手順に従ってください。
これらのマシンを少なくとも3台作成すると、Deisプラットフォームをインストールする準備ができたCoreOSクラスターができあがります。 DNSの設定に移りましょう。
DNSを構成する
Deisが正しく機能するには、ワイルドカードDNSレコードが必要です。 使用しているトップレベルドメイン(TLD)が example.com
、アプリケーションはに存在します *.example.com
レベル。 たとえば、「app」と呼ばれるアプリケーションには、 app.example.com
.
DigitalOceanでこれを構成する1つの方法は、DNSコントロールパネルを介してラウンドロビンDNSを設定することです。 これを行うには、ドメインに次のレコードを追加します。
- トップレベルドメインのワイルドカードCNAMEレコード、つまり CNAMEレコードと
*
名前として、そして@
正規のホスト名として - 作成されたCoreOSマシンごとに、TLDを指すAレコード。 名前の付いたAレコード
@
、DropletのパブリックIPアドレス
これで、ゾーンファイルに次のエントリが含まれるようになります:(IPアドレスは異なります)
DNS Records 1 of 2* CNAME @
@ IN A 104.131.93.162
@ IN A 104.131.47.125
@ IN A 104.131.113.138
この例では、Deisルーター/コントローラーは経由で到達可能です deis.example.com
.
便宜上、ノードごとにDNSレコードを設定することもできます。
DNS Records 2 of 2deis-1 IN A 104.131.93.162
deis-2 IN A 104.131.47.125
deis-3 IN A 104.131.113.138
DNSコントロールパネルの使用についてサポートが必要な場合は、このチュートリアルを確認してください。
xip.ioを使用する
独自のドメインを設定したくない場合は、 xip.io
ワイルドカードDNSを提供します。 基本的に、これにより、「。xip.io」が付加されたDropletのIPアドレスを、IPアドレスに解決されるワイルドカードドメインとして使用できるようになります。
クラスターにDeisプラットフォームをインストールした後、実行しているCoreOSマシンを特定します。 [email protected]
ユニット deisctl list
—インストールします deisctl
次のセクションで。 次に、そのマシンのパブリックIPアドレスを決定します。 もしそれが 104.131.47.125
、次のドメインを使用してDeisルーターにアクセスできます。
xip.io exampledeis.104.131.47.125.xip.io
セキュリティグループ設定を適用する
DigitalOceanドロップレットでは、デフォルトでファイアウォールが有効になっていないため、いくつか追加する必要があります iptables
コンポーネントが部外者にアクセスされないようにするためのルール。 Deisリポジトリは、まさにそれを実行できるここにあるスクリプトを提供します。
- curl -O https://raw.githubusercontent.com/deis/deis/master/contrib/util/custom-firewall.sh
スクリプトの内容を確認した後、各サーバーでスクリプトを実行します。 たとえば、前に作成したDNSエントリを使用して、次のコマンドを実行します。
- ssh core@deis-1.example.com 'bash -s' < custom-firewall.sh
- ssh core@deis-2.example.com 'bash -s' < custom-firewall.sh
- ssh core@deis-3.example.com 'bash -s' < custom-firewall.sh
必ずすべてのサーバーでスクリプトを実行してください。
DeisToolsをインストールする
CoreOSクラスターがセットアップされたので、DeisControlUtilityとClientをインストールします。 これらのツールは、Deisクラスターを制御するコンピューターにインストールする必要があります。 それらを別のUbuntu14.04ドロップレットにインストールする方法を示しますが、好きな場所にインストールできます。
DeisControlUtilityをインストールします
Deis Control Utilityを使用すると、Deisマシンと対話し、クラスターにDeisプラットフォームをインストールできます。
インストールするディレクトリに移動します deisctl
バイナリ。 次に、次のコマンドを使用してインストールスクリプトをダウンロードして実行し、Deis Control Utilityをインストールします(バージョンをユーザーデータで見つかった番号に置き換えます)。
- /bin/bash -c 'curl -sSL http://deis.io/deisctl/install.sh | sh -s 1.9.0'
これはインストールします 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 1.9.0'
これはインストールします 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/id_rsa_deis
次に、エクスポートする必要があります DEISCTL_TUNNEL
名前またはパブリックIPアドレスでDeisマシンの1つを指す。 「便利な」DNSレコードを設定する場合は、それらの1つをトンネルに使用できます。 例えば:
- export DEISCTL_TUNNEL=deis-1.example.com
これはどこです deisctl
クラスターとの通信を試みます。 を実行することで、正しく機能していることをテストできます deisctl list
. 1行の出力が表示される場合、制御ユーティリティは指定されたCoreOSマシンと通信しています。
プラットフォームをプロビジョニングする前に、SSHキーをDeisに追加して、その間にリモートホストに接続できるようにする必要があります。 deis run
:
- deisctl config platform set sshPrivateKey=~/.ssh/id_rsa_deis
また、アプリケーションをデプロイしているドメイン名をコントローラーに通知する必要があります。
- deisctl config platform set domain=example.com
以前の構成コマンドを実行したら、次のコマンドを使用して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
「Deisstarted。」が表示されたら、Deisプラットフォームはクラスター上で実行されています。
次のコマンドを実行して、すべてのDeisユニットがロードおよびアクティブであることを確認できます。
- deisctl list
すべてのユニットがアクティブになっている必要があります。
Deis-store-adminのインストール(オプション)
あなたはインストールしたいかもしれません deis-store-admin
先に進む前にコンポーネント。 ストレージの問題を診断するときに役立つことがよくあります。
コンポーネントをインストールするには、次のコマンドを実行します。
- deisctl install store-admin
- deisctl start store-admin
クラスタのプロビジョニングが完了したので、Deis管理者ユーザーを登録してプラットフォームの使用を開始します。
Deisユーザーを登録する
Deisプラットフォームが実行されているので、ユーザーをに登録する必要があります。 deis
指図。 The deis
コマンドは、routerユニットを介してDeisコントローラーと通信します。 deis.example.com
この例では:
- deis register http://deis.example.com
ユーザー名、パスワード、およびメールアドレスの入力を求められます。 これらのアイテムを提供すると、Deisプラットフォームに自動的にログインします。
次に、適切なSSHキーをに追加します deis
. 次のコマンドを入力します。
- deis keys:add
使用可能なキーからSSHキーを選択するように求められます。 追加するキーを選択します。
Deisにログインします
後でログインする必要がある場合は、次のコマンドを使用します。
- deis login http://deis.example.com
以前に作成したログインの入力を求められます。
サンプルアプリケーションのデプロイ(オプション)
Deisは、アプリケーションを構築する3つの異なる方法をサポートしています。
- Herokuビルドパック
- Dockerfiles
- Dockerイメージ
Heroku Buildpackワークフローを使用して、Deisが提供するexample-ruby-sinatraを使用してアプリケーションをデプロイする方法を示します。
サンプルアプリケーションをダウンロードするディレクトリに移動します。 目的の場所に移動したら、次のコマンドを実行してgitリポジトリのクローンを作成します。
- git clone https://github.com/deis/example-ruby-sinatra.git
- cd example-ruby-sinatra
The deis create
コマンドを使用して、Deisコントローラーでアプリケーションを作成できます。 今すぐ実行:
- deis create
これにより、アプリケーションが作成され、Deisの自動命名アルゴリズムを使用して名前が付けられます。
deis create output:Creating application... done, created dapper-yachting
Git remote deis added
この場合、アプリケーションの名前は dapper-yachting
.
ここで、アプリケーションをデプロイするには、 git push deis master
. 今やれ:
git push deis master
デプロイするコマンドを実行すると、多くの出力行が表示されます。 完了すると、出力にはアプリケーションがデプロイされたことが示され、自動的に生成された名前とアクセスできる場所が示されます。
git push deis master output:...
-----> Launching...
done, dapper-yachting:v2 deployed to Deis
http://dapper-yachting.example.com
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://dapper-yachting.dev.example.com
次のような出力が表示されます。
App output:Powered by Deis! Running on container ID a0d35733aad8
サンプルアプリケーションは、実行されている場所のコンテナIDを検索し、それを出力します。 おめでとうございます! Deisプラットフォームが機能します!
結論
Deisのセットアップが機能するようになったので、他の2つのワークフローを使用してDeisアプリケーションをデプロイしてみてください。 dockerfile ワークフローは、HerokuBuildpackフローと似ています。 git push
dockerimageワークフローは deis pull
展開します。 また、Deisは、ここで説明したよりもはるかに多くの機能を提供します。詳細については、ドキュメントを確認してください。