複数のターゲットに同時にデプロイする

Cloud Deploy を使用すると、複数のターゲットを表すように構成されたターゲットにデプロイできます。アプリケーションは、これらのターゲットに並行して(同時に)デプロイされます。パイプラインのステージとして特定するターゲットは、マルチ ターゲットと呼ばれ、マルチ ターゲットが構成しているターゲットは、子ターゲットと呼ばれます。

Cloud Deploy がサポートする任意のターゲット タイプで並行デプロイを使用できます。

並行デプロイを選ぶ理由

たとえば、アプリケーションを複数の本番環境ターゲットにデプロイするため、並行デプロイを使用できます。この場合、進捗がない(例: 開発からステージング、さらに本番環境に)ため、各ターゲットに連続してデプロイする必要はありません。

この並行デプロイは、通常のデリバリー パイプライン進行の一部になります。
dev -> staging -> prod [prod1, prod2, prod3, prod4, ...]

並行デプロイに使用される Cloud Deploy リソース

並行デプロイでは、次の Cloud Deploy 専用リソースが使用されます。

  • マルチターゲット

    マルチターゲットは、ターゲット構成 YAML の最上位にあるプロパティ multiTarget で構成されたターゲットであり、ランタイム クラスタまたはサービスを参照するのではなく、multiTarget.targetIds を使用して、1 つ以上の他のターゲットを参照します。

  • 子ターゲット

    子ターゲットは、マルチターゲットによって multiTarget.targetIds として参照されるターゲットです。

  • コントローラのロールアウト

    コントローラのロールアウトは、マルチターゲットに対応するロールアウトです。

    コントローラのロールアウトでできる操作とできない操作の詳細については、制限事項をご覧ください。

  • 子ロールアウト

    子ロールアウトでできる操作とできない操作の詳細については、制限事項をご覧ください。

並行デプロイを設定する

並行デプロイの設定では、1 つのマルチターゲットと、必要な子ターゲットの数(上限まで)を定義します。ターゲット定義は、次の点を除いて、すべてのターゲットと同じです。

  • マルチターゲットには multiTarget プロパティが含まれます。
  • 子ターゲットには multiTarget プロパティは含まれませんが、multiTarget.targetIds プロパティを使用してマルチターゲットから参照されます。
  • マルチターゲットは承認用に構成できますが、子ターゲットは構成できません。子ターゲットに requireApproval:true を含めることはできません。

マルチターゲットと子ターゲットには、カスタム実行環境構成を含めることができます。子ターゲットが実行環境を指定しない場合、子ターゲットはマルチターゲット定義で定義されているもの、またはデフォルトのものを継承します。詳しくは、実行環境と並行デプロイをご覧ください。

マルチターゲットを構成する

マルチターゲットは、デリバリー パイプラインのステージとして特定される単一のターゲットですが、1 つ以上の子ターゲットを指します。

マルチターゲット構成には multiTarget プロパティが含まれます。マルチターゲットに gkerun、または anthosCluster プロパティを指定することはできません。 マルチターゲットの構成は、デプロイ先のランタイムに関係なく同じです。

デリバリー パイプライン YAML または別の YAML ファイルで、multiTarget を含む基本的なターゲット定義を作成します。

apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
 name: TARGET_NAME
description: TARGET_DESCRIPTION
multiTarget:
 targetIds: [ CHILD_TARGET1, CHILD_TARGET2, CHILD_TARGETn ]

この YAML では...

  • TARGET_NAME は、このマルチターゲットの名前です。これは、デリバリー パイプライン定義stages.targetId プロパティで使用されます。

  • CHILD_TARGET1, CHILD_TARGET2,...CHILD_TARGETn は、このマルチターゲットがデプロイする子ターゲットの名前です。各名前は、子ターゲット定義の name プロパティに対応します。

multiTarget.targetIds プロパティがあると、このターゲットはマルチターゲットになります。

子ターゲットを構成する

マルチターゲット構成の子として特定された各ターゲットについて、子ターゲットとして別のターゲットを構成します。

デリバリー パイプライン YAML または別の YAML ファイルで、基本的なターゲット定義を作成します。

GKE

apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata