skaffoldとは
googleによって開発されている、kubernetesへの継続的な開発を容易にするコマンドラインツールです。
開発段階では、アプリケーションのソースコードの変更を検知して、
DockerコンテナのBuild→コンテナレジストリーへのPush→kubernetesクラスタへdeploy
を行ってくれます。
本番環境では、CI/CDを担当させる事が可能です。
メリット
- Google公式なので自作ビルドツールより安心
- 煩雑なimageのtag管理を自動でやってくれる
- 導入が簡単
デメリット
- VolumeMountに比べると多少遅い
- ビルドするファイルサイズが大きい場合、遅延が顕著になる
導入方法
skaffoldのリポジトリにskaffold用の設定サンプルファイルがあるのでそれを編集します。
サンプルファイル>>
コマンド
Skaffold dev
$ skaffold dev
ソースコード及びコードとdockerイメージの依存関係を監視し、変更を検知するとアプリケーションのビルド/プッシュ/デプロイを実行します。
Skaffold run
$ skaffold run
デプロイしたアプリケーションを継続的に更新しますが、エラー発生時に終了します。以下の用途で利用できます。
構成ファイル
skaffold.yaml
apiVersion: skaffold/v1alpha2
kind: Config
build:
tagPolicy:
sha256: {} #コンテナのTagをハッシュ
artifacts:
- imageName: k8sdemo/php-apache # apache-phpのコンテナ
workspace: ./docker/apache-php # apache-phpのworkSpace
local:
deploy:
kubectl:
manifests:
- ./templates/main.yaml # 監視対象のyamlファイルを指定