[Kubernetes] Skaffoldをとりあえず試してみた

お世話になっております。
しゃまとんです。

Skaffoldというツールがリリースされたので試してみました。
(確認したバージョンはv0.2.0です。最新版では挙動が異なる場合あるので注意してください)

このツールですが、kubernetesを開発環境としても手軽に利用できるようにと開発されているもののようです。
こちらの記事で紹介されています。

Google、開発者のためのKubernetes用コマンドラインツール「Skaffold」オープンソースで公開。開発環境にもKubernetes、ローカルのMinikubeにも対応 - Publickey

ちなみにskaffoldとは直訳では「足場」のようですが、いい感じに環境を組み上げてくれる仕組みに対して使われる言葉としてもあるようです。
(よくわからんですね(;・∀・))

ということで物は試しで進めていきましょう。
試すにはkubernetesを使える環境が必要になります。minikubeでもいけるみたいですが、
Dockerのedgeバージョンをインストールするとkubernetesを使えるのでこちらを使いました。

セットアップはこちらのページが参考になります。
Docker for Mac with Kubernetes – Qiita

できたら、次にgithubを開いてすすめていきます。
GoogleCloudPlatform/skaffold – Github

最初にインストールからですね。Macの場合は下記コマンドを実行します。

完了するとskaffoldがコマンドとして使えるようになります

kubernetes環境はローカルのものを使うので、コンテキストを一応確認しておきます。
kubectlはDockerのkuberenetesインストール時に使えるようになっています。

次に実際に使ってみましょう。
適当なフォルダにcloneして、sampleまで移動します。

次にskaffold devするのですが、その前にskaffold.yamlを少しだけ変更してみます。
そのまま実行しても動作してくれます。ちなみにデフォルトではskaffold.yamlを参照する仕組みになっているようです。(-fでファイル指定も出来ますよ)

imageNameは適当に変更しつつ、workspaceとpathsにも変更をしたので、移動やリネームをしておきます。

些細ですが、main.goはDockerfileから参照しているため同じ階層に存在していないとエラーになってしまいます。
ではコレを実行してみます。

これらから見るにworkspaceのDockerfileを参照してイメージを作成し、k9s-pod.yamlをkubectl apply -f している感じじゃないかと思います。
次にコードを変更してみましょう。main.goを開いて…

にしてみます。すると、自動的にdeployされてHello world!が切り替わります。

一応imageも確認しておくと、一度更新したのでsampleが2つになっていますね。

すっごいimage増えそう。止める時はどうするのかな…
kubectl実行すればいいのだろうか。

とりあえずこんな感じで。
ローカルでkubernetesを簡単に試せるのがいいですね(skaffold関係ない)!
以上です。