"Let's start Cloud Native with Rancher" Hands-on v2.1.7

以下の流れを実際に手を動かしてやってみましょう。

1. Rancher Serverの構築
2. Kubernetes Clusterの構築
3. weavescopeカタログのデプロイ
4. RancherUIからkubectlコマンドの実行
5. Guestbookアプリケーションのデプロイ

概要図

![図1.png](https://qiita-image-store.s3.amazonaws.com/0/61606/7dd2d855-9326-5f66-327d-3030c4007656.png)

# 1.Rancher Serverの構築

## 1.仮想マシンを2つ準備

1台目

|項目|スペック|
|:---|:------|
|OS|Ubuntu18.04LTS|
|vCPU|1|
|メモリ|4GB|
|HDD|10GB以上|

2台目

|項目|スペック|
|:---|:------|
|OS|Ubuntu18.04LTS|
|vCPU|2|
|メモリ|8GB|
|HDD|20GB以上|

デフォルトでファイアウォールが設定されていて、ホスト間でのコンテナの通信が行えないためファイアウォール等は無効にしておきましょう。

## 2.Dockerインストール

2台の仮想マシンインスタンスにDockerをインストールします。

```command:コマンド
$ curl https://releases.rancher.com/install-docker/18.09.sh | sh
・
・（省略）
・
+ sh -c docker version
Client:
 Version:           18.09.3
 API version:       1.39
 Go version:        go1.10.8
 Git commit:        774a1f4
 Built:             Thu Feb 28 06:40:58 2019
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.3
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.8
  Git commit:       774a1f4
  Built:            Thu Feb 28 05:59:55 2019
  OS/Arch:          linux/amd64
  Experimental:     false

If you would like to use Docker as a non-root user, you should now consider
adding your user to the "docker" group with something like:

  sudo usermod -aG docker your-user

Remember that you will have to log out and back in for this to take effect!

WARNING: Adding a user to the "docker" group will grant the ability to run
         containers which can be used to obtain root privileges on the
         docker host.
         Refer to https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface
         for more information.
```

## 3.Rancher2.0 Serverのインストール(1台:rancher-serverのみ)

1台目のrancher-serverで以下のコマンドを実行します。

```lang:コマンド
$ sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher:v2.1.7
Unable to find image 'rancher/rancher:latest' locally
latest: Pulling from rancher/rancher
6cf436f81810: Pull complete
987088a85b96: Pull complete
b4624b3efe06: Pull complete
d42beb8ded59: Pull complete
20428076f45c: Pull complete
aa5f6ec4068f: Pull complete
fa0b81e2aefe: Pull complete
174adca119fa: Pull complete
b36e95625791: Pull complete
3b4599da8bc5: Pull complete
7c3eae4ec924: Pull complete
821c0eae95fd: Pull complete
Digest: sha256:1943e9b7d802992d3c61184af7ae2ca5d414c15152bc40ec995e71e28cb80844
Status: Downloaded newer image for rancher/rancher:latest
de338658e620ad279b3f6400237977a449a6a677778506ce37971b14c13c336e
```

## 4.ブラウザを起動して、RancherUIにアクセス（rancher-server）

ブラウザを起動して、https://IPアドレス/ にアクセスします。

詳細設定をクリックします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/7f208e7d-1aaf-58d7-7950-e4edb3ce7956.png)

赤枠の箇所をクリックします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/37e4e2b8-9c18-e00f-409c-7ccadcc386dc.png)

以下ログイン画面が表示されることを確認します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/b15d38e8-a1de-21ae-2826-16c8571f8025.png)

## 5.初回ログイン設定

adminユーザのパスワードを設定します。

任意のパスワードを「New Password」「Confirm Password」に入力して「Continue」ボタンを押下します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/c4f17c27-4eb5-ee75-72ea-8468af878ebe.png)

Rancher Server URLを登録するので、そのまま「Save URL」をクリックします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/05aaa5f2-a111-4eda-e081-cf1bb8b43e66.png)

ログイン完了となります。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/b4931c52-dc66-768c-a23c-f250bd7de937.png)

## 6.Helmカタログの有効化

上部メニューから「Catalogs」を選択します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/0500250b-ead7-bc1c-4aeb-608e4acc863b.png)

「Helm Stable」を「Enable」に設定します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/e33b0df9-4bd7-a7a1-e183-2f5ee259b73c.png)

「Global」を選択します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/06a7d56d-902d-e0b5-d214-4ea6dec60f0f.png)

# 2.Kubernetes Clusterの構築

## 1.「Add Cluster」をクリック
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/4acbdad6-9861-e75b-5e6e-801c42ad8f2f.png)

## 2.「CUSTOM」を選択、「Cluster Name」に任意名を入力、「Next」ボタンを押下
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/ad9cd979-528c-d83e-bc9c-b5e58620973e.png)


## 3.「Show advanced options」をクリック

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/00cfda18-6caa-cc7c-c3c5-9756f7844664.png)

## 4.「Node Role」の「etcd」と「Control Plane」にチェック、「Node Address」の「Public Address」と「Internal Address」に**2台目(rancher-host)**のIPアドレスを入力、「Copy to Clipboard」ボタンを押下、そのコマンドを**2台目(rancher-host)**のコンソールで実行後に「Done」ボタンを押下

1.「Node Role」の「etcd」と「Control Plane」にチェックします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/8890e01c-b967-2d6d-f1be-e593013c913a.png)

2.「Node Address」の「Public Address」に**2台目(rancher-host)**のIPアドレスを入力します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/3e8ac6ee-9be8-5d04-407e-e6389d2e2732.png)

3.「Copy to Clipboard」ボタンを押下します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/f1bb4f06-e802-5517-9e92-5868a4a5a0dc.png)

4.そのコマンドを**2台目(rancher-host)**のコンソールで実行します。

3の手順でコマンド自体はクリップボードにコピーされているので、そのままペーストしてください。

```command:コマンド
$ sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run rancher/rancher-agent:v2.1.7 --server https://210.148.155.157 --token gj2hl2bg95qws29csdl9dzttzrhscvqkf4vrrmfg2xsg9mhrpksf6n --ca-checksum 3174e6c6fa83337fbfdf94e917942431f5a3c78437e1d84e808950116844c72d --address 210.148.155.158 --etcd --controlplane --worker
Unable to find image 'rancher/rancher-agent:v2.1.7' locally
v2.1.7: Pulling from rancher/rancher-agent
6cf436f81810: Pull complete
987088a85b96: Pull complete
b4624b3efe06: Pull complete
d42beb8ded59: Pull complete
cc328e8c5f4e: Pull complete
fcb5007b524a: Pull complete
9653ff53debf: Pull complete
c75027384951: Pull complete
c5997b613e9e: Pull complete
Digest: sha256:865ec8052bfa002b8f6d8011735779c6f9ef044252e7573bba7ba6c951f5b086
Status: Downloaded newer image for rancher/rancher-agent:v2.1.7
26d16a656bafa64c46b4a253fb84d38ded047ef19f3b27673a5066adf8873f94
```
5.「Done」ボタンを押下します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/a9727fba-ac55-7f62-7121-26af77044c89.png)


## 5.クラスタ名をクリック

Activeの表示に変わった段階で、クラスタ名をクリックしてください。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/8c95d1a2-d1ec-3f86-d791-93553849c094.png)

## 6.リソース状況を確認
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/5fb36205-d277-b80e-24d4-1ec36f9ac60b.png)

# 3.weavescopeカタログのデプロイ

## 1.上部メニューから「Default」を選択、「Catalog Apps」を選択

「Default」を選択します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/00a9661e-2c71-8ee9-5fa7-990175f6464f.png)

「Catalog Apps」を選択します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/f260aeca-45b0-f037-d7e1-4fab03cc71b6.png)

## 2.「Launch」ボタンを押下
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/5ca8ab04-92fb-3008-d038-ed859a0ba0c7.png)

## 3.検索フィールドで「weave-scope」と入力して、「View Details」ボタンを押下
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/87eb3d97-0c31-4634-ef66-1fae574937f6.png)

## 4.「Launch」ボタンを押下
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/b60bfdac-f667-c78e-0417-ad2d4186b902.png)

## 5.デプロイ完了後、上部メニューから「Workloads」を選択
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/6bef15f4-f218-249b-8602-67b7b33a29dc.png)

## 6.「Load Balancing」、「Add Ingress」をクリック
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/7612f81b-66ff-dc4a-1039-78cfaeb76a38.png)

## 7.「Name」に任意名を入力、「Namespace」で「weave-scope」を選択、「Target」で「weave-scope-frontend-weave-scope」を選択、「Port」に「4040」と入力して、「Save」ボタンを押下

1.「Name」に任意名を入力します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/133202c2-e2da-bdf8-0e6b-76d9b9e22b5c.png)

2.「Namespace」で「weave-scope」を選択します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/61179793-fc02-5de0-5fec-dbfab56cf2de.png)

3.「Target」で「weave-scope-frontend-weave-scope」を選択します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/48e0aa88-66f4-236b-617f-e95d9edf87b9.png)

4.「Port」に「4040」と入力します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/3dc2388e-519f-459a-f1bc-09fbf3974983.png)

5.「Save」ボタンを押下します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/688a1aa9-da6c-55b1-edec-3e0a7105edbb.png)

## 8.自動生成されたURLをクリック

しばらくするとURLが生成されますので、クリックします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/869530f0-a84d-16e0-c604-7e2ed5aaa16d.png)

## 9.weavescope起動を確認

![screencapture-weavescope-weave-scope-35-189-159-53-xip-io-2018-08-11-19_09_12.png](https://qiita-image-store.s3.amazonaws.com/0/61606/524bdc36-235b-edd0-39b7-a1e5def958dd.png)

# 4.RancherUIからkubectlコマンドの実行

RancherUIからkubectlコマンドを実行できるので利用します。

## 1.上部メニューから「Cluster.rancher-k8s-cluster」を選択
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/f26008f8-d530-e02b-bac5-0e9c4f37ce54.png)

## 2.「Launch kubectl」ボタンを押下
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/3e4c5164-c606-9339-c2c5-319e4d0f7986.png)

## 3.コンソール起動確認
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/d1f4b255-2e74-ca9f-5ce9-03415abd5d10.png)

## 4.「kubectl get nodes」の実行

```command:コマンド
# Run kubectl commands inside here
# e.g. kubectl get all
> kubectl get nodes
NAME            STATUS    ROLES                      AGE       VERSION
apc-hands-101   Ready     controlplane,etcd,worker   2h        v1.13.4
>
```

## 5.「kubectl version」の実行

```command:コマンド
> kubectl version
Client Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.5", GitCommit:"32ac1c9073b132b8ba18aa830f46b77dcceb0723", GitTreeState:"clean", BuildDate:"2018-06-21T11:46:00Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"13", GitVersion:"v1.13.4", GitCommit:"c27b913fddd1a6c480c229191a087698aa92f0b1", GitTreeState:"clean", BuildDate:"2019-02-28T13:30:26Z", GoVersion:"go1.11.5", Compiler:"gc", Platform:"linux/amd64"}
>
```

# 5.Guestbookアプリケーションのデプロイ

以下Guestbookアプリケーションのyamlファイルを利用して、デプロイします。

https://raw.githubusercontent.com/kubernetes/examples/master/guestbook/all-in-one/guestbook-all-in-one.yaml

Guestbookアプリケーション構成図
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/2047dcbb-5e57-0ac8-4a6c-f81c9fda0aeb.png)

## 1.Guestbookアプリケーションのデプロイ

```command:コマンド
> kubectl apply -f https://raw.githubusercontent.com/kubernetes/examples/master/guestbook/all-in-one/guestbook-all-in-one.yaml
service "redis-master" created
deployment.apps "redis-master" created
service "redis-slave" created
deployment.apps "redis-slave" created
service "frontend" created
deployment.apps "frontend" created
>
```

## 2.デプロイの確認

```command:コマンド
> kubectl get services
NAME           TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)    AGE
frontend       ClusterIP   10.43.22.166   <none>        80/TCP     13s
kubernetes     ClusterIP   10.43.0.1      <none>        443/TCP    2h
redis-master   ClusterIP   10.43.4.77     <none>        6379/TCP   13s
redis-slave    ClusterIP   10.43.39.239   <none>        6379/TCP   13s
>
```

「Close」ボタンを押下します。

## 3.RancherUIからIngressを作成

1.上部メニューから「Default」を選択します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/95115c65-8b56-7919-109d-cd2ee2068cbb.png)

2.「Workloads」を選択します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/b4a057cf-8ea5-d565-b720-6f1fea752fa5.png)

3.「Load Balancing」をクリックします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/42151031-4e86-61c7-92bb-c396941a6974.png)

4.「Add Ingress」ボタンを押下します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/5d6941c8-d80e-bd89-a36c-5fad0296d815.png)

## 4.「Name」に任意名を入力、「Target」で「frontend」を選択、「Port」に「80」と入力、「Save」ボタンを押下

1.「Name」に任意名を入力します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/5661470e-d711-5809-5469-f8b2f0bc44cf.png)

2.「Target」で「frontend」を選択します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/00091cce-25dc-afc9-7771-00d08ffed44e.png)

3.「Port」に「80」と入力します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/232d725f-31d4-dba4-ec95-61129895b7d1.png)

4.「Save」ボタンを押下します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/263c3fff-01e7-066c-f683-87d309aa3777.png)

## 5.自動生成されたURLをクリック

しばらくするとURLが生成されますので、クリックします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/ab544a05-d000-78b0-c909-31ad34217cdf.png)

## 6.Guestbookアプリケーションの確認
![screencapture-guestbook-default-35-189-159-53-xip-io-2018-08-11-19_49_27.png](https://qiita-image-store.s3.amazonaws.com/0/61606/7c8e2bac-cf10-35d2-085e-df880a425a7b.png)

## 7.weavescopeからもGuestbookアプリケーションを確認
![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/eb032e14-5c16-3704-10a8-276c04fb134c.png)