デプロイの自動化

このドキュメントでは、デプロイの自動化の概要について説明します。

特定のデリバリー パイプラインでリリース関連のタスクとロールアウト関連のタスクを自動的に実行するように Cloud Deploy を構成できます。これらのタスクには、リリースのプロモーションフェーズの進行が含まれます。

Cloud Deploy でのリリース自動化に使用されるリソースの詳細については、こちらをご覧ください。

自動化の仕組みを定義するルールの設定方法については、こちらをご覧ください。

自動化できるアクション

Cloud Deploy では、次のリリースとロールアウトのアクティビティを自動化できます。

  • リリースを昇格する

    ターゲットへのロールアウトが成功すると、リリースを自動的にプロモートさせるように Cloud Deploy を構成できます。たとえば、devstagingprod の 3 つのターゲットがある場合、staging へのデプロイが成功すると、人手を介さずにリリースを prod にプロモートさせるように自動化を構成できます。

  • ロールアウトの進行

    前のターゲットへのロールアウトが成功すると、次のフェーズへとロールアウトを進行させるように Cloud Deploy を構成できます。フェーズ進行は、カナリア デプロイ戦略を使用するターゲットでのみ使用できます。

自動化の仕組み

各自動化は、それが使用されるデリバリー パイプラインに関連付けられます。複数のデリバリー パイプライン間で自動化を共有することはできません。

自動化の構成と実行の一般的なプロセスは次のとおりです。

  1. 自動化を構成する

    この自動化は、1 つのデリバリー パイプラインに関連付けられます。

  2. gcloud deploy apply を使用してその自動化を登録します。

    これにより、自動化リソースが作成されます。

  3. リリースを作成して、この自動化に関連付けられたデリバリー パイプラインを呼び出します。

  4. 少なくとも 1 つのターゲットでロールアウトが成功します。

  5. この自動化が構成されているターゲットは、次の動作をします。

    自動化が promoteReleaseRule の場合:

    1. ソース ターゲットでロールアウトが成功するまで実行を待機します。ソース ターゲットとは、AutomationRule ではなく、自動化用に構成された selector.targets です。

    2. wait 時間が構成されている場合、その時間も実行を待機します。

    3. リリースは、進行中のパイプラインの次のターゲット(または、指定されている場合は指定のターゲット)に自動的にプロモートされます。

    自動化が advanceRolloutRule で、ターゲットがカナリア デプロイ戦略を用いている場合:

    1. 指定されたソース フェーズが存在する場合、実行を待機します。

      sourcePhase プロパティは省略可能です。ソースフェーズが指定されていない場合、ロールアウトの各フェーズは自動的に進行します。ソースフェーズが IN_PROGRESS の場合、wait 時間が経過するとフェーズの自動進行が行われます。

    2. wait 時間が構成されている場合、その時間も実行を待機します。

      カナリア デプロイを自動化する場合は、この待機時間を使用して各カナリア フェーズの期間を指定します。

    3. ロールアウトはそのソース フェーズからロールアウトの次のフェーズに自動的に進められます。

    4. 追加のソースフェーズがある場合は、同じ待機時間を含めて同じように扱われます(該当する場合)。

自動化リソース

自動化に特化した Cloud Deploy リソースは 2 つあります。

  • 自動化

    Automation はデリバリー パイプラインの子リソースであり、次の情報が含まれています。

    • 自動化が使用されているターゲットへのポインタ
    • 自動化の処理内容と方法を制御するルール

    自動化リソースの構成については、自動化リソースについてのドキュメントをご覧ください。

    自動化構成(kind: Automation)を含むファイルに対して gcloud deploy apply を実行すると、Cloud Deploy はデリバリー自動化リソースを作成します。 この自動化リソースは、パイプラインとターゲットを 1 つまたは複数の自動化ルールに関連付けます。

  • 自動化の実行

    AutomationRun は自動化のインスタンスです。これは、対応する Automation リソースへのポインタと、それを生成したロールアウトに関する情報、その他のメタデータです。

    自動化がトリガーされると、自動化の実行が作成されます。

自動化リソースの詳細を確認する

自動化ルール

自動化ルールでは、デリバリー パイプラインに対して自動的に実行できるアクションと、自動化の実行方法を定義します。

自動化ルールの詳細をご確認ください。

Identity and Access Management のロールと権限が必要

Cloud Deploy デリバリー パイプラインを実行するために必要な権限、自動化されるタスク(ロールアウト進行など)を行うために必要な権限に加えて、 Automation リソースと AutomationRun リソースに対する特定のオペレーションを実行するためには次のようないくつかの権限が必要です。

  • clouddeploy.automations.create
  • clouddeploy.automations.delete
  • clouddeploy.automations.get
  • clouddeploy.automations.list
  • clouddeploy.automations.update
  • clouddeploy.automationRuns.cancel
  • clouddeploy.automationRuns.get
  • clouddeploy.automationRuns.list

詳細については、IAM のロールと権限をご覧ください。これらの権限を含む Cloud Deploy のロールなどを確認できます。

自動化の作成

自動化を作成したり、利用可能な自動化ルールのいずれかを使用するためには、自動化を構成してから gcloud deploy apply を使用して自動化リソースを作成します。

次のセクション(自動化の構成)と自動化ルールの構成をご覧ください。

自動化の構成

Automation リソースを構成する方法の詳細については、構成ファイルのスキーマをご覧ください。

自動化ルールの構成

この自動化の構成に加えて、自動化ルールを指定します。構成は、利用可能なルールによって異なります。

使用可能な各ルールの説明については、自動化ルールの使用をご覧ください。

自動化を一時停止する

既存のリソースを削除せずに一時停止できます。これは、デリバリー パイプラインに影響を与えることなく自動化をテストするのに役立ちます。自動化を一時停止すると、自動化は実行されませんが、プラットフォーム ログは生成されます。

  1. Automation 構成で、suspended プロパティを true に更新します。

  2. その構成ファイルに対して gcloud deploy apply を実行します。

  3. プラットフォーム ログは、自動化が一時停止されている場合でも、自動化がインスタンス化されたときに生成されます。これを利用して、デリバリー パイプラインに影響を与えることなく、自動化のテストとデバッグを行えます。

次のステップ