6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Istio 1.0.2 + gRPC Sample

Posted at

Istio でとりあえず gRPC でクライアントからサーバーへの通信ができるようにしたところまでのサンプル
ドキュメント通りに動かすのが困難だったので、とりあえず動くまでであり、正しくセットアップできているかは微妙。

実行環境は以下の通り。

$ minikube version
minikube version: v0.30.0

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"12", GitVersion:"v1.12.0", GitCommit:"0ed33881dc4355495f623c6f22e7dd0b7632b7c0", GitTreeState:"clean", BuildDate:"2018-09-28T15:20:58Z", GoVersion:"go1.11", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.0", GitCommit:"fc32d2f3698e36b93322a3465f63a14e9f0eaead", GitTreeState:"clean", BuildDate:"2018-03-26T16:44:10Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}

$ helm version
Client: &version.Version{SemVer:"v2.11.0", GitCommit:"2e55dbe1fdb5fdb96b75ff144a339489417b146b", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.11.0", GitCommit:"2e55dbe1fdb5fdb96b75ff144a339489417b146b", GitTreeState:"clean"}

$ ls . | grep istio
istio-1.0.2

Setup

Minikube

$ minikube start --memory=8192 --cpus=4 --kubernetes-version=v1.10.0 \
    --extra-config=controller-manager.cluster-signing-cert-file="/var/lib/localkube/certs/ca.crt" \
    --extra-config=controller-manager.cluster-signing-key-file="/var/lib/localkube/certs/ca.key" \
    --vm-driver=`your_vm_driver_choice`

上のように Istio/Setup/Kubernetes/Platform Setup/Minikube に従っても上手く立ち上がらなかったため --extra-config を省いて立ち上げた。

$ minikube start --memory=8192 --cpus=4 --kubernetes-version=v1.10.0 --vm-driver=virtualbox

Minikube Cleanup Memo

最初からやり直したい時は以下を試す。

$ minikube stop
$ minikube delete

~/.minikube にファイルができているので吹っ飛ばしたい時は消して uninstall などする。

$ ls ~/.minikube

Istio / Installation with Helm

Install with Helm and Tiller via helm install を選択する。

$ kubectl apply -f istio-1.0.2/install/kubernetes/helm/helm-service-account.yaml

$ helm init --service-account tiller

$ helm install istio-1.0.2/install/kubernetes/helm/istio --name istio --namespace istio-system --set grafana.enabled=true

--set grafana.enabled=true はドキュメントになかったが、つけたら Grafana が生えてきたので付ける。

Grafana

$ kubectl get svc grafana -n istio-system -o='jsonpath={.spec.ports}'
[map[name:http protocol:TCP port:3000 targetPort:3000]]

$ kubectl -n istio-system get pod -l app=grafana -o jsonpath='{.items[0].metadata.name}'
grafana-75485f89b9-pb4mz

$ kubectl -n istio-system port-forward $(kubectl -n istio-system get pod -l app=grafana -o jsonpath='{.items[0].metadata.name}') 3000:3000

$ open http://localhost:3000

ここまでで Grafana は立ち上がるようになっている。

gRPC Service

$ kubectl label namespace default istio-injection=enabled

$ kubectl apply -f ping.yaml

istio-1.0.2/samples/bookinfo/platform/kube/bookinfo.yamlistio-1.0.2/samples/bookinfo/networking/bookinfo-gateway.yaml を参考に yaml を作成。

$ minikube ip
192.168.99.100

$ kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}'
31380

$ example-ping-service-client -h 192.168.99.100 -p 31380

Determining the ingress IP and ports when using a node port を参考にローカルからの gRPC リクエストを送ると少なくともサーバーに到達してレスポンスが返る。

スクリーンショット 2018-11-06 13.51.43.png
スクリーンショット 2018-11-06 13.52.24.png
スクリーンショット 2018-11-06 13.54.53.png

次のタスク

setup をなぞっただけなので諸々未検証。

HTTP2 としての情報しか取ってないようなので仕方ないのか gRPC ステータスが反映されないのとメソッド毎(パス毎)の情報は取れないのかなと思っているが未調査。

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?