Rancherで複数のクラウドにデプロイする #docker #rancher
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
はじめに
前回に引き続き、Rancherの機能をご紹介します。今回はRancherが持つ複数クラウドにまたがる実行環境のデプロイについてご紹介致します。
Rancherと連携しコンテナを実行するホストは、基本的には以下の要件を満たすものであればどのようなものでも使用することができます。
- Ubuntu 14.04以降、もしくはCoreOS 494以降
- Docker 1.4.1以降が動作すること
しかしパブリッククラウドでは一般的に上記のOSインストールやDocker導入の前に、インスタンスの作成に関する諸々の設定を行う必要があります。例えばリージョンやアベイラビリティゾーンの指定、インスタンスタイプの指定などが該当します。従って実際にはパブリッククラウドが提供する管理GUIと、Rancherのような管理ソフトウェアのインターフェイスを行き来しながら設定を進めていくことになります。またAPIなどでコンテナの起動まで一貫した管理を行う場合には、パブリッククラウドが提供するAPIと、コンテナ管理ソフトウェアの提供するAPIの両方を使用してツールを作り込む必要があるため、特にAPIの異なる複数のパブリッククラウドを扱う場合には開発者の負担となります。
RancherではRancher管理GUIおよびAPIにおいて、パブリッククラウド独自の設定からインスタンスの起動まで一貫したデプロイをサポートしています。現時点ではこのような「ファーストクラス」のデプロイがサポートされているパブリッククラウドは以下に限られていますが、順次拡大していくと考えられます。
- Amazon Web Services(AWS)
- Digital Ocean
またその他のパブリッククラウド・プライベートクラウドでもインスタンス(仮想マシン)の起動、OS、Dockerの導入までを個別に実施することでRancherの管理下に入れることが可能ですので、手間の大小はあるものの、ほとんど全てのパブリッククラウド、およびプライベートクラウドでもRancherの導入は可能です。今回は上記のファーストクラス・クラウドにおけるRancherのデプロイについて解説します。
前提条件
本稿は前回の記事にて記述した事項が終了した時点から開始しており、以下のような構成になっています。
- Rancherマネージャ
SoftLayer上の仮想インスタンス
Ubuntu 14.04(Minimumインストール)
Docker 1.6.0
Rancherマネージャ(Dockerコンテナとして動作) - コンテナ実行ホスト
SoftLayer上の仮想インスタンス
Ubuntu 14.04(Minimumインストール)
Docker 1.6.0
Rancherエージェント(Dockerコンテナとして動作)
AWSへのコンテナ実行ホストのデプロイ
AWSにコンテナ実行ホストをデプロイするために、事前にコンテナ実行ホストをデプロイするVPC、およびAWS APIを呼び出すためのセキュリティクレデンシャルをそれぞれ作成しておきます。
AWSマネジメントコンソールを開き、[サービス]-[ネットワーキング]-[VPC]を選択します。
必要に応じて新しいVPCを作成してください。既にあるVPCを使用することも可能です。Rancherで使用するために、"VPC ID"をメモしておきます。
続いてセキュリティクレデンシャルを作成します。画面上部のアカウント名のプルダウンから、"認証情報"を選択します。
現在使用しているセキュリティクレデンシャル(アクセスキーIDと、シークレットアクセスキーのペア)を使用しても構いませんし、新しく作成しても構いません。使用するセキュリティクレデンシャルをメモしておきます。(【重要】シークレットアクセスキーを他者に知られてしまうと、APIにアクセスできてしまうために、AWSアカウントを悪用される可能性があります。シークレットアクセスキーを保存する場合は他者に知られないよう安全に保管するようにしてください)
"VPC ID"、セキュリティクレデンシャルを用意したら、Rancherの管理GUIを開きます。左側メニューから[Hosts]を選択し、右側の"Add Host"をクリックします。
PROVIDERで"AMAZON EC2"を選択すると画面が以下のように変化します。
必ず入力しなければいけない箇所は以下の通りです。
- NAME:コンテナ実行ホストのホスト名を入力します。ここでは"rancher-aws-01"とします
- ACCESS KEY: AWSセキュリティクレデンシャルのアクセスキーを入力します
- SECRET KEY: AWSセキュリティクレデンシャルのシークレットアクセスキーを入力します
- ZONE: AWSのリージョン内のアベイラビリティゾーンを入力します。初期状態では"a(us-east-1a)"が入力されていますが、うまく動作しないことが多いため、"b"もしくは"c"などの他のアベイラビリティゾーンを入力します
- VPC/SUBNET ID:先ほどメモした、"VPC ID"を入力します
全て入力したら、画面下部の[Create]ボタンをクリックし、作成を開始します。
コンテナ実行ホストがデプロイされている最中は画面は以下のような状態になっています。
デプロイが完了すると画面が以下のように変化します。
最後にデプロイしたホストに対するセキュリティグループ設定を行います。AWSマネジメントコンソールを開き、画面上部のメニューから[サービス]-[コンピューティング]-[EC2]を選択します。
画面左のメニューから"セキュリティグループ"を選択します。右側に作成されているセキュリティグループの一覧が表示されます。一覧の中に"docker-machine"というグループ名を持つセキュリティグループが作成されていることが分かります。これがRancherによって自動的に作成されたセキュリティグループです。"docker-machine"セキュリティグループをチェックし、[アクション]プルダウンメニューからそれぞれ"インバウンドルールの編集"、"アウトバウンドルールの編集"を選択します。
インバウンド、アウトバウンドにそれぞれ以下のようなルールを設定します。
- インバウンド
- 500/udp, 4500/udpを許可
- 9345/tcp, 9346/tcpを許可
- アウトバウンド
- 全てのアクセスを許可
実際に設定したインバウンドルール、アウトバウンドルールは以下のようになっています。
最後にRancher管理GUIからコンテナを作成し、シェルウィンドウが開くかを確認します。
Digital Oceanへのコンテナ実行ホストのデプロイ
Digital Oceanにコンテナ実行ホストをデプロイするために、事前にDigital Ocean APIを呼び出すためのアクセストークンを作成します。
Digital Oceanの管理GUIにログインし、画面上部の"API"をクリックします。
Personal Access Tokensの[Generate New Token]をクリックします。
“Token Name”に名前をセット(この例では"My Rancher-3"としました)し、[Generate Token]ボタンを押します。
トークンが作成できたらメモしておきます(【重要】アクセストークンを他者に知られてしまうと、APIにアクセスできてしまうために、Digital Oceanアカウントを悪用される可能性があります。アクセストークンを保存する場合は他者に知られないよう安全に保管するようにしてください)。
アクセストークンを用意したら、Rancherの管理GUIを開きます。左側メニューから[Hosts]を選択し、右側の"Add Host"をクリックします。
PROVIDERで"DIGITAL OCEAN"を選択すると画面が以下のように変化します。
必ず入力しなければいけない箇所は以下の通りです。
- NAME:コンテナ実行ホストのホスト名を入力します。ここでは"test-do-01"とします
- ACCESS TOKEN:先ほど作成した、Digital Oceanアクセストークンを入力します
全て入力したら、画面下部の[Create]ボタンをクリックし、作成を開始します。
作成中の画面は以下のようになっています。
作成が完了すると、画面は以下のように変化します。
おわりに
今回はRancherとパブリッククラウドとの連携について解説致しました。Rancherが外部のパブリッククラウドと連携してリソースを拡張できることがおわかり頂けたかと思います。次回はパブリッククラウドをまたいで透過的なネットワークを形成する、オーバーレイネットワークについて解説致します。オーバーレイネットワークはコンテナ運用において技術的にも最前線で取り組まれている状況であり、Rancherの最も魅力的な機能です。
ぜひお手元の環境でもお試しいただき、Rancherの魅力を感じていただけばと思います。