Posted at

開発環境のkubernetesにskaffoldを使って自動デプロイ


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ファイルを指定