「rancher」はWeb UIを使ってDockerクラスタを管理するためのツールです。今回は日本リージョンのあるVPSサービス「Vultr」に環境構築を行う手順を紹介します。
🗻 rancherのサーバ構成
rancherの管理画面や立ち上げたDockerのインスタンスなどを管理する「rancher server」とユーザーが設定したアプリケーションが起動する「rancher agent」によって構成されます。
🤔 rancher内の用語
Rancherで使われている単語や定義を簡単に説明します。
用語 | 説明 |
---|---|
Service |
用途別のコンテナをグループ化。web, application, dbなど |
Stack |
Serviceのグループ化。一連のアプリケーションを関連付け。ひとつのサービスやシステムなど |
Environment |
環境。Production, Staging, Developmentなどの使い分け |
🐞 Vultrにインスタンスを作成
「Vultr」にiPXEブートでRancherOSを起動します。
#!ipxe |
「[初回ログインパスワード]」にはパスワードを記入します。
🚌 sshでサーバにログイン
インスタンスが立ち上がったら、sshでサーバにログインします。パスワードはさきほどiPXEブートのスクリプトに記述した物を使います。
ssh rancher@[サーバのIPアドレス] |
ログインしたらcloud-config.yml
を作成します。
#cloud-config |
次のコマンドでRancherOSをインストールします。
sudo ros install -c cloud-config.yml -d /dev/vda |
次にrancher serverをインストールします。
mkdir ~/data |
dockerのプロセスが立ち上がったら、ブラウザからhttp://[サーバのIPアドレス]:8080/
にアクセスします。
🐡 アクセス制限を行う
rancher serverのメニューのADMIN > Access Control
からGitHubログインでのアクセス制限を行います。
まずはGitHubの「Profile > Developer settings > OAuth Application > Register a new application」を選択します。
Client ID、Client Secretを使ってGitHubログインを行うように設定します。
🐝 Docker Hostを選択
Rancher severのメニューの「Infrastracture > Hosts > Add Host」でホストを追加します。Vultrは初期メニューには出てこないので「Manage available machine drivers」からVultrを追加します。
入力項目は次のとおりです。
項目 | 説明 |
---|---|
Name | 任意の名前を入力 |
apiKey | Vultrのコンソール > Account > APIかはら発行できます |
endPoint(URL?) | https://api.vultr.com/ |
osId | 初期設定のまま、RancherOSが起動 |
planId | 202 (2GBメモリプラン)などを選択。https://api.vultr.com/v1/plans/list に一覧 |
priavateNetWorking | 「オン」Private Networkに入れるかどうか |
pxeScript | そのまま |
regionId | 25 (Tokyo)などを選択。https://api.vultr.com/v1/regions/list に一覧 |
sshKeyId | 本来はSSH keyのID。私が試したときにはうまくうごいてくれなかった |
入力してしばらく待つとHostが起動してくれます。
🏀 Rancherのスタック画面からアプリケーションを登録
あとは「Stacks > User > Add Stack」からお望みのアプリケーションのdocker-composeをstackから登録するだけです。今回はTrelloクローンのwekanを立ち上げてみます。
version: '2' |
🍮 コンテナ内でコマンドを実行する
Dockerコンテナ内でshellコマンドを実行したり、Rakeタスク等を実行するための手順です。
- メニューのStack => 対象のStack(アプリケーション一式)を選択
- コマンドを実行したいサービスを選択
- メニューの中に「Execute shell」コマンドがあるのでクリック
- コンソールでコマンドを実行できます
👽 補足:Rancher OS内でコマンドを実行する
Rancher OS内でコマンドを実行する場合はdockerベースでコマンド実行するのが良さそうです。
# git |
🎉 補足:rancher CLIコマンド
Rancher CLIコマンドを追加します。まず以下を~/.zshrc
か~/.bash_profile
に登録します。API KeyなどはRancherの管理画面から取得できます。
alias rancher="docker run -ti --rm -v $(pwd):/rancher rancher/cli" |
rancherコマンドは「Rancher CLI commands」で確認できます。
🚜 補足:rancher crontabの実行
Rancherのスタックでcronで一定期間毎に実行するにはまず、Rancher管理画面のCATALOGから「Rancher Container Cron」を追加します。
そしてstackのdocker-compose.yml
に次の内容を追記します。
version: '2' |
rancher-comose.yml
は次のように記述します。
version: '2' |
これでrancher up -d
でデプロイすると定期的にスクリプトを実行できます。(動いていない間は停止します)
cronの設定はわかりやすい設定の説明です。
Tipsですが、cronを1分、6分、11分のように少し切りの悪いタイミングで動かす場合は次のように記述します。
01-59/5 * * * * command |
🐰 補足:ScalewayでRancher Agent起動
「Scaleway」でサーバを借りてRancher Agentをインストールするまでの手順です。
ScalewayのDockerイメージは少し古いDockerが入っているので、Dockerをバージョンアップしたうえで、Rancher Agentを導入しましょう。
sudo apt-get autoremove --purge docker-engine |
docker.conf
に次の内容を記述します。
[Service] |
変更を反映します。
# 変更の反映 |
🏈 補足:Cloud GarageでRancherを導入
- Web画面からインスタンスを作成
- コンソール画面からrancherユーザーのパスワードを変更
- ローカルで
ssh rancher@IPアドレス
でログイン
🐹 参考リンク
- rancherでコンテナベースのサーバ運用を始めた話
- VultrとRancherで作るLaravel環境
- RancherでDockerクラスタを構築する-③ RancherからVULTR APIでDockerホストを追加する
- SSH接続の設定変更方法
- Rancher Command Line Interface (CLI)
- Rancher CLI Commands and Options
- 各システムの Docker 設定と実行 — Docker-docs-ja 17.06.Beta ドキュメント
- メモ: Docker on Scaleway
- cronを2分,7分,12分…みたいな半端なタイミングで動かす