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