LoginSignup
1
2

More than 5 years have passed since last update.

kubernetes上でIstioを動かしてみる

Last updated at Posted at 2019-05-01

はじめに

Istioは、Google、IBM、Lyftで共同開発したOSS化されたサービスメッシュフレームワークで、環境非依存のプラットフォームで利用可能です。

各マイクロサービスと一緒にSidecarProxyとをデプロイし、それ経由で他のマイクロサービスとの通信を行います。Istioでは、SidecarProxyとしてLyftが作成したEnvoyを採用しています。

そんなIstioをkubernetes上で動かしてみたので、まとめておこうと思います。

※2019年3月にバージョンが1.1に到達しています(参考:https://istio.io/blog/2019/announcing-1.1/)
※ベータ版ですが、GCPのマネージドサービスとして提供されています(参考:https://cloud.google.com/istio/docs/istio-on-gke/overview)

Istioをkubernetesにinjectする

基本的にはPodは1つのcontainerを持つ状態で起動します。そのため、下のコマンドを叩くと、1/1と表示されます。


$ kubectl get pods
NAME                       READY   STATUS    RESTARTS   AGE
httpbin-5fc7cf895d-mp8vt   1/1     Running   0          27d
sleep-57f9d6fd6b-78xfr     1/1     Running   0          27d

Istioをinject(注入する)ためには、下記のコマンドでラベル付けをします。

$ kubectl label namespace default istio-injection=enabled
$ kubectl get namespace -L istio-injection
NAME             STATUS   AGE   ISTIO-INJECTION
default          Active   29d   enabled
istio-system     Active   29d
kube-public      Active   29d
kube-system      Active   29d

IstioのinjectはPodを作成するタイミングで発生します。
そのため、これ以降新たなPodを作成するタイミングで、Sidecarがinjectされます。


$ kubectl delete pod sleep-57f9d6fd6b-78xfr
$ kubectl get pod
NAME                     READY     STATUS        RESTARTS   AGE
sleep-57f9d6fd6b-78xfr   1/1       Terminating   0          1m
sleep-776b7bcdcd-7hpnk   2/2       Running       0          7s

上記の通り、2/2となっていることからもSidecarがinjectされていることがわかります。

Istioをkubernetesにinjectしないようにする

上記で設定したinjectは下記のコマンドで無効にすることができます。

$ kubectl label namespace default istio-injection-
1
2
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
1
2