デリバリー パイプラインとターゲット構成

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

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

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

各部の名称

Google Cloud Deploy では、主に 2 つの構成ファイルを使用します。

これらは別々のファイルにすることも、デリバリー パイプラインとターゲットを同じファイルに構成することもできます。

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

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

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

apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
 name:
 annotations:
 labels:
description:
requireApproval:
#
# Runtimes
# one of the following runtimes:
gke:
 cluster:
 internalIp:
#
# or:
anthosCluster:
 membership:
#
# or:
run:
 location:
# (End runtimes. See documentation in this article for more details.)
#
executionConfigs:
- usages:
  - [RENDER | DEPLOY | VERIFY]
  workerPool:
  serviceAccount:
  artifactStorage:
  executionTimeout:

---

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

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

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

  • ターゲット定義

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

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

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

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

以下に、デリバリー パイプラインの構成プロパティを示します。ターゲット定義は含まれません。

metadata.name

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

metadata.annotationsmetadata.labels

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

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

description

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

suspended

ブール値。true によりデリバリー パイプラインを停止する場合、リリースの作成、プロモート、ロールバック、再デプロイには使用できません。また、デリバリー パイプラインが停止している場合、そのパイプラインから作成されたロールアウトを承認または拒否することはできません。

デフォルトは false です。

serialPipeline

シリアル デリバリー パイプラインの定義の先頭。このスタンザは必須です。

stages

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

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

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

serialPipeline:
 stages:
 - targetId:
   profiles: []
   strategy:
     standard:
       verify:

targetId

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

strategy

デプロイ戦略を指定するためのプロパティが含まれています。サポートされている戦略は standard: のみです。

strategy.standard.verifytrue に設定すると、ターゲットでデプロイの検証が有効になります。デプロイ戦略が指定されていない場合は、検証が false に設定された standard デプロイ戦略が使用されます。次のデリバリー パイプライン構成が有効です。

serialPipeline:
 stages:
 - targetId:
   profiles: []
 - targetId:
   profiles: []

verify

オプションのブール値で、このターゲットに対してデプロイの検証をサポートするかどうかを表します。デフォルトは false です。

デプロイの検証を有効にするには、skaffold.yamlverify スタンザも必要です。このプロパティを指定しないと、検証ジョブは失敗します。

profiles

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

ターゲットの定義

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

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

GKE ターゲットの場合

次の YAML は、GKE クラスタにデプロイするターゲットを構成する方法を示しています。

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

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

metadata.name

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

metadata.annotationsmetadata.labels

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

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

description

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

requireApproval

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

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

gke

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 コンソールのクラスタのリストに表示されるクラスタの名前。

次に例を示します。

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

実行環境プロパティの説明については、この記事の executionConfigs をご覧ください。

internalIp

指定された GKE クラスタがプライベート IP アドレスを使用するかどうか。このプロパティは省略可能です。 デフォルトでは、Google Cloud Deploy はクラスタに公開されている IP アドレスを使用します。プライベート IP アドレスがあり、使用する場合は、これを true に設定します。

Cloud Run ターゲット

次の YAML は、Cloud Run サービスにデプロイするターゲットを構成する方法を示しています。

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

     executionConfigs:
     - usages:
       - [RENDER | DEPLOY | VERIFY]
       workerPool:
       serviceAccount:
       artifactStorage:
       executionTimeout:

metadata.name

このターゲットの名前。この名前はリージョンごとに一意である必要があります。

metadata.annotationsmetadata.labels

ターゲット構成ではアノテーションとラベルがサポートされますが、Google Cloud Deploy では必要ありません。

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

description

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

requireApproval

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

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

run

Cloud Run サービスの場合のみ、サービスが作成されるロケーション。

run:
  location: projects/[project_name]/locations/[location]
  • project_name

    サービスが適用される Google Cloud プロジェクト。

  • location

    サービスが存在する場所。例: us-central1

実行環境プロパティの説明については、この記事の executionConfigs をご覧ください。

Anthos ターゲットの場合

Anthos クラスタにデプロイするターゲット構成は、GKE ターゲットのターゲット構成と似ていますが、gke.cluster ではなく、anthosCluster.membership プロパティを使用する点が異なります。リソースパスが異なり、internalIp は適用できません。

anthosCluster:
  membership: projects/[project_name]/locations/global/memberships/[membership_name]
  • project_name

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

  • /location/global/

    クラスタが登録されているロケーション。global、共通の注意事項。

  • membership_name

    Anthos クラスタ メンバーシップの名前。

次に例を示します。

anthosCluster:
  membership: projects/cd-demo-01/locations/global/memberships/prod

Anthos クラスタへのデプロイの詳細については、Anthos ユーザー クラスタへのデプロイをご覧ください。

executionConfigs

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

  • usages

    RENDER または DEPLOY のいずれか、または両方。さらに、ターゲットで検証が有効になっている場合は VERIFY。これらの実行環境を使用して、このターゲットに対して実行するオペレーションが示されます。カスタム実行環境をレンダリング、デプロイ、検証の両方に使用するように指定するには、次のように構成します。

    usages:
    - RENDER
    - DEPLOY
    - VERIFY
    

    パイプライン ステージで検証が有効になっており、usages スタンザで VERIFY を指定していない場合、Google Cloud Deploy では検証にデフォルトの実行環境が使用されます。ただし、RENDER または DEPLOY、もしくは両方にカスタムの実行環境がある場合は、VERIFY に対していずれか 1 つを指定する必要があります。VERIFY は、RENDERDEPLOY と同じ usages にすることも、単独で使用することもできます。

    RENDER または DEPLOY のいずれか、あるいは両方がカスタム実行環境で指定されていない限り、usages.VERIFY を指定することはできません。

  • workerPool

    使用するワーカープールの構成。これにより、このターゲットに使用する Cloud Build ワーカープールを識別するリソースパスが取得されます。次に例を示します。

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

    デフォルトの Cloud Build プールを使用するには、このプロパティを省略します。

    1 つのターゲットには、2 つの workerPoolRENDER 用と DEPLOY 用)を指定できます。デフォルト プールを構成するときは、代替のサービス アカウントまたはストレージの場所、または両方を指定できます。

  • serviceAccount

    このターゲットに使用するオペレーション(RENDER または DEPLOY)に使用するサービス アカウントの名前。

  • artifactStorage

    デフォルトのバケットの代わりに、このターゲット(RENDER または DEPLOY)に使用する Cloud Storage バケット。

  • executionTimeout

    省略可。Cloud Build が Google Cloud Deploy に対して実行するオペレーションのタイムアウトを秒単位で設定します。デフォルトでは、3600 秒(1 時間)です。
    例: executionTimeout: "5000s"

サポートされる代替構文

このドキュメントで説明する executionConfigs 構成は新規です。上記の構文は引き続きサポートされます。

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

次のステップ