NnmnLog

Skaffoldを使ってみる

作成: 2020-07-23
更新: 2020-07-23

skaffoldとは

skaffoldは、Googleが開発したツールで、Kubernetes常に構築したアプリを開発する際のイメージのビルドやローカルに構築したのKubernetesへのデプロイを自動化してくれる開発支援ツールです。

skaffold.yamlの設定に従って、プロジェクトないのファイルに変更が入るたびにイメージのビルド => Kubernetesへのデプロイが実行されminikubeで最新のアプリケーションが動作します。

また、開発環境の起動だけでなく、設定したKubernetes環境へデプロイ機能も持っています。

今回は、本番環境へのデプロイまでは行わず、skaffoldをインストールからローカルのMinikubeでアプリケーションを動作させるまでを確認してみました。

MinikubeでKubernetesのローカル環境を構築する で使ったこちらのリポジトリを使います。

skaffoldをインストールする

homebrewを使っていれば、brewコマンドでインストールできます。

$ brew install skaffold

skaffoldの設定ファイルを作成する

以下のコマンドで設定ファイルのテンプレートを作成します。 デフォルトでskaffold.yamlというファイルが作成されます。

$ skaffold init

開発を開始する

以下のコマンドを実行すると、skaffold.yamlの設定に基づいて、ローカル開発環境にアプリケーションがデプロイされます。

$ skaffold dev

コマンドを実行すると、skaffoldが実行中になり、プロジェクトのファイルの変更を監視します。

skaffoldが起動している状態で、ソースコードを書き換えると、イメージのビルド => Kubernetesへのデプロイが実行されます。

起動したアプリケーションにアクセスしたい場合は、以下のコマンドを実行するとブラウザが起動しページが表示されます。

$ minikube service sample-app

上記のリポジトリを使った場合は、以下のようなページが開きます。

skaffoldで作成したアプリの画面

まとめ

設定が必要だったファイルは、アプリケーションをKubernetesにデプロイするためのdeployments.yamlくらいで、想定していたよりも簡単に実行することができました。

skaffold initコマンドがプロジェクト内の設定ファイルを自動で認識して、skaffold.yamlを作成してくれるため、ほぼやることはありませんでした。

今後は、環境変数などを設定する方法などを調べて行こうと思います。