Cloud Deploy での Skaffold の使用

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

Skaffold の有効活用

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

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

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

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

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

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

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

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

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

    Cloud Deploy では、開発に Skaffold を使用するかどうかは任意です。Cloud Deploy が動作するために必要なのは、レンダリングするマニフェストを識別する skaffold.yaml ファイルのみです。

次のステップ

  • Skaffold のサイトにアクセスして、この仕組みと何ができるかをご確認ください。

  • Cloud Deploy で使用する Skaffold のバージョンの選択する方法、Skaffold のバージョンがいつ変更されるか、現在使用されているバージョンを判断する方法を確認する

  • Helm、Kustomize、kpt などの高度なマニフェスト管理ツールと Skaffold プロファイルを使用する方法については、こちらをご覧ください。

  • Skaffold プロファイルのチュートリアルを試す。