Check! Rancher のホストとして Azure を登録してみよう!

  • 6
    いいね
  • 0
    コメント

あけましておめでとうございます! :bamboo: @dz_ こと大平かづみです。

今年もどうぞよろしくお願いいたします!

Prologue - はじめに

さて、新年1発目の投稿は、いろんなホストを扱えるコンテナ管理プラットフォーム Rancher で、ホストに Azure を登録してみます!

Rancher とは?

Rancher は、Docker をはじめとするコンテナを管理できるプラットフォームです。Kubernetes, Swarm, Mesos など主要なオーケストレーションツールに対応し、また様々なホストを利用することができます。

この管理プラットフォームとは別に、 RancherOS という、Dockerコンテナを動かすための軽量Linuxも提供されています。

Rancher のホストに Azure を登録する準備

Rancher サーバーの準備

Rancher で外部のホストを利用するには、そのホストから Rancher サーバーにアクセスできないとなりません。そこで、今回は Azure 上に構築しました。

Azure での Rancher サーバー構築について、下記にまとめましたので、ご参考になれば幸いです。

なお、本来は安全面で TLS の設定をすべきなのですが、今回は割愛します。

Azure CLI の準備

Azure 側で Azure Active Directory のアプリケーション登録などの作業があるため、Azure CLI を準備しておきましょう。Rancher のドキュメントに合わせて、 Azure CLI 1.x 系 (Node.js) を利用します。インストール手順はこちらをご参考ください。

また、JSON パースできるコマンドの jq も併用します。

Rancher のホストに Azure を登録する

さて、Azure CLI と Rancher サーバーの準備ができたら、 Adding Azure Hosts を参考にすすめましょ!

大まかな流れ

  1. ホスト登録画面を開く
  2. サブスクリプションIDを取得する
  3. Azure AD にアプリケーションを登録し、接続情報を取得する
  4. それぞれ情報を入力して、ホストを作成する

1. ホスト登録画面を開く

画面上部のメッセージの「Add a host」をクリックするか、メニューから INFRASTRUCTURE > HOSTS でホストの画面を開き、「Add Host」をクリックします。Add Host の画面が開いたら、 Azure のアイコンを選択しましょう。

20170101_rancher-host_azure_003.png

2. サブスクリプションIDを取得する

次に、Azure CLI を使って、サブスクリプションIDを入手します(★の箇所)。 jq も併用してますが、JSON をパースしてるだけなので、ない場合は適宜読み替えてください。

# モードを arm (Azure Resource Management) に切り替える
$ azure config mode arm

# ログインする
$ azure login

# Azure のアカウント一覧を表示して、使用するアカウントを確認する
$ azure account list --json | jq '.[].name'

# 使用するアカウントを設定する
$ azure account set <ACCOUNTNAME>

# 設定されたアカウントのサブスクリプションIDを表示する ← ★ Subscription ID
$ azure account show --json | jq ".[] | .id"

3. Azure AD にアプリケーションを登録し、接続情報を取得する

引き続き、Azure AD にアプリケーションを登録し、 クライアントID とクライアントシークレットを用意します(★の箇所)。

<xxx> は適宜読み替えて入力してください。 <APPURL> は、Rancher サーバーのURLを入力しました。

# Azure AD にアプリケーション登録する
# ★ ここで指定したパスワードが Client Secret になるので控えておいてください!
$ azure ad app create -n <APPNAME> -m <APPURL> -i <APPURL> -p <PASSWORD>

# アプリケーションIDを取得する ← ★ Client ID
$ azure ad app list --json |  jq '.[] | select(.displayName | contains("<APPNAME>")) | .appId'

# サービスプリンシパルを作成する
$ azure ad sp create --applicationId <APPID>

# アプリケーションに権限を設定する
$ azure role assignment create --spn <APPURL> -o "Owner" -c /subscriptions/<SUBSCRIPTIONID>

# 設定した権限を確認する
$ azure role list --json | jq ".[] | {name:.Name, description:.Description}"

4. それぞれ情報を入力して、ホストを作成する

Azure 側の準備ができたら、ホスト設定の欄を埋めていきましょう。

  • Subscription ID, Client ID, Client Secret は上記で得たものを入力
  • INSTANCE の Size や、Storage Type は料金に関わるので、よく確認すること

これら以外はデフォルトでも構いませんが、わかりやすいように適宜調整するとよいと思います。ラベルや拡張オプションについては、任意なので割愛します。

20170101_rancher-host_azure_004.png

設定を入力し終えたら、「Create」ボタンをクリックして、しばし待ちます。意外に簡単!

20170101_rancher-host_azure_005.png

ほんの数分でプロビジョニングが完了しました!ヾ(oゝω・o)ノ))

かんたん!

メモ

備忘録がてらのメモです。

Rancher のホストとエージェント

Rancher は、ホスト上でエージェントコンテナを動かすことで、そのホストを管理します。

また、様々なプラットフォームに対応したドライバが用意されており、必要なパラメータを埋めるだけで、簡単にホスト登録できるようになっています。

今回使った Azure のドライバは、内部的には、 docker-machine を使って Azure に Docker ホストを構築するそうです。余談になりますが、 docker-machine コマンドを使った Azure VM の構築については、こちらをご参考下さいませ。

Epilogue - おわりに

ついでに、ホストが立ち上がった後、カタログからコンテナ立ち上げてみたら、とても簡単…!

例えば、カタログから WordPress を立ち上げて、Azure 側のファイアウォールの 80番ポートを空けてあげるだけ!

おそるべし Rancher ! :cow2:

今年は酉年ですけど、もっとコンテナくんたち :whale2: :cow2: を飼いならしていきたいと思います!