Google Cloud Deploy で Skaffold を使用する

この記事では、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 では、他のデプロイツールによるアプリケーションのデプロイはサポートされていません。ただし、HelmKustomize などのツールをレンダラとして使用できます。特定のデプロイツール(Helm など)を使用せずに Google Cloud Deploy によってデプロイする方法については、サービス アーキテクチャをご覧ください。

Skaffold を有効に活用する

  1. パイプラインのニーズに応じて Skaffold を構成します。

    1. デリバリー パイプラインのニーズを特定します。

      ターゲットがいくつるか。それぞれでレンダリングとデプロイは同じか。各ターゲットで構成が同じである場合は、Skaffold プロファイルを使用する必要はありません。レンダリングするマニフェストを記述する skaffold.yaml ファイルのみが必要です。

    2. 該当する場合は、ターゲットごとに Skaffold プロファイルを作成します

      これを skaffold.yaml ファイルで定義し、デリバリー パイプライン定義の進行シーケンスにバインドします。

      Skaffold プロファイルの詳細については、Skaffold のドキュメントをご覧ください。また、Google Cloud Deploy でのマニフェストの管理には、プロファイル構成の例も含まれています。

  2. Cloud Deploy を継続的インテグレーション システムに接続します。

    CI プロセスの最後に、入力される skaffold.yaml、レンダリング ソース、コンテナ イメージをレンダリングされるマニフェストに渡します。

  3. 省略可: Skaffold を使用してローカル開発ループを設定します。

    Google Cloud Deploy では、開発に Skaffold を使用することはオプションです。Google Cloud Deploy の動作に必要なのは、レンダリングするマニフェストを識別する skaffold.yaml ファイルのみです。

次のステップ