さくらのクラウド: スタートアップスクリプト「Rancher2 セットアップ」 〜 AA DOJO #1 LT 〜

Alternative Architecture DOJO Offline #1に参加してきました

2018/11/28にFukuoka Growth Next(通称:FGN)で開催された「Alternative Architecture DOJO Offline #1」というイベントでLTさせていただきました。

alterbooth.connpass.com

このイベントはConnpass上でのサブタイトルとして「クラウドネイティブを語りつくす!」と銘打たれており、 その名に恥じない濃く実践的な知見が数多く共有された素晴らしいイベントでした。

当日の様子:

togetter.com

元々このイベントには一般枠で申し込んでいたのですが、 当記事タイトルの「さくらのクラウド Rancher2セットアップ」というスタートアップスクリプトの リリースが開催に間に合うという幸運に恵まれたため、イベント当日急遽LTに申し込みをさせていただきました。

LTは無事行えたのですが、スライドが悪ふざけしすぎていて公開できる状態ではなかったのでこの記事で改めてこのスタートアップスクリプトについて紹介します。

さくらのクラウド Rancher2セットアップ スタートアップスクリプト

イベント開催当日(2018/11/28)にさくらのクラウドにおいてスタートアップスクリプト「Rancher2セットアップ」がリリースされました。

cloud-news.sakura.ad.jp

これは、さくらのクラウドでサーバをプロビジョニングするための仕組みである「スタートアップスクリプト」の中の一つで、 コントロールパネルから当該スクリプトを選んだ上でサーバ作成を行うことでRancher2のセットアップが出来るというものです。

このスクリプトはスタートアップスクリプトを公開しているGitHub上のリポジトリに対しPullRequestを送って追加していただいたものです。

以下の機能を持っています。

これにより、サーバ起動後すぐにさくらのクラウド上にKubernetesクラスタの作成が行える状態となっています。
しかもクラスタ作成時に必要な情報は最低限以下の3つだけという手軽さです。

どんな感じで使うのか見てみます。

使い方

まずはさくらのクラウドのサーバ作成画面でRancher用のスタートアップスクリプトを選択します。

f:id:febc_yamamoto:20181129180455p:plain

この時に以下3項目を指定します。

  • Rancher 管理ユーザーのパスワード
  • Rancherがノードを作成する対象ゾーン
  • Rancherがノードを作成するのに利用するさくらのクラウドAPIキー

後はそのままサーバ作成を行うだけでOKです。
(APIキーは「作成」権限の付いたものが必要な点に注意してください)

サーバ作成後に https://<作成したサーバのIPアドレス> にアクセスするとRancherのログイン画面が表示されます。
(ダウンロードなどに時間がかかりRancher起動まで数分かかることもあります)

f:id:febc_yamamoto:20181129181141p:plain

ユーザー名は admin、パスワードはコントロールパネルで指定したものを入力することでログインできるようになっています。

なお、初回アクセス時は以下のような証明書警告が表示されると思います。

f:id:febc_yamamoto:20181129181126p:plain

本来RancherはLet's encryptでの証明書取得などもサポートしているのですが、このスタートアップスクリプトではその辺りが非対応なため証明書の警告が出てしまいます。
将来的になんらかの形で証明書自動取得の仕組みを入れることができるかもしれませんが現状対応していませんので当面はこのまま接続してください。

ログイン後、クラスターの追加ボタンが表示されていますのでクリックしてクラスタ追加画面へ遷移します。

f:id:febc_yamamoto:20181129181157p:plain

すると、最初からどこにクラスタを作成するかの選択肢としてさくらのクラウドが選択できる状態となっているはずです。

f:id:febc_yamamoto:20181129182439p:plain

後はクラスタ名、ロールごとの台数、ノード名のプレフィックスを指定して作成ボタンを押すだけです。

f:id:febc_yamamoto:20181129182537p:plain

しばらく待つとさくらのクラウド上にクラスタが作成されます。

Rancherからさくらのクラウド上にクラスタのノードを作成しているところ:
f:id:febc_yamamoto:20181129182734p:plain

クラスタ作成後のRancherのクラスタ管理画面:
f:id:febc_yamamoto:20181129182812p:plain

クラスタ作成後はRancherの豊富な機能を利用可能な状態となっています。
kubectl用のconfigをダウンロードしたり、ブラウザ上で直接kubectlコマンドを実行するといったことも可能です。

例: ブラウザ上でkubectlコマンドを実行しているところ:
f:id:febc_yamamoto:20181129182959p:plain

手軽ですよね! 検証や開発といった用途に手軽にご利用いただけると思いますのでぜひお試しください。

おまけ: RancherのNode DriverとカスタムUIについて

Node Driverについて

このスタートアップスクリプトではRancherのNode Driverという仕組みを利用しています。
これはRancherが様々なプラットフォームに対応するための仕組みで、各プラットフォームでノードを作成するためのドライバーをプラグインできるというものです。

参考: Nodes Hosted in an Infrastructure Provider | Rancher Labs

NodeDriverの実体はDocker Machineのドライバーであり、DockerMachine向けのドライバーさえあればRancherのNodeDriverとして登録できます。
さくらのクラウドについてはdocker-machine-sakuracloudがありますのでこれを利用しています。

github.com (元々このドライバは私の個人リポジトリで開発していたものですが、今はsacloud配下にリポジトリ移転して開発を続けています)

RancherにはNode Driverの管理画面が用意されていますのでそちらからDockerMachineドライバーの実行ファイル(のURL)を指定すれば利用できるようになります。

登録されているNode Driverの一覧画面:
f:id:febc_yamamoto:20181129185937p:plain

Node Driverの登録画面:
f:id:febc_yamamoto:20181129190008p:plain

ここで登録しておけばノードテンプレート画面やクラスタ作成画面で利用できるようになります。

注: ノードテンプレートとは、Docker Machineでノードを作成する際に指定する、Docker Machineに渡すパラメータの定義のことです。OS種別やコア数、メモリサイズといったパラメータなどを指定します。

なお、この登録画面ではドライバーの実行ファイルのURLの他にカスタムUI(のjsのURL)も指定できるようになっています。
カスタムUIとはなんでしょうか?次に見ていきます。

カスタムUIについて

Node Driverを登録すると前述通りノードテンプレート画面で対象のドライバーが選択できるようになるのですが、デフォルトでは以下のように自動生成された味気ない入力項目が表示されます。

f:id:febc_yamamoto:20181129192854p:plain

この例はさくらのクラウド向けのDockerMachineドライバーの例ですが、アイコンも表示されずテキストボックスが単純にズラズラと並んだだけのものとなっていますね。
入力項目が少ない場合はこれでも良いでしょうが、もう少し見栄え良くしたり、入力値のバリデーションを行ったりしたいこともあるかと思います。

Rancherではこのための仕組みとしてカスタムUIという仕組みを用意しています。
規則に沿ってjs/cssを作成し任意のWebサーバなどに配置しておけばRancherが動的にそれらを読み込んで画面表示を行ってくれます。

この辺ドキュメントがあまりないのですが、スケルトンが公開されていますしビルドインのNodeDriver向けのカスタムUIのコードは公開されていますのでそれらを参考に作っていくという形になります。

github.com

さくらのクラウド向けドライバーでもカスタムUIであるui-driver-sakuracloudを用意しており、これを利用することでノードテンプレート画面は以下のようになります。

f:id:febc_yamamoto:20181129193453p:plain

ここではパラメータの入力にリストを用いたり、選択に応じてリストの値を変えたりと細々した処理が実装されています。

もちろんスタートアップスクリプトを使えばこの辺は全て設定済みとなっています。

終わりに

ということで今回はさくらのクラウドに追加された「Rancher2セットアップ」スタートアップスクリプトについて紹介しました。
2018/12/14までではありますが、さくらのクラウド7周年記念ということで7万円分のクーポンをもらえるキャンペーン(ただし新規法人会員のみ)をやっているらしいので、この辺も活用しつつぜひお試しください!!

cloud-news.sakura.ad.jp

以上です。