2020/05/28

kind + Istio + Skaffold によるMicroservice開発ローカル環境

WRITER: r.ho

こんにちは開発研究チームのhoでございます。
最近Microservice研究を行っております。

本日はkind + Istio + Skaffold を用いてローカル開発を行う環境作りの例をご紹介させていただきたいと思います。

まず四つのツールが必要でございます。

kindkubectlistioctlskaffoldを各platformに合わせて以下のサイトを参考にご用意をお願いいたします。

  • kind: https://kind.sigs.k8s.io/docs/user/quick-start/
  • kubectl: https://kubernetes.io/docs/tasks/tools/install-kubectl/
  • istioctl: https://istio.io/docs/setup/getting-started/
  • skaffold: https://skaffold.dev/docs/install/

MacOSの場合Docker for desktopの設定をメモリー8GB以上割り当てをお願いいたします。

今回使うsampleは以下のファイルで構成されます。

main.goです。
1秒間隔で”Hello world!”を出力し続けます。

Dockerfileです。buildしてimageを作ります。

Kubernetes podはk8s-pod.yamlで定義しています。
上記sample imageでpodを作ります。

skaffoldのmanifestであるskaffold.yamlです。
上記のimageを自動的buildしてclusterにdeployします。

これでソースコードの準備はできました。
以下の手順で試してみます。

clusterを作ります。

istioをinstallします。

istioのenvoy sidecarの自動挿入をenableします。

skaffold dev 実行してbuildとdeployします。deploymentが安定したらファイルのchangeを待っている状態になります。

画面にhello worldが繰り返して表示されています。

main.goのhello worldをhello world2へ直して格納すると
以下のように検知され自動的に再buildして再deployされます。

ctrl + cで中止します。

clusterを削除します。

まとめ

  • kindを用いて軽量のkubernetes clusterをローカルに作成することはできました。
  • Istioをinstallしてservice meshを構築することができました。
  • sampleコードをskaffoldを用いてdeployすることができました。
  • ソースコードを修正すると自動deployできることを確認いたしました。

kindを使うことによりローカル開発構築がはるかに簡単になりました。まだ使ったことがないならぜひ一度試してみてはいかがでしょうか?