デリバリー パイプラインの構成

パイプライン構成ファイルでは、Google Cloud Deploy デリバリー パイプライン、デプロイするターゲット、これらのターゲットの進行状況を定義します。

デリバリー パイプライン構成ファイルの構造

Google Cloud Deploy の主な構成ファイルは、デリバリー パイプラインの構成です。

このファイルには、ターゲット定義を含めることも、別のファイルに含めることもできます。慣例として、デリバリー パイプライン構成とターゲット構成の両方を含むファイルは clouddeploy.yaml と呼ばれ、ターゲットのないパイプライン構成は delivery-pipeline.yaml と呼ばれます。これらのファイルには任意の名前を付けることができます。

次の構成には、ターゲットの定義が含まれています。

    apiVersion: deploy.cloud.google.com/v1
    kind: DeliveryPipeline
    metadata:
     name:
     annotations:
     labels:
    description:
    serialPipeline:
     stages:
     - targetId:
       profiles: []
     - targetId:
       profiles: []
     ---

     apiVersion: deploy.cloud.google.com/v1
     kind: Target
     metadata:
      name:
      annotations:
      labels:
     description:
     requireApproval:
     gke:
      cluster: projects/[project_name]/locations/[location]/clusters/[cluster_name]

     executionConfigs:
     - privatePool:
         workerPool:
         serviceAccount:
         artifactStorage:
       usages:
       - [RENDER | DEPLOY]
     - defaultPool:
         serviceAccount:
         artifactStorage:
       usages:
       - [RENDER | DEPLOY]

     ---

この YAML には 2 つの主要コンポーネントがあります。

  • 主なデリバリー パイプラインと進捗状況

    構成ファイルには、任意の数のパイプライン定義を含めることができます。

  • ターゲット定義

    わかりやすくするために、この例では、1 つのターゲットのみが示されていますが、任意の数を指定できます。ターゲットは別個のファイルで定義することもできます。

これらのコンポーネントは、このドキュメントの残りの部分で定義します。

パイプラインの定義と進行状況

メインのパイプライン定義には、name などのパイプライン メタデータに加えて、デプロイ シーケンス順ですべてのターゲットのリストが含まれます。つまり、最初に表示されるターゲットは最初のデプロイ ターゲットです。そのターゲットにデプロイしてリリースを昇格すると、Google Cloud Deploy はリスト内の次のターゲットにデプロイします。

metadata.name

name フィールドには、プロジェクトとロケーションごとに一意である必要がある文字列を指定します。

metadata.annotationsmetadata.labels

デリバリー パイプラインの構成にはアノテーションとラベルを含めることができます。アノテーションとラベルは、パイプラインの登録後に、デリバリー パイプライン リソースと一緒に保存されます。

詳細については、Google Cloud Deploy でのラベルとアノテーションの使用をご覧ください。

description

このデリバリー パイプラインを説明する任意の文字列。この説明は、Google Cloud Console のデリバリー パイプラインの詳細に表示されます。

stages

このデリバリー パイプラインがデプロイされるように構成されているすべてのターゲットのリスト。

リストは、必要な配信シーケンス順序にする必要があります。たとえば、devstagingproduction というターゲットがある場合、同じ順序で一覧表示して、最初のデプロイ先が dev、最後のデプロイ先が production になるようにします。

stages.targetId フィールドに、対応するターゲット定義の metadata.name フィールドの値を入力します。次に、targetIdprofiles を追加します。

serialPipeline:
 stages:
 - targetId:
   profiles: []

targetId:

デリバリー パイプラインのこのステージに使用する特定のターゲットを特定します。値は、ターゲット定義metadata.name プロパティです。

profiles

0 個以上の Skaffold プロファイル名のリストを skaffold.yaml から取得します。Google Cloud Deploy は、リリースの作成時に skaffold render を使用してプロファイルを使用します。Skaffold プロファイルを使用すると、単一の構成ファイルを使用して、ターゲット間で構成を変更できます。

ターゲットの定義

デリバリー パイプラインの定義ファイルには、ターゲットの定義を含めることができます。また、別のファイルでターゲットを指定することもできます。プロジェクト内でターゲット名を繰り返すことはできますが、デリバリー パイプライン内で一意である必要があります。

複数のデリバリー パイプライン間でターゲットを再利用できます。ただし、ターゲットを 1 つのデリバリー パイプラインの進行状況から参照できるのは 1 回だけです。

     apiVersion: deploy.cloud.google.com/v1
     kind: Target
     metadata:
      name:
      annotations:
      labels:
     description:
     requireApproval:
     gke:
      cluster: projects/[project_name]/locations/[location]/clusters/[cluster_name]

     executionConfigs:
     - privatePool:
         workerPool:
         serviceAccount:
         artifactStorage:
       usages:
       - [RENDER | DEPLOY]
     - defaultPool:
         serviceAccount:
         artifactStorage:
       usages:
       - [RENDER | DEPLOY]

metadata.name

このターゲットの名前。この名前はグローバルに一意でなければなりません。

metadata.annotationsmetadata.labels

ターゲット構成は Kubernetes のアノテーションラベルをサポートしていますが、Google Cloud Deploy では必要ありません。

アノテーションとラベルは、ターゲット リソースと一緒に保存されます。詳細については、Google Cloud Deploy でのラベルとアノテーションの使用をご覧ください。

description

このフィールドには、このターゲットの使用法を示す任意の文字列を指定できます。

requireApproval

このターゲットへの昇格に手動の承認が必要かどうか。truefalse のいずれかです。

このプロパティは省略可能です。 デフォルトは false です。

gke

アプリケーションがデプロイされているクラスタを識別するリソースパス:

gke:
  cluster: projects/[project_name]/locations/[location]/clusters/[cluster_name]
  • project_name

    クラスタが存在する Google Cloud プロジェクト。

  • location

    クラスタが配置されているロケーション。例: us-central1クラスタはゾーン(us-central1-c)にすることもできます。

  • cluster_name

    Google Cloud Console のクラスタのリストに表示されるクラスタの名前。

次に例を示します。

gke:
  cluster: projects/cd-demo-01/locations/us-central1/clusters/prod

executionConfigs

このターゲットのデフォルト以外の実行環境を指定するための一連のフィールド。

  • privatePool | defaultPool

    使用するプール(プライベート プールまたはデフォルト プールのいずれであるか)の構成。1 つのターゲットには RENDERDEPLOY のどちらも指定できます。defaultPool を構成するときに、代替のサービス アカウントまたはストレージのロケーション、またはその両方を指定できます。

    • workerPool

      このターゲットに使用する Cloud Build のプライベート ワーカープールを識別するリソースパス。次に例を示します。

      projects/p123/locations/us-central1/workerPools/wp123

      defaultPool のサービス アカウントまたはストレージを構成する場合は、このプロパティを省略します。このプロパティは privatePool で必須であり、defaultPool では省略されます。

    • serviceAccount

      このターゲットのオペレーションに使用するサービス アカウントの名前。

    • artifactStorage

      このターゲットのオペレーションに、デフォルトのバケットの代わりに使用する Cloud Storage バケット。

  • usages

    RENDERDEPLOY、またはその両方でこのオペレーションを使用してこのターゲットに対して実行するオペレーションを指定します。カスタム実行環境をレンダリングとデプロイの両方に使用するように指定するには、次のように構成します。

    usages:
    - RENDER
    - DEPLOY
    

次のステップ