Istio インストール on AKS 

Istio を久々にインストールしたら、[Deploying Istio on Azure Container Service](https://readon.ly/post/2017-05-25-deploy-istio-to-azure-container-service/)の方法ではうまくいかなくなっていた。

原因は、helm Char のセマンテックバージョニングで、Helm 2.8 がリリースされたら改善されそう。

* [[incubator/istio] istio install failed #2447](https://github.com/kubernetes/charts/issues/2447)

```
$ helm search incubator/istio -l
NAME           	VERSION     	DESCRIPTION
incubator/istio	0.2.8-chart2	Istio Helm chart for Kubernetes
incubator/istio	0.2.7-chart7	Istio Helm chart for Kubernetes
incubator/istio	0.2.7-chart6	Istio Helm chart for Kubernetes
incubator/istio	0.2.7-chart5	Istio Helm chart for Kubernetes
incubator/istio	0.2.7-chart4	Istio Helm chart for Kubernetes
incubator/istio	0.2.7-chart3	Istio Helm chart for Kubernetes
incubator/istio	0.2.7-chart2	Istio Helm chart for Kubernetes
incubator/istio	0.2.7-chart1	Istio Helm chart for Kubernetes
incubator/istio	0.2.6-chart1	Istio Helm chart for Kubernetes
incubator/istio	0.1.6-chart6	Istio Helm chart for Kubernetes
incubator/istio	0.1.6-chart5	Istio Helm chart for Kubernetes
incubator/istio	0.1.6-chart4	Istio Helm chart for Kubernetes
incubator/istio	0.1.6-chart3	Istio Helm chart for Kubernetes
incubator/istio	0.1.6-chart2	Istio Helm chart for Kubernetes
incubator/istio	0.1.6-chart1	Istio Helm chart for Kubernetes
```

具体的には、helm のところで、次のエラーがでる。

```
Error: file "incubator/istio" not found
```

現在は、Helm 2.7 だから、もうちょっと待たないといけない。じゃあどうするか？というと、久々に、istioctl をインストールしてみると、ディレクトリに色々インストールされていることに気づいた。下記のコマンドを実行すると、istoctl がインストールされるが、それ以外にもサンプルとかyaml とかがインストールされている。だから、ここの配下の、bin ディレクトリに istioctl が落とされて、そこにパスを通せばクライアントはOK.

```
  curl -L https://git.io/getLatestIstio | sh -
```

中身はこんな感じになっている。

```
$ ls
CONTRIBUTING.md	README.md	install		samples
LICENSE		bin		istio.VERSION
```

この、samples の中にはおなじみのサンプル。そして、install の下に色々yaml が入っている。

```
$ ls
README.md			istio-one-namespace-auth.yaml
addons				istio-one-namespace.yaml
istio-auth.yaml			istio.yaml
istio-initializer.yaml		mesh-expansion.yaml
```

ここで、`istio.yaml` を実行すれば良い。知らない間に色々できているからまた触らないとなー。

```
kubectl apply -f install/kubernetes/istio.yaml
```

インストールされたかは、下記のコマンドで確認。具体的には、istio-ingress がしっかりポートまでできいればOK.

```
$ kubectl get svc -n istio-system
NAME            TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)                                                  AGE
istio-egress    ClusterIP      10.0.188.180   <none>          80/TCP                                                   1h
istio-ingress   LoadBalancer   10.0.214.224   40.71.213.252   80:31249/TCP,443:32766/TCP                               1h
istio-mixer     ClusterIP      10.0.128.87    <none>          9091/TCP,9093/TCP,9094/TCP,9102/TCP,9125/UDP,42422/TCP   1h
istio-pilot     ClusterIP      10.0.119.190   <none>          8080/TCP,443/TCP                                         1h
````

他に、Kubernetes のダッシュボードでどんなものが動いているか見れば理解が深まると思います。

```
az aks browse -n YOUR_CLUSTER_NAME -g YOUR_RESOURCE_GROUP_NAME
```

# Resource

* [[incubator/istio] istio install failed #2447](https://github.com/kubernetes/charts/issues/2447)
* [Deploying Istio on Azure Container Service](https://readon.ly/post/2017-05-25-deploy-istio-to-azure-container-service/)
* [istio Quick Start](https://istio.io/docs/setup/kubernetes/quick-start.html)