インスタンスの再起動ポリシーを構成する

Cloud Run インスタンスの再起動ポリシーは、インスタンスを再起動するかどうかと、再起動するタイミングを決定します。

再起動ポリシーのオプション

次の再起動ポリシーから選択します。

  • on-failure(デフォルト): ゼロ以外のステータス コードで終了したコンテナがある場合、またはコンテナでインフラストラクチャ障害が発生した場合、インスタンスが再起動します。マルチコンテナ インスタンスの場合、コンテナの障害が発生すると、インスタンス全体が再起動されます。
  • always: コンテナが終了すると、インスタンスは常に再起動します。これには、コード 0 でのクリーンな終了も含まれます。
  • never: インスタンスは再起動しません。コンテナが終了すると、インスタンスは直ちに STOPPED 状態または FAILED 状態に移行します。

インスタンスの always または on-failure 再起動ポリシーを構成すると、インスタンスは約 7 日間のライフサイクルの終了時に自動的に再起動するため、他の方法で中断されない限り無期限に実行されます。

必要なロール

Cloud Run インスタンスの構成とデプロイに必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。

Cloud Run に関連付けられている IAM ロールと権限のリストについては、Cloud Run IAM ロールCloud Run IAM 権限をご覧ください。Cloud Run インスタンスがGoogle Cloud API(Cloud クライアント ライブラリなど)と連携している場合は、サービス ID の構成ガイドをご覧ください。ロールの付与の詳細については、デプロイ権限アクセスの管理をご覧ください。

再起動ポリシーを構成する

Google Cloud CLI または YAML を使用して、Cloud Run インスタンスの再起動ポリシーを構成します。

gcloud

新しいインスタンスをデプロイするときに再起動ポリシーを指定するには:

gcloud beta run instances deploy INSTANCE \
    --image=IMAGE_URL \
    --restart-policy=POLICY

既存のインスタンスの再起動ポリシーを更新するには:

gcloud beta run instances update INSTANCE \
    --restart-policy=POLICY

次のように置き換えます。

  • INSTANCE: インスタンスの名前。
  • IMAGE_URL: コンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/hello:latest など)。
  • POLICY: 適用する再起動ポリシー。on-failurealwaysnever から選択します。

YAML

  1. 新しいインスタンスを作成する場合は、この手順をスキップします。既存のインスタンスを更新する場合は、その YAML 構成をダウンロードします。

    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. 次の例には、YAML 構成が含まれています。

    apiVersion: run.googleapis.com/v1
    kind: Instance
    metadata:
      name: INSTANCE
      annotations:
        run.googleapis.com/launch-stage: BETA
    spec:
      containers:
      - name: CONTAINER_NAME
        image: IMAGE_URL
      restartPolicy: POLICY

    次のように置き換えます。

    • INSTANCE: Cloud Run インスタンスの名前。
    • CONTAINER_NAME: コンテナの名前。
    • IMAGE_URL: コンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/hello:latest など)。
    • POLICY: 適用する再起動ポリシー。on-failurealwaysnever から選択します。
  3. 次のコマンドを使用して、インスタンスを作成または更新します。

    gcloud beta run instances replace instance.yaml