この記事では、Skaffold を使用する方法と、Cloud Deploy で Skaffold を使用する理由と方法について説明します。
Cloud Deploy では、レンダリングとデプロイのオペレーションに Skaffold を使用します。ローカル開発、ビルド、テスト、高度なデプロイ機能にも使用できます。ただし、Cloud Deploy では、レンダリングして適用するマニフェストを識別する Skaffold 構成のみが必要です。
Skaffold とは
Skaffold は、Kubernetes ネイティブ アプリケーションの継続的な開発を容易にするコマンドライン ツールです。Skaffold を使用すると、Cloud Deploy 継続的デリバリー パイプラインで使用するローカル開発ワークスペースを構成できます。
Skaffold には次の機能があります。
CI/CD パイプライン アクティビティ(ビルド、レンダリング、テストデプロイなど)をきめ細かく制御できます。
ローカル開発ツールとして有用です。
Skaffold プロファイルを使用すると、同じ構成ファイルにさまざまなビルド、テスト、デプロイ構成で、異なる環境を区別できます。
Cloud Deploy で Skaffold を使用する理由
Google Cloud Deploy では、Skaffold を使用してレンダリング パイプラインをデリバリー パイプラインから分離します。デリバリー パイプラインは、ターゲットからターゲットへの進行を定義するだけですが、Skaffold 構成では、レンダリングするマニフェストとその方法を定義します。これにより、デリバリー パイプラインの定義方法に影響を与えずに、マニフェストをレンダリングできます。
Skaffold を Cloud Deploy で使用する場合、次のような利点があります。
容易なオンボーディング
ローカル開発ループから始めます。
skaffold.yaml
ファイルをチームと共有すると、一貫性を保ち、新しいチームメンバーがすぐに作業を開始できます。さまざまなデプロイ ターゲット間でのレンダリングを一貫して制御する
Skaffold プロファイルを使用して、ターゲットごとに異なるレンダリングとデプロイを実現できます。
デリバリー パイプラインの定義方法を損なわないレンダリング ツールの選択
Skaffold を使用すると、Cloud Deploy ではデリバリー パイプラインの定義をレンダリングの詳細から分離できます。この分離により、デリバリー パイプラインを中断することなくマニフェストをテストできます。
一貫したレンダリング プロセス
レンダリング ソースとコンテナは、レンダリングされたマニフェストの生成に使用されます。
デプロイのヘルスチェック
Skaffold でこれを実行し、Cloud Deploy で使用します。
Cloud Deploy での Skaffold の使用方法
レンダリング ソースとコンテナ イメージの参照は、リリースを作成するときに Cloud Deploy に渡されます。
リリース作成の一環として、Cloud Deploy は Cloud Build を呼び出します。これにより、
skaffold diagnose
およびskaffold render
が呼び出され、レンダリング ソースとそれらのイメージを使用してマニフェストをレンダリングします。Skaffold プロファイルを使用すると、さまざまなターゲットに適用されるマニフェストを区別できます。
Cloud Deploy は、静的 Skaffold モジュールをサポートしています。
Cloud Deploy はデプロイ時に
skaffold apply
を呼び出し、レンダリングされたマニフェストをターゲット クラスタに適用します。Cloud Deploy では、カスタム ターゲットを使用しない限り、他のデプロイツールによるアプリケーションのデプロイはサポートされていません。ただし、Helm や Kustomize などのツールをレンダラとして使用できます。特定のデプロイツール(Helm など)を使用せずに Cloud Deploy によってデプロイする方法については、サービス アーキテクチャをご覧ください。
Skaffold の有効活用
パイプラインのニーズに応じて Skaffold を構成します。
デリバリー パイプラインのニーズを判断します。
ターゲットがいくつるか。それぞれでレンダリングとデプロイは同じか。進行中のターゲットごとに構成が同じである場合は、Skaffold プロファイルを使用する必要はありません。必要なのは、レンダリングするマニフェストを記述する
skaffold.yaml
ファイルのみです。該当する場合は、ターゲットごとに Skaffold プロファイルを作成します
これを
skaffold.yaml
ファイルで定義し、デリバリー パイプライン定義の進行シーケンスにバインドします。Skaffold プロファイルの詳細については、Skaffold のドキュメントをご覧ください。また、Cloud Deploy でのマニフェストの管理ドキュメントには、プロファイル構成の例が記載されています。
Skaffold ロギングの詳細レベルを設定する
デフォルトでは、Skaffold のロギングレベルは
warn
に設定されています。debug
に変更するには、ターゲットの実行環境の構成でverbose: true
を設定します。
Cloud Deploy を継続的インテグレーション システムに接続します。
CI プロセスの最後に、入力される
skaffold.yaml
、レンダリング ソース、コンテナ イメージをレンダリングされるマニフェストに渡します。省略可: Skaffold を使用して、ローカル開発ループを設定します。
Cloud Deploy では、開発に Skaffold を使用することは任意です。Cloud Deploy が動作するために必要なのは、レンダリングするマニフェストを識別する
skaffold.yaml
ファイルのみです。
次のステップ
Skaffold のサイトにアクセスして、この仕組みと何ができるかをご確認ください。
Cloud Deploy で使用する Skaffold のバージョンの選択する方法、Skaffold のバージョンがいつ変更されるか、現在使用されているバージョンを判断する方法を確認する。
Helm、Kustomize、kpt などの高度なマニフェスト管理ツールと組み合わせて Skaffold プロファイルを使用する方法について学習します。
Skaffold プロファイルのチュートリアルを試してください。