デプロイの自動化

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

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

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

詳細については、これらの自動化の動作を 定義するルールを設定する方法をご覧ください。

自動化できるアクション

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

  • リリースを自動的にプロモートする

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

  • スケジュールに基づいてリリースをプロモートする

    cron スケジュールに従ってリリースをプロモートするように Cloud Deploy を構成できます。

  • ロールアウトの進行

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

  • ロールアウトを修復する

    失敗したロールアウトを自動的に再試行するように Cloud Deploy を構成できます。これには、ロールアウトを指定した回数だけ再試行することや、その回数の再試行が失敗した場合に自動的にロールバックすることが含まれます。

これらのアクションの詳細と構成方法については、自動化ルールをご覧ください。

自動化の仕組み

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

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

  1. 自動化を 構成する

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

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

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

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

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

    ロールアウトが成功し、自動化が promoteReleaseRule の場合:

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

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

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

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

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

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

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

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

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

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

    ロールアウトが失敗し、repairRollout ルールを含む自動化がある場合:

    1. 構成された wait時間(ある場合)の後に、ロールアウトが再試行されます。

      この repairRollout ルールで特定のフェーズまたはジョブが構成されている場合は、それらのフェーズまたはジョブのみが再試行されます。ジョブまたはフェーズが指定されていない場合のデフォルトでは、ロールアウトのすべてのフェーズとジョブが再試行されます。

      再試行は省略可能であるため、自動化が再試行するように構成されていない場合、このステップは行われません。

    2. 最初の再試行が失敗した場合、実行は構成された wait 時間だけ待機してから、もう一度試行します。

    3. Cloud Deploy が再試行 attempts を使い果たすまで、再試行が繰り返されます。

      すべての試行が失敗し、attempts が使い果たされると、ロールアウトは失敗します。

      再試行中、ロールアウト の状態IN_PROGRESS、最後の再試行の後にロールアウトが成功するか失敗するまでになります。フェーズの状態は、再試行中は IN_PROGRESS ですが、ロールアウトが失敗するたびに FAILED になります。

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

次のステップ