Introduction of Kubernetes & Rancher2.0

Rancher2.0の事始めとして、Google Cloud Platform(以降GCP)を利用して以下の流れを実際に手を動かしてやってみましょう。

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

概要図

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/3295d290-74fd-322d-175d-3fc3deed47bd.png)

# 1.Rancher Serverの構築

## 1.Instanceを2つ準備

Google Compute Engineで以下の2インスタンスを作成します。

1台目

|項目               |入力概要        |
|:----------------------------------|:---------------------------------------------|
|名前|rancher-server|
|リージョン|asia-northeast1(東京)|
|ゾーン|asia-northeast1-b|
|マシンタイプ|vCPUx1|
|ブートディスク|Ubuntu 16.04 LTS<br>ディスクサイズ80GB|
|ファイアウォール|HTTP トラフィックを許可する、HTTPS トラフィックを許可するの両方をチェックします。|

2台目

|項目               |入力概要        |
|:----------------------------------|:---------------------------------------------|
|名前|rancher-host|
|リージョン|asia-northeast1(東京)|
|ゾーン|asia-northeast1-b|
|マシンタイプ|vCPUx1|
|ブートディスク|Ubuntu 16.04 LTS<br>ディスクサイズ80GB|
|ファイアウォール|HTTP トラフィックを許可する、HTTPS トラフィックを許可するの両方をチェックします。|

GCPでは、デフォルトでファイアウォールが設定されていて、ホスト間でのコンテナの通信が行えないため、
設定を変更する必要があります。

GCPのダッシュボードで、「VPCネットワーク」-「ファイアウォール」を選択して、ファイアウォールルールを作成します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/f77516b5-299b-2feb-f51b-4d4a395ee08b.png)

名前は任意名、ターゲットを「ネットワーク上のすべてのインスタンス」を選択、ソースIPの範囲は0.0.0.0/0、プロトコルとポートは全て許可とします。
今回はお試しということで、全許可にしています。
最後に「作成」ボタンをクリックします。

## 2.Dockerのインストール（2台:rancher-server,rancher-host）

2つのインスタンスに1.12.6, 1.13.1, 17.03.2のいずれかのDockerをインストールします。
今回は、17.03.2とします。

各サーバのコンソールを起動するために、それぞれの「SSH」ボタンを押下します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/d525b53a-666b-3f5d-0421-c6232ea301f2.png)

```lang:コマンド
$ curl https://releases.rancher.com/install-docker/17.03.2.sh | sh
・
・（省略）
・
+ sudo -E sh -c docker version
Client:
 Version:      17.03.2-ce
 API version:  1.27
 Go version:   go1.7.5
 Git commit:   f5ec1e2
 Built:        Tue Jun 27 03:35:14 2017
 OS/Arch:      linux/amd64

Server:
 Version:      17.03.2-ce
 API version:  1.27 (minimum version 1.12)
 Go version:   go1.7.5
 Git commit:   f5ec1e2
 Built:        Tue Jun 27 03:35:14 2017
 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 iyutaka2018

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
Unable to find image 'rancher/rancher:latest' locally
latest: Pulling from rancher/rancher
6b98dfc16071: Pull complete 
4001a1209541: Pull complete 
6319fc68c576: Pull complete 
b24603670dc3: Pull complete 
97f170c87c6f: Pull complete 
c5880aba2145: Pull complete 
de3fa5ee4e0d: Pull complete 
c973e0300d3b: Pull complete 
d0f63a28838b: Pull complete 
b5f0c036e778: Pull complete 
Digest: sha256:3f042503cda9c9de63f9851748810012de01de380d0eca5f1f296d9b63ba7cd5
Status: Downloaded newer image for rancher/rancher:latest
dd0e06fb0871d06635c68a53fca293379e8a9c4d5210d54acf202626c435b560
```

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

GCPダッシュボードからrancher-serverの外部IPの箇所をクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/408ceac0-1505-e41c-deec-aacd24209215.png)

詳細設定をクリックします。

![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)

以下ログイン画面が表示されることを確認します。

![screencapture-35-194-106-236-update-password-2018-08-11-17_32_59.png](https://qiita-image-store.s3.amazonaws.com/0/61606/fa4da031-13d6-93ca-7fb9-e379456538da.png)

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

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

任意のパスワードを「New Password」「Confirm Password」に入力して「Continue」ボタンを押下します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/76c74cc4-24d1-1ef3-d1aa-baa0195beacc.png)

Rancher Server URLを登録するので、そのまま「Save URL」をクリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/8322006b-8ae4-e2e9-8453-988bfd496085.png)

ログイン完了となります。

![screencapture-35-194-106-236-g-clusters-2018-08-11-17_51_53.png](https://qiita-image-store.s3.amazonaws.com/0/61606/8c4b6b3a-61e2-b025-8e2d-88ccb33d9b95.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/c286d352-3418-8167-e76f-ce63b51ed6c7.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/3d4c4da3-1519-ed8b-92d1-1dae4de99220.png)

## 2.「CUSTOM」を選択、「Cluster Name」に任意名を入力、「Next」ボタンを押下

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/87f2518f-8d0c-daee-4c87-618cd46055fb.png)

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

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/da125851-4aa3-7c5f-9502-7a68ab235b98.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/dba267b8-2543-df4f-e218-cb334c3cd6cf.png)

2.「Node Address」の「Public Address」と「Internal Address」に**2台目(rancher-host)**のIPアドレスを入力します。

GCPダッシュボードでIPアドレスを確認します。

内部IP=Internal Address
外部IP=Public Address

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/e24d7790-3b0d-1229-cf98-1eb251bbb6eb.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/d5a820a6-6cac-d63b-e226-1b0be7c9d044.png)

3.「Copy to Clipboard」ボタンを押下します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/09fe2dfb-eb0c-dffa-732c-c9625aa79819.png)

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

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

```lang:コマンド
$ sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run rancher/rancher-agent:v2.0.6 --server https://35.194.106.236 --token rw4dhsfltd7t6w5688lg87nv88nv67j7q4v5trlvc2s62rmxp9ktp9 --ca-checksum d05b9a2c18af8671ff2d1e4419305d3425094f1d246698bd92d5755df755135c --address 35.189.159.53 --internal-address 10.146.0.3 --etcd --controlplane --worker
Unable to find image 'rancher/rancher-agent:v2.0.6' locally
v2.0.6: Pulling from rancher/rancher-agent
6b98dfc16071: Pull complete 
4001a1209541: Pull complete 
6319fc68c576: Pull complete 
b24603670dc3: Pull complete 
97f170c87c6f: Pull complete 
9b084b212917: Pull complete 
55583c251234: Pull complete 
79a9ecb8ade0: Pull complete 
bd6875f134fd: Pull complete 
Digest: sha256:8b456ed80e6e21017d49b9f45c8528e347f0e683982c1cb5b0f622866a9f6fa0
Status: Downloaded newer image for rancher/rancher-agent:v2.0.6
05da4902f8a4a855d6027ea109ba7006ffabddd2baf67d56932d033af647c70c
```
5.「Done」ボタンを押下します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/999450b4-b49f-4b65-21bc-93462bb9278c.png)

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

Activeの表示に変わった段階で、クラスタ名をクリックしてください。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/8a1408d3-f065-390b-bfae-74c8900c8345.png)

## 6.リソース状況を確認

![screencapture-35-194-106-236-c-c-ccvh6-2018-08-11-18_35_56.png](https://qiita-image-store.s3.amazonaws.com/0/61606/5a48dc87-0868-7996-987d-9bc0fb9cda91.png)

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

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

「Default」を選択します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/fd96526b-90e5-f946-d91e-66f4c51df094.png)

「Catalog Apps」を選択します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/a4526265-1942-3ae2-f05f-594b362c7574.png)

## 2.「Launch」ボタンを押下

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/95988181-69e0-273c-2988-ccd4e282391d.png)

## 3.「weave-scope」の「View Details」ボタンを押下

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/f32e55f3-ebd9-ad20-c1ea-eef84eeff343.png)

## 4.「Launch」ボタンを押下

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/5a1eb279-e901-c281-7581-2ae631ec6efb.png)

## 5.デプロイ完了後、上部メニューから「Workloads」を選択

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/88d2b0a2-6050-fb0c-5ec3-fd8825c5dd0b.png)

## 6.「Load Balancing」をクリック

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/d9e290af-ac4c-0de9-00a8-1d8b4fbf0ba8.png)

## 7.「Add Ingress」ボタンを押下

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/0f9cfeaf-ff56-da00-3622-9a4593ebcdf8.png)

## 8.「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)

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

しばらくするとURLが生成されますので、クリックします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/8cf92cda-3812-2cef-941d-3852c529aa21.png)

## 10.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.k8s-cluster」を選択

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/2c74cecb-12fe-22a8-d9b2-58b2403f2abe.png)

## 2.「Launch kubectl」ボタンを押下

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/3e4c5164-c606-9339-c2c5-319e4d0f7986.png)

## 3.コンソール起動確認

![screencapture-35-194-106-236-c-c-ccvh6-2018-08-11-19_15_08.png](https://qiita-image-store.s3.amazonaws.com/0/61606/dadff6ac-c809-9121-1eac-ace2a32b3eee.png)

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

```lang:コマンド
# Run kubectl commands inside here
# e.g. kubectl get all
> kubectl get nodes
NAME           STATUS    ROLES                      AGE       VERSION
rancher-host   Ready     controlplane,etcd,worker   46m       v1.10.5
>
```

## 5.「kubectl version」の実行

```lang:コマンド
> kubectl version
Client Version: version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.8", GitCommit:"c138b85178156011dc934c2c9f4837476876fb07", GitTreeState:"clean", BuildDate:"2018-05-21T19:01:12Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.5", GitCommit:"32ac1c9073b132b8ba18aa830f46b77dcceb0723", GitTreeState:"clean", BuildDate:"2018-06-21T11:34:22Z", GoVersion:"go1.9.3", 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アプリケーション構成図

![図2.png](https://qiita-image-store.s3.amazonaws.com/0/61606/2f733856-9956-5fbd-c7ce-09f1c1535a93.png)

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

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

## 2.デプロイの確認

```lang:コマンド
> kubectl get services
NAME           TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
frontend       ClusterIP   10.43.159.136   <none>        80/TCP     1m
kubernetes     ClusterIP   10.43.0.1       <none>        443/TCP    53m
redis-master   ClusterIP   10.43.117.197   <none>        6379/TCP   1m
redis-slave    ClusterIP   10.43.210.5     <none>        6379/TCP   1m
>
```

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

## 3.RancherUIからIngressを作成

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

![image.png](https://qiita-image-store.s3.amazonaws.com/0/61606/af414f63-e40e-2316-ac7a-20258a0625b9.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/a0a8b415-0f0b-38f7-7988-75131f3ee4fa.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)