LoginSignup
3
3

More than 5 years have passed since last update.

istio 1.0.5 と minikube で Automatic sidecar injection を試してみた。

Last updated at Posted at 2018-12-30

概要

macOS 上で動作する minikube へ istio 1.0.5 をインストールした後、Automatic sidecar injection を試してみました。istio のインストール作業において色々とハマりポイントがあったので、健忘録を兼ねて書きます。

検証環境

  • macOS - High Sierra 10.13.6

  • minikube - v0.32.0

  • kubectl - 1.13.1

  • helm - 2.11.0

minikube の起動

minimal istio install を行うだけであれば、メモリーを 8 MB、CPU を4つを割り当てて minikube を起動するだけで問題ありません。しかしながら、Automatic sidecar injection を試したい場合、これだけでは不十分です。

まず、公式ドキュメントの起動コマンドは次の通りです。

$ 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 の Pod が起動しません。issue でもこのことは報告されているようです。

自身の仮想マシンへ minikube ssh でログインして証明書と鍵のパスを確認する必要があります。私の場合は /var/lib/minikube/certs 配下にありました。したがって、起動コマンド配下のようになります。

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

istio のインストール

Downloading the Releaseに従い、次のコマンドにて istio をダウンロードします。

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

次に minimal istio install を参考にコマンドを実行していきます。

$ kubectl apply -f istio-1.0.5/install/kubernetes/helm/istio/templates/crds.yaml

今回は Automatic sidecar injection を試したいので helm によるマニフェストのレンダリングは以下のように設定しました。

$ helm template istio-1.0.5/install/kubernetes/helm/istio --name istio --namespace istio-system \
  --set security.enabled=false \
  --set ingress.enabled=false \
  --set gateways.istio-ingressgateway.enabled=false \
  --set gateways.istio-egressgateway.enabled=false \
  --set galley.enabled=false \
  --set mixer.enabled=false \
  --set prometheus.enabled=false \
  --set global.proxy.envoyStatsd.enabled=false \
  --set pilot.sidecar=false | kubectl apply -f -

しかし、このコマンドではいつまでたっても istio-sidecar-injector の Pod が動きません・・・

issue のコメントに原因らしき事が記載されていました。コメントの通り、 --set security.enabled=false のオプションを外してみます。

$ helm template istio-1.0.5/install/kubernetes/helm/istio --name istio --namespace istio-system \
  --set ingress.enabled=false \
  --set gateways.istio-ingressgateway.enabled=false \
  --set gateways.istio-egressgateway.enabled=false \
  --set galley.enabled=false \
  --set mixer.enabled=false \
  --set prometheus.enabled=false \
  --set global.proxy.envoyStatsd.enabled=false \
  --set pilot.sidecar=false | kubectl apply -f -

自分の環境では Pod の作成に時間がかかりました。おおよそ 5分後に確認すると・・・

$ kubectl get pods -n istio-system
NAME                                      READY   STATUS      RESTARTS   AGE
istio-citadel-cb5b884db-2pvhl             1/1     Running     0          6m
istio-cleanup-secrets-dgrlx               0/1     Completed   0          6m
istio-pilot-8668c69c84-lx2p7              1/1     Running     0          32m
istio-security-post-install-mkg4c         0/1     Completed   0          6m
istio-sidecar-injector-7f4c7db98c-bqfgp   1/1     Running     0          32m

istio の動作に必要な Pod が作成されました。

Automatic sidecar injection を試してみる。

ドキュメントに従い、サンプルのマニフェストを用いて istio-proxy をインジェクションしてみます。

$ kubectl label namespace sandbox istio-injection=enabled
namespace/sandbox labeled
$ kubectl get namespace -L istio-injection
NAME           STATUS   AGE   ISTIO-INJECTION
default        Active   39m
istio-system   Active   37m
kube-public    Active   39m
kube-system    Active   39m
sandbox        Active   37m   enabled
$ kubectl apply -f ./istio-1.0.5/samples/sleep/sleep.yaml
service/sleep created
deployment.extensions/sleep created
$ kubectl get pods
NAME                     READY   STATUS    RESTARTS   AGE
sleep-79cc87b6b9-t7rlp   2/2     Running   0          2m

コンテナの数が2つになっています。無事、istio-proxy がインジェクションされました。

3
3
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
3
3