Rancher の取り扱い説明書

# はじめに

この記事では Rancher で構築した後のコンテナ作成、 Rancher の利用方法について紹介します。
今年一年、 kubernetes について社内で勉強会をしてきました。
そのなかで Rancher を使った検証を実施し、kubernetes 構築を行いました。
構築は簡単に行うことができるのですが、その先のコンテナ作成・管理については説明されているサイトがなかなか無かった為、社内で説明した資料をもとに記事にして布教活動を行いたいと思ったしだいです。

# 宣伝ですが・・・
過ぎ去ったクリスマスのお話ですが・・・弊社も今年 Qiita Advent Calendar を実施致しました！
以下、リンクよりアクセスできます。
[エーピーコミュニケーションズ Advent Calendar 2018](https://qiita.com/advent-calendar/2018/ap-com)

私は CloudProvider on AWS(Rancher) の記事を書かせていただきました。
インフラメインの多彩な記事が投稿されているので是非ご一読を。

※RKE 上で CUI から Wordpress 環境構築、セルフヒーリング、スケールアウトのご紹介を弊社の I氏が投稿しております。是非こちらもご覧ください。

**エーピーコミュニケーションズ Advent Calendar 2018 18日目**
[WordPress環境を作る Kubernetes編](https://qiita.com/cyberblack28/items/0d7abff8efb33ecc1ca2)

# それでは本題に。

# 環境情報

* Cloud：AWS
  * Rancher Server：t3.medium
  * k8s(cont/etcd)：t3.small
  * k8s(worker)：t3.small
* OS：CentOS 7.5
* docker：17.3.2
* k8s：1.11
* Rancher：2.1.1

今回の実施環境は弊社 T氏の以下記事を参考に構築しています。
[Rancher2.0を使って超高速にkubernetesクラスタを構築した時のメモ](https://qiita.com/3364git/items/287fdf3685cebb4a7ce8)

<img width="395" alt="01.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/317159/e8d818b7-4a63-b870-9d85-c8c6112da269.jpeg">

※今回は Rancherx1、Masterx1、Workerx1 の構成です
<img width="434" alt="02.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/317159/8a4c759a-5241-5888-8c75-36389bf38861.jpeg">

※今回は構築済みの環境を使ったご紹介となります。構築は上記記事を参考にしてください。
**※構築環境を AWS 上を利用しておりますが、スペックに余裕があれば VirtualBox 等を使ったローカルの環境でも十分に実施可能です。**


## ログイン画面

<img width="426" alt="03.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/317159/c0971d0d-73d8-d862-7c3e-b250e7133f83.jpeg">

* ログイン入力だけのシンプルな画面
* 日本語表記にもできます

## トップ画面(グローバル)

<img width="430" alt="04.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/317159/d4f88bf4-ca63-d409-4cb9-3814b6c92b61.jpeg">

* ログイン後に最初に表示されるトップ画面です
* Rancher で構築したものも含め k8s クラスタ(環境)毎の一覧が表示されます
* 右上のアイコンからユーザ情報の設定が可能
* 右上の【クラスター追加】から新しい k8s 環境の構築を行うことができます

---
<img width="444" alt="05.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/317159/84cb3e89-f640-0eb3-ec94-a5d29a6c8e99.jpeg">

* 【グローバル】をクリックすると【クラスターの管理ページ】や【各クラスターのネームスペース管理ページ】へ移動できます
* 【カタログ】ではカタログの取得先の有効化・無効化ができます
* 【ユーザー】では Rancher で操作する際のアカウントの追加、削除、権限付与などができます
* 【セキュリティ】⇒【認証】ではアカウントの認証先が指定可能です<br>
※ AD(ADDS / Azure AD) / Github / openldap 等が指定可能

## トップ画面(クラスター)

<img width="436" alt="07.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/317159/fdfff595-63c3-c997-4ec1-81d85c74c70c.jpeg">

* k8s クラスター全体の情報、リソース状況が確認できます
* 各コンポーネントの簡易ヘルスチェックも確認できます
* 右上の【kubectlを起動】を押すとコンソールが起動し、k8s 環境に対してコマンドが実行できます
* クラスターへの設定変更は右上の縦の・３つをクリックします<br>
新しいノードの追加もこちらで。

---

<img width="446" alt="08.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/317159/d3cab95d-bacb-0dd8-aa16-6d4def475196.jpeg">

* コンソールの起動はこんな感じ

## ノード画面

<img width="430" alt="09.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/317159/8bcbf180-ff59-a171-20ad-7a5bff60ea46.jpeg">

* Master や Worker ノードの一覧です
* ノードの状態や IP アドレス、k8s 上のロール(worker/controler/etcd)、k8s / docker のバージョンも確認できます
* ノード上で処理中、エラーが発生した際にはリアルタイムで表示が変わったりします
* ノード名をクリックすることで各ノードの詳細が情報が確認できます

## クラスター(メニュー)

<img width="426" alt="10.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/317159/86b100d3-add8-59b5-6568-9bb8462f68e6.jpeg">

* クラスター毎に以下の追加・削除、設定がメニューで可能です
  * ストレージ：ストレージ関連
  * プロジェクト/名前空間：プロジェクトや名前空間の追加や削除
  * メンバー：クラスター毎のアカウント管理ができます
  * ツール：一般的な運用(アラート、通知、ログ)の設定ができます

## ワークロード(コンテナ一覧)

<img width="444" alt="11.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/317159/632753f7-b0c4-7d59-2d5d-cba270cff732.jpeg">

* Default 名前空間に移動した状態です
* ワークロードではPod(コンテナ)の一覧が表示されます
* Pod 名、利用しているイメージ、スケール数が表示されます

## ワークロード(メニュー)

<img width="443" alt="12.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/317159/d43b338c-33ea-4248-6fe5-7f85432cd709.jpeg">

* 上部メニュー【カタログアプリ】からカタログから選択したアプリを起動することが出来ます
* 上部メニュー【リソース】から ConfigMap や Secret を作成できます
* 下段メニューで各種リソースの一覧表示、作成をすることができます
* 右上【YAMLをインポート】から yaml ファイルを使った Pod 等のリソースデプロイをすることができます
* 右上【YAMLをインポート】の横のボタン【デプロイ】や【xxx を追加】で yaml なしで各種リソースをデプロイできます

---

ここまでが Rancher の GUI の説明となります。
折角なので Rancher を使って代表的な操作をいくつか試してみましょう。

# wordpressをデプロイ(カタログで)

弊社 Y氏も以下の記事で紹介しているカタログを利用した WordPress のデプロイを実施してみましょう

[Rancher 2.0でCatalog AppsからWordpressをデプロイ](https://qiita.com/FY0323/items/726268e2294a4c5d6cd6)

![26.jpg](https://qiita-image-store.s3.amazonaws.com/0/317159/75d5c9e5-a3ae-c379-157c-4fd1223430bc.jpeg)

## デプロイ

![13.jpg](https://qiita-image-store.s3.amazonaws.com/0/317159/235d3b0c-d164-a628-acc3-29fece30a716.jpeg)

1. 今回は【Default】に構築します
2. 【カタログアプリ】をクリックし、カタログの画面に移動します
3. 右上の【起動】をクリックします(真ん中の【起動】ボタンでも良いです)

---

![14.jpg](https://qiita-image-store.s3.amazonaws.com/0/317159/72ff0607-39c1-553f-c044-b1731b945baa.jpeg)

* ずらっと一覧が表示されます(皆さんも見慣れたアプリがあるのでは)
* 【wordpress(from Library)】の【詳細を見る】をクリックします

---

![15.jpg](https://qiita-image-store.s3.amazonaws.com/0/317159/89fa4b4b-d921-cb5c-5555-ed3d9700a3a5.jpeg)

* 【WORDPRESS SETTINGS】で【WordPress の設定】を、【DATABASE SETTINGS】で【MariaDB の設定】を上記に沿って実施してください<br>
※今回は簡易化のため PersistentVolume の有効化(enabled)を無効(いいえ)にしています
* 各パスワードは忘れないパスワードを。

---

![16.jpg](https://qiita-image-store.s3.amazonaws.com/0/317159/b4de541b-c6b5-0c4f-6f1b-edac2fa83d6c.jpeg)

* 【SERVICES AND LOAD BALANCING】で上記の通り設定してください
* Service Type は簡易化のため NodePort 指定しています
* NodePort で指定しているポート番号は動作確認の際に実際にアクセスするポート番号です<br>
http/https 共に任意のポートを指定してください(Well Known Port(80 や 443) は避けてください)

---

![17.jpg](https://qiita-image-store.s3.amazonaws.com/0/317159/244a4b12-722b-0f67-1a30-aba6a85f23f8.jpeg)

* 【起動】ボタンをクリックするとカタログアプリの一覧画面に戻ります
* 作成したアプリが上記のように時間経過で赤のバーから緑のバーになり、デプロイが完了します

## 動作確認

![18.jpg](https://qiita-image-store.s3.amazonaws.com/0/317159/19437f41-0549-115e-1621-2f0970e922b9.jpeg)

* 実際に wordpress の画面にアクセスしてみましょう(上記参考)
* https で指定したポートでアクセスするとエラーとなります<br>
⇒ URL のプロトコル部分(先頭)を http から https に変更することでアクセスできます(SSL証明書エラーは表示されます)

---

![19.jpg](https://qiita-image-store.s3.amazonaws.com/0/317159/ef715d6f-0381-8dd7-050b-7c3a5647258d.jpeg)

* ワークロードを見ると各 Pod が起動していることが確認できます

## YAMLの表示

![20.jpg](https://qiita-image-store.s3.amazonaws.com/0/317159/99e50e20-c4e5-ad98-8c67-7365820ad3a7.jpeg)

* 各 Pod の項目の右側 縦に・３つをクリックし【YAML の参照/編集】をクリックすると、起動している Pod の yaml が表示されます<br>
⇒オンラインで編集し、変更が反映することもできます

## スケールアウト

コンテナの数をここでは増やしてみましょう(スケールアウト)。

![21.jpg](https://qiita-image-store.s3.amazonaws.com/0/317159/51aa0bd3-df68-0706-e7ce-9cfd83481378.jpeg)

1. 各 Pod の▲をクリックし、展開します(今回は wordpress-wordpress)
2. 右下に【 - + 】が表示されるので【+】をクリックします

---

![22.jpg](https://qiita-image-store.s3.amazonaws.com/0/317159/dd9e084d-87e4-1979-d1ec-252fda0b3e7e.jpeg)

* コンテナ数が 2 となり、左側の ○ が一つ増え点滅します
* 起動が完了すると点灯し、無事スケールアウトができました
* 今回の構成で3台以上にスケールアウトするとリソースが枯渇し正常に起動できませんでした･･･<br>
⇒スケールアウトはリソース状況を見ながら実施してください

## オートヒーリング

最後にオートヒーリングを実施してみます。

![24.jpg](https://qiita-image-store.s3.amazonaws.com/0/317159/e1c0aa30-3735-8c9a-c8c1-55f9feb4c340.jpeg)

* 【ワークロード】から【wordpres-wordpress】をクリックし Pod の詳細情報の表示画面です
* 先ほど Pod 数を 2 に変更した状態で、Pod を一つ削除します
* Pod の一覧から右側の縦・３つをクリックし、【削除】をクリックします

![25.jpg](https://qiita-image-store.s3.amazonaws.com/0/317159/78a9f6f0-e69a-bb0f-3a87-608d743aca47.jpeg)

* Pod の削除が開始されると同時に、新しい Pod の準備が始まります
* Pod を削除しましたが、無事 2 台の構成に自動で復旧することが確認できました

# まとめ

Rancher の GUI を一通り触ってみましたがいかがでしたでしょうか。
kubernetes でコンテナ構築をしていると kubectl や yaml ファイルの編集など、CUI での操作が多いイメージがありますが、Rancher を使うとGUI フレンドリに操作することができます。
構築だけにとどまらず、クラスターの管理や状況を Web で操作・可視化されるのもメリットの一つではないでしょうか。
Rancher で kubernetes を構築し、コンテナを身近に感じていただければと思います。