Skaffold キャッチアップ
とりあえず公式が用意しているチュートリアル的なものを使用してみた
事前準備としてツールのインストールや設定が必要
code:shell
brew install skaffold minikube
minikube start --profile custom
skaffold config set --global local-cluster true
eval $(minikube -p custom docker-env)
ファイルツリーはこのような感じ
code:file tree
.
├── Dockerfile
├── k8s-pod.yml
├── main.go
└── skaffold.yml
skaffold の起動は skaffold.yml のあるディレクトリで skaffold dev を実行する
build.artifacts で作成するコンテナ名を指定する。おそらく同一ディレクトリの Dockerfile については特に指定しなくても skaffold 側で自動で検知してくれそう。deploy.kubectl.manifests で起動する manifest を指定する感じ。ワイルドカードで k8s-* というように manifests ファイルをガバっと指定できるのは便利そう。
code:skaffold.yml
apiVersion: skaffold/v2beta29
kind: Config
build:
artifacts:
- image: skaffold-example
deploy:
kubectl:
manifests:
- k8s-*
以下所見
チュートリアルの軽量な go のプログラムを実行するための初期起動スピードは非常に素早かった
ファイルの差分を検知したら docker build、kubectl apply を勝手に実行してくれる
docker-compose では docker build はしてくれないので、便利かも
ただ、サーバーの起動に時間がかかるようなものにおいてクイックに開発できないのはフラストレーションが溜まってしまう?
要検証
docker-compose 上での go の開発では air を用いてホットリロードを行うのが普通だが、docker build で時間がかからないのであれば k8s のローカル開発では skaffold を用いるのが良いかも