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アプリをデプロイしてみました。

Rancher Server

項目 入力概要
名前 rancher-server
ゾーン asia-northeast1-b
マシンタイプ vCPUx1
ブートディスク Ubuntu 18.04 LTS
ディスクサイズ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」を選択します。

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

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

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

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

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

Kialiダッシュボード

Jaegerダッシュボード

Grafanaダッシュボード

Prometheusダッシュボード

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

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

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

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

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

コマンド
# 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アプリケーションデをデプロイします。

コマンド
> 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状況を確認します。

コマンド
> 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コマンドでアクセスします。

コマンド
> 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」を選択します。

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

Kialiが同梱されているので、RancherUIから確認できます。

Kialiのアイコンをクリックして、Kialiダッシュボードからも確認できます。

「Traffic Metrics」を選択すると、ServiceによるレイテンシーやVolumeの状況をグラフで見ることができます。グラフにカーソルを合わせると詳細情報が表示されます。

Jaegerのアイコンをクリックして、Jaegerダッシュボードからも確認できます。

以上となります。

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

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

Announcing Preview Support for Istio