こんにちはこんばんは、フリューのジョンです。
この記事はフリューAdvent Calendar 2018の12/24分となります。(ちなみに弊社はお休みです)
Dockerやってたりすると、オーケストレーションをしたくなりますよね。
そこでよく使われるのがKuberneteであったりするのですが、やっぱり構成が大変だったり、取っ掛かりが難しいとかあるような気がしています。
それでよく使われるのが、GoogleやAWSのKubernete、GKEやKESなどのサービスが多いのかなと思います。
ただ、もしそういうのが使えない。。。という方、Rancherはどうですか?と思っています。
Rancherとは
GUIでポチポチっとdocker imageのオーケストレーション構成を簡単に組み立てられるありがたいツールになります。
内部でのLoadBarancerなどの配置、アプリケーションのスケーリングが簡単にできるのは良い点かなと思います。
最近Rancher2系がリリースされており、DockerHubでは rancher/rancher となっています。rancher/serverでは1系がダウンロードできます。
Rancherの起動はDocker(Docker Compose)を使います。docker-compose.ymlは以下のようになります
version: '3'
services:
rancher-server:
image: rancher/rancher:latest
container_name: rancher-server
ports:
- "8000:80"
- "8443:443"
environment:
- CATTLE_DB_CATTLE_USERNAME=rancher
- CATTLE_DB_CATTLE_PASSWORD=rancher
volumes:
- ~/rancher/rancher-server/mysql:/var/lib/mysql
- ~/rancher/rancher-server/mysql-log:/var/log/mysql
- ~/rancher/rancher-server/cattle:/var/log/cattle
env_file: .env # もしプロキシなどの設定を渡す必要があればこのような感じで
restart: unless-stopped
sudo docker-compose up -d
無事に立ち上がりましたら、https://(host名):8443 にアクセスしてみてください。ログイン画面が出ると思います。デフォルトはadmin/adminです。


今回触る上で試しに、構成としては下の図のような構成を作成しようと思います。

Rancherをつかってみる
ポチポチやっていきましょう。まず、clusterを作ります。名前は「kotlin-sample-cluster」です。コマンドが表示されていますのでそれをコピーしておいてください。


次にアプリケーションを起動するサーバを登録します。先程のコマンドをサーバ上で叩いてください。
sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run rancher/rancher-agent:v2.1.4 --server https://${①}:8443 --token ${②} --ca-checksum ${③} --worker
するとNodesのタブの画面で以下のようにサーバが登録が開始されているのを確認できるはずです。暫く待つと登録完了となるはずです


では実際にアプリケーションを配置します。


LB(LoadBalancer)

kotlin-sample-httpd、kotlin-sample-tomcatは私が作成したアプリケーションをimageにしたものになります。
LBでkotlin-sample-httpdへ向けているので、しばらくしてから、http:(ホスト名)/hello にアクセスしてみてください。
hello, world!! という形で表示できていれば、Rancher完全理解したという状態になっているはず、、、です。
まとめ
Docker Imageをクラスタリングできました。ただし、プロキシ環境では難しくなってくるかもしれません。
皆様、困ったときにRancherを思い出してもらえればと思います!