この記事では、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 構成ではレンダリングするマニフェストとその方法を定義します。これにより、デリバリー パイプラインの定義方法に影響を与えずに、マニフェストをレンダリングできます。
以下に、Cloud Deploy で使用する場合の Skaffold の利点をいくつか示します。
容易なオンボーディング
ローカルの開発ループから始めます。
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 でのマニフェストの管理のドキュメントには、プロファイル構成の例も含まれています。
Cloud Deploy を継続的インテグレーション システムに接続します。
CI プロセスの最後に、入力される
skaffold.yaml
、レンダリング ソース、コンテナ イメージをレンダリングされるマニフェストに渡します。省略可: Skaffold を使用してローカル開発ループを設定します。
Cloud Deploy では、開発に Skaffold を使用するかどうかは任意です。Cloud Deploy が動作するために必要なのは、レンダリングするマニフェストを識別する
skaffold.yaml
ファイルのみです。
次のステップ
Skaffold のサイトにアクセスして、この仕組みと何ができるかをご確認ください。
Cloud Deploy で使用する Skaffold のバージョンの選択する方法、Skaffold のバージョンがいつ変更されるか、現在使用されているバージョンを判断する方法を確認する。
Helm、Kustomize、kpt などの高度なマニフェスト管理ツールと Skaffold プロファイルを使用する方法については、こちらをご覧ください。