Alternative Architecture DOJO Offline #1に参加してきました
2018/11/28にFukuoka Growth Next(通称:FGN)で開催された「Alternative Architecture DOJO Offline #1」というイベントでLTさせていただきました。
このイベントはConnpass上でのサブタイトルとして「クラウドネイティブを語りつくす!」と銘打たれており、 その名に恥じない濃く実践的な知見が数多く共有された素晴らしいイベントでした。
当日の様子:
元々このイベントには一般枠で申し込んでいたのですが、 当記事タイトルの「さくらのクラウド Rancher2セットアップ」というスタートアップスクリプトの リリースが開催に間に合うという幸運に恵まれたため、イベント当日急遽LTに申し込みをさせていただきました。
LTは無事行えたのですが、スライドが悪ふざけしすぎていて公開できる状態ではなかったのでこの記事で改めてこのスタートアップスクリプトについて紹介します。
さくらのクラウド Rancher2セットアップ スタートアップスクリプト
イベント開催当日(2018/11/28)にさくらのクラウドにおいてスタートアップスクリプト「Rancher2セットアップ」がリリースされました。
これは、さくらのクラウドでサーバをプロビジョニングするための仕組みである「スタートアップスクリプト」の中の一つで、 コントロールパネルから当該スクリプトを選んだ上でサーバ作成を行うことでRancher2のセットアップが出来るというものです。
このスクリプトはスタートアップスクリプトを公開しているGitHub上のリポジトリに対しPullRequestを送って追加していただいたものです。
以下の機能を持っています。
- Rancherサーバのインストール
- Rancherサーバの管理者パスワードの設定
- RancherサーバのURL設定(サーバのIPアドレスで固定)
- さくらのクラウド向けNodeDriverの登録
- NodeDriver向けのカスタムUIの登録(ui-driver-sakuracloud)
- 推奨構成でのノードテンプレートの登録(ノード作成用のさくらのクラウドAPIキーの指定を含む)
これにより、サーバ起動後すぐにさくらのクラウド上にKubernetesクラスタの作成が行える状態となっています。
しかもクラスタ作成時に必要な情報は最低限以下の3つだけという手軽さです。
どんな感じで使うのか見てみます。
使い方
まずはさくらのクラウドのサーバ作成画面でRancher用のスタートアップスクリプトを選択します。
この時に以下3項目を指定します。
後はそのままサーバ作成を行うだけでOKです。
(APIキーは「作成」権限の付いたものが必要な点に注意してください)
サーバ作成後に https://<作成したサーバのIPアドレス>
にアクセスするとRancherのログイン画面が表示されます。
(ダウンロードなどに時間がかかりRancher起動まで数分かかることもあります)
ユーザー名は admin
、パスワードはコントロールパネルで指定したものを入力することでログインできるようになっています。
なお、初回アクセス時は以下のような証明書警告が表示されると思います。
本来RancherはLet's encryptでの証明書取得などもサポートしているのですが、このスタートアップスクリプトではその辺りが非対応なため証明書の警告が出てしまいます。
将来的になんらかの形で証明書自動取得の仕組みを入れることができるかもしれませんが現状対応していませんので当面はこのまま接続してください。
ログイン後、クラスターの追加ボタンが表示されていますのでクリックしてクラスタ追加画面へ遷移します。
すると、最初からどこにクラスタを作成するかの選択肢としてさくらのクラウドが選択できる状態となっているはずです。
後はクラスタ名、ロールごとの台数、ノード名のプレフィックスを指定して作成ボタンを押すだけです。
Rancherからさくらのクラウド上にクラスタのノードを作成しているところ:
クラスタ作成後はRancherの豊富な機能を利用可能な状態となっています。
kubectl用のconfigをダウンロードしたり、ブラウザ上で直接kubectlコマンドを実行するといったことも可能です。
例: ブラウザ上でkubectlコマンドを実行しているところ:
手軽ですよね! 検証や開発といった用途に手軽にご利用いただけると思いますのでぜひお試しください。
おまけ: 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の一覧画面:
Node Driverの登録画面:
ここで登録しておけばノードテンプレート画面やクラスタ作成画面で利用できるようになります。
注: ノードテンプレートとは、Docker Machineでノードを作成する際に指定する、Docker Machineに渡すパラメータの定義のことです。OS種別やコア数、メモリサイズといったパラメータなどを指定します。
なお、この登録画面ではドライバーの実行ファイルのURLの他にカスタムUI(のjsのURL)も指定できるようになっています。
カスタムUIとはなんでしょうか?次に見ていきます。
カスタムUIについて
Node Driverを登録すると前述通りノードテンプレート画面で対象のドライバーが選択できるようになるのですが、デフォルトでは以下のように自動生成された味気ない入力項目が表示されます。
この例はさくらのクラウド向けのDockerMachineドライバーの例ですが、アイコンも表示されずテキストボックスが単純にズラズラと並んだだけのものとなっていますね。
入力項目が少ない場合はこれでも良いでしょうが、もう少し見栄え良くしたり、入力値のバリデーションを行ったりしたいこともあるかと思います。
Rancherではこのための仕組みとしてカスタムUIという仕組みを用意しています。
規則に沿ってjs/cssを作成し任意のWebサーバなどに配置しておけばRancherが動的にそれらを読み込んで画面表示を行ってくれます。
この辺ドキュメントがあまりないのですが、スケルトンが公開されていますしビルドインのNodeDriver向けのカスタムUIのコードは公開されていますのでそれらを参考に作っていくという形になります。
さくらのクラウド向けドライバーでもカスタムUIであるui-driver-sakuracloudを用意しており、これを利用することでノードテンプレート画面は以下のようになります。
ここではパラメータの入力にリストを用いたり、選択に応じてリストの値を変えたりと細々した処理が実装されています。
もちろんスタートアップスクリプトを使えばこの辺は全て設定済みとなっています。
終わりに
ということで今回はさくらのクラウドに追加された「Rancher2セットアップ」スタートアップスクリプトについて紹介しました。
2018/12/14までではありますが、さくらのクラウド7周年記念ということで7万円分のクーポンをもらえるキャンペーン(ただし新規法人会員のみ)をやっているらしいので、この辺も活用しつつぜひお試しください!!
以上です。