DigitalOceanでDeisクラスターをセットアップする方法

前書き

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つの異なる方法をサポートしています。

  1. Herokuビルドパック

  2. Dockerfiles

  3. 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/ [それらのドキュメント]を参照してください。

Related