Rancher Preview 2.3.0-alpha5 Istio kiali Jaeger Promethesu+Grafana

Rancher2.3 Previewとして、Istio kiali Jaeger そして2.2から同梱されたPrometheus+Grafanaとは別に機能として追加されました。

Bookinfoアプリケーションをベースに試してみようと思います。

# 環境について

環境としては、RancherからGKEにクラスタを構築してBookinfoアプリをデプロイしてみました。

![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/43658f3c-62ac-bea0-e42c-05fc41c305aa.png)

## Rancher Server

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

## GKEクラスタ

リソースは多めに必要となります。vCPU数8のクラスタとなります。

|項目               |入力概要        |
|:----------------------------------|:---------------------------------------------|
|名前|rancher-k8s-cluster|
|ゾーン|asia-northeast1-a|
|Machine Type|n1-standard-2(2 vCPUs,7.5GB RAM)|
|Node Count|4|
|Node Count|Ubuntu|

# Istio Kiali Jaeger Prometheus+Grafana 環境デプロイ

ナビゲーションから「Global」-「rancher-k8s-cluster」を選択します。
<img width="246" alt="02.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/378e3f0c-3162-3d77-b122-d94371993951.png">

ナビゲーションから「Tools」-「Istio」を選択します。
<img width="96" alt="03.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/2e240d21-20b8-be4d-9d40-a6fd6caeb7a4.png">

デフォルトのまま「Enable」ボタンをクリックします。

<img width="960" alt="04.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/e7961b64-9bd0-9c0a-e135-157d59c8b452.png">

ナビゲーションから「Default」を選択します。

<img width="247" alt="04.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/5c0d92d6-6543-c449-993b-ea6a5ca4c8ce.png">

ナビゲーションから「Istio」を選択します。

<img width="276" alt="05.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/6f7d38ea-f7e5-8bb2-2200-13ddb3458be6.png">

画面が遷移すると、右上に「Kiali Jaeger Grafana Prometheus」のアイコンが表示されます。各アイコンをクリックするとダッシュボード画面が表示されます。

<img width="960" alt="06.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/d116f46c-a278-e9d8-d53d-229797281411.png">

Kialiダッシュボード
![07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/82525cdf-8a41-a990-c54e-6462ac3ffba0.png)

Jaegerダッシュボード
![08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/ba8b3a15-1944-71e6-88c8-45014698b3c0.png)

Grafanaダッシュボード
![09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/78c633f0-db38-52a6-e83d-ac98d197c1a6.png)

Prometheusダッシュボード
![10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/3b59c2a9-21ad-ae65-0653-cf9ebc574b34.png)

ナビゲーションから「rancher-k8s-cluster」を選択します。

<img width="246" alt="11.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/562d8de5-141d-5018-4ba5-f897e8d7e7af.png">

「Launch kubectl」ボタンをクリックします。

<img width="701" alt="12.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/1b7118c4-f75d-436c-4f83-23995fae3476.png">

コンソールが起動します。

<img width="908" alt="13.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/130ca57f-d681-426b-ca30-975b3e2465a4.png">

# Bookinfoアプリケーションデプロイ

BookinfoはIstioのサンプルアプリケーションのため、まずIstioをダウンロードします。

```command:コマンド
# Run kubectl commands inside here
# e.g. kubectl get all
> curl -L https://git.io/getLatestIstio | sh -
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100  2140  100  2140    0     0   2372      0 --:--:-- --:--:-- --:--:--  104k
Downloading istio-1.2.0 from https://github.com/istio/istio/releases/download/1.2.0/istio-1.2.0-linux.tar.gz ...  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   614    0   614    0     0   1590      0 --:--:-- --:--:-- --:--:--  1590
100 20.2M  100 20.2M    0     0  6184k      0  0:00:03  0:00:03 --:--:-- 10.4M
Istio 1.2.0 Download Complete!

Istio has been successfully downloaded into the istio-1.2.0 folder on your system.

Next Steps:
See https://istio.io/docs/setup/kubernetes/install/ to add Istio to your Kubernetes cluster.

To configure the istioctl client tool for your workstation,
add the /nonexistent/istio-1.2.0/bin directory to your environment path variable with:
         export PATH="$PATH:/nonexistent/istio-1.2.0/bin"

Begin the Istio pre-installation verification check by running:
         istioctl verify-install 

Need more information? Visit https://istio.io/docs/setup/kubernetes/install/
```

ラベルを設定して、Bookinfoアプリケーションデをデプロイします。

```command:コマンド
> cd istio-1.2.0/
> kubectl label namespace default istio-injection=enabled
namespace/default labeled
> kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
service/details created
serviceaccount/bookinfo-details created
deployment.apps/details-v1 created
service/ratings created
serviceaccount/bookinfo-ratings created
deployment.apps/ratings-v1 created
service/reviews created
serviceaccount/bookinfo-reviews created
deployment.apps/reviews-v1 created
deployment.apps/reviews-v2 created
deployment.apps/reviews-v3 created
service/productpage created
serviceaccount/bookinfo-productpage created
deployment.apps/productpage-v1 created
```
serviceとpod状況を確認します。

```command:コマンド
> kubectl get services
NAME          TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
details       ClusterIP   10.43.247.245   <none>        9080/TCP   23s
kubernetes    ClusterIP   10.43.240.1     <none>        443/TCP    6m32s
productpage   ClusterIP   10.43.249.140   <none>        9080/TCP   22s
ratings       ClusterIP   10.43.255.36    <none>        9080/TCP   23s
reviews       ClusterIP   10.43.247.171   <none>        9080/TCP   23s
> kubectl get po
NAME                              READY   STATUS    RESTARTS   AGE
details-v1-7964b4bb49-hl4zt       2/2     Running   0          64s
productpage-v1-6c668694dc-f69hc   2/2     Running   0          63s
ratings-v1-7bb4dbd557-s8dwz       2/2     Running   0          63s
reviews-v1-597f899bf6-cvzs5       2/2     Running   0          64s
reviews-v2-664994896d-4vrvp       2/2     Running   0          64s
reviews-v3-fc984656d-cvdhb        2/2     Running   0          63s
```

curlコマンドでアクセスします。

```command:コマンド
> kubectl exec -it $(kubectl get pod -l app=ratings -o jsonpath='{.items[0].metadata.name}') -c ratings -- curl productpage:9080/productpage | grep -o "<title>.*</title>"
<title>Simple Bookstore App</title>
>
```

ナビゲーションから「Default」を選択します。
<img width="247" alt="04.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/5c0d92d6-6543-c449-993b-ea6a5ca4c8ce.png">

ナビゲーションから「Istio」を選択します。
<img width="276" alt="05.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/6f7d38ea-f7e5-8bb2-2200-13ddb3458be6.png">

Kialiが同梱されているので、RancherUIから確認できます。
![14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/16230e4f-399b-e933-5fb5-c8d6f151eec2.png)

Kialiのアイコンをクリックして、Kialiダッシュボードからも確認できます。
![15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/08fcc670-4401-7422-03c1-47c2a515d9d8.png)

「Traffic Metrics」を選択すると、ServiceによるレイテンシーやVolumeの状況をグラフで見ることができます。グラフにカーソルを合わせると詳細情報が表示されます。
<img width="950" alt="14.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/bd25c5be-a6aa-6291-ee9d-f6bf2508ef8d.png">

Jaegerのアイコンをクリックして、Jaegerダッシュボードからも確認できます。
![16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61606/90801445-02e6-2742-7f0d-8ddbb558e5ce.png)

以上となります。

ナビゲーションから数クリックでIstio kiali Jaeger Promethesu+Grafana環境が構築できるのはいいですね。RancherにもService Mesh、Observerbility環境が2.3から整い始める感じがしました。

Rancher2.2から同梱されたPrometheus+Grafanaはクラスタ、プロジェクトレベルですが、Istio環境用にも追加されたのでリソースは食うのでGA時には改善を期待したいところです。

[Announcing Preview Support for Istio](https://rancher.com/blog/2019/announcing-istio-preview)