Kubernetes構築といえば、各リソースを細かく理解したり、YAMLを書くのに苦労したり、何かと敷居が高いと思われる方もいらっしゃることでしょう。
しかし、下表「Kubernetesの3つのユースケース」のNo.2に示す構築ツールを利用することで、Kubernetesの環境をよりカンタンに構築できます。
RancherはRancher Labsが開発主体のコンテナ管理のためのオープンソースソフトです。Rancher 1.xまではDocker Compose/Docker Swarm/Apache Mesos/Cattle/Kubernetesなどのさまざまなコンテナオーケストレーションツールにも対応していました。
2018年5月にリリースされたRancher 2.0からはKubernetesに一本化されました。このことからもKubernetesがコンテナオーケストレーションツールとしてのデファクトスタンダードの地位を確立しつつあることがわかります。
GoogleやAmazonやMicrosoftといった各クラウドサービスに対応し、Kubernetesクラスタへのアクセス管理、カタログ(Helm)による環境全体に渡った環境構成のコード化、ビルドデプロイフローの定型化などさまざまな機能があります。
具体的なイメージを掴んでいただくために、インストールの方法や、Rancherを使った操作を具体的な手順と共に紹介します。
インストール
Rancherのインストールおよび起動は、dockerコマンドを1つ叩くのみで完了します。
$docker run -d --restart=unless-stopped -p 9002:80 -p 9003:443 rancher/rancher
8c2d919d2120902d38d98036ce69f3f020ef252e21e8b2560ff6a78d92d66e53
$docker ps|grep rancher
8c2d919d2120 rancher/rancher "entrypoint.sh" 3 days ago Up 3 days 0.0.0.0:9002->80/tcp, 0.0.0.0:9003->443/tcp quirky_ardinghelli
早速、[https://localhost:9003/]にアクセスします。パスワードの変更を求められるので、入力して[Continue]をクリックします。
アクセス可能なURLを決定します。入力されている値を確認し、[Save URL]をクリックします。
トップページが表示されました。以上で準備は完了です。
カタログ
カタログはk8sのマニフェスト(yaml)を作成する雛形です。つまり、カタログを利用することで、直接マニフェストを書かなくてもよくなります。
それでは実際に見ていきましょう。[Tools]-[Catalogs]をクリックします。
[Helm Stable]-[Enable]をクリックします。これにより、k8sコミュニティで提供されているさまざまなHelmのカタログが利用可能になります。
具体的にどんなカタログがあるか確認してみましょう。[Apps]メニューをクリックすると以下画面が表示されます。[+ Launch]をクリックします。
例えば[prometheus]と検索すると以下のカタログが見つかります。このように、さまざまなカタログから選んで利用することができます。
構築用コマンドの自動生成
Rancherの構築用コマンドを手書きで実施するのではなく、自動生成することができます。
それでは、実際に見ていきましょう。トップページから[Add Cluster]をクリックします。GKE/EKS/AKSなど、Rancherにはk8sのさまざまな選択肢があることがわかります。
[Custom]を選択し[Cluster Name]に[sandbox]と入力し、[次へ]をクリックします。
[(2)] (画面では丸数字)に構築に必要なコマンドが表示されます。例えば[etcd]をチェックすると、[-etcd]オプションが付与されます。
つまり、コマンドが自動生成されているため、手打ちによるコマンド入力を行う必要がなく、ターミナルへコピー&ペーストして実行するだけで良いのです。
ターミナルからコマンド実行すると以下の通りクラスタが作成されます。
クラスタの状態を確認してみましょう。上図の[Cluster Name]-[sandbox]をクリックします。CPUやメモリなどの情報が表示されました。
Rancher CLI
ブラウザにおける操作だけでなく、CLIによるコマンド操作も可能です。画面右下部の[Download CLI]-[macOS]をクリックします。ダウンロードされた[rancher-darwin-amd64-v2.2.0.tar]を解凍するとインストール完了です。
CLIによりアクセスするためのトークンを発行します。画面右上部のユーザメニューから[API & Keys]をクリックします。
[Add Key]をクリックすると、[Add API Key]画面が表示されます。そのまま[Create]をクリックします。
トークンが作成されました。[Bearer Token]の値を認証に利用しますのでメモしておきます。
Bearer Tokenを使ってターミナルからログインします。[.rancher/cli2.json]に値が保存されます。
$./rancher login -t [先ほどコピーしたBearer Tokenの値] https://localhost:9003/
The authenticity of server 'https://localhost:9003' can't be established.
Cert chain is : [Certificate:
Data:
Version: 3 (0x2)
Serial Number: 1367508786119453028 (0x12fa5dfedfe02964)
~中略~
]
Do you want to continue connecting (yes/no)? yes
INFO[0002] Saving config to /Users/yujishono/.rancher/cli2.json
$
ログインが完了したのでCLIを使って操作してみましょう。一例として、settingsオプションを使って設定値を確認します。
$./rancher settings
ID NAME VALUE
agent-image agent-image rancher/rancher-agent:v2.2.8
api-ui-version api-ui-version 1.1.6
auth-image auth-image rancher/kube-api-auth:v0.1.3
auth-user-info-max-age-seconds auth-user-info-max-age-seconds 3600
~後略~
* * *
今回は、k8sを簡単に使いこなす手段としてRancherを紹介し、ブラウザやCLIによる手順にも触れました。次回は、HelmなどRancher以外の構築ツールを紹介します。
著者紹介
正野 勇嗣 (SHONO Yuji ) - NTTデータ 課長
2011年まで開発自動化技術のR&Dに従事。その後、開発プロジェクト支援やトラブルシューティング等に主戦場を移す。「ソースコード自動生成」に加えて、JenkinsやMaven等の「ビルド自動化」、JsTestDriverやSelenium等の「テスト自動化」を扱うようになり、多様化する開発自動化技術動向に興味。
最近は第四の自動化であるInfrastructure as Code等の「基盤自動化」の魅力に惹かれている。開発自動化技術に関する雑誌・記事執筆も行う。3児のパパ。