ジョブのコンテナを構成する

このページでは、Cloud Run ジョブのエントリポイント コマンドと引数を構成する方法について説明します。

Cloud Run がコンテナを起動すると、イメージのデフォルトのエントリポイント コマンドとデフォルトのコマンド引数が実行されます。イメージのデフォルトのエントリポイントとコマンド引数をオーバーライドする場合は、コンテナ構成の command フィールドと args フィールドを使用できます。command フィールドは、コンテナによって実行される実際のコマンドを指定します。args フィールドは、そのコマンドに渡される引数を指定します。

ジョブごとにコンテナあたり最大 1,000 個の引数を使用できます。

このページでは、Cloud Run ジョブのコンテナのコマンド、引数、開始順序を構成する方法について説明します。これらの設定は、Google Cloud コンソール、Google Cloud CLI、または YAML で構成できます。

必要なロール

Cloud Run ジョブの構成に必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。

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

エントリポイントと引数を構成する

ジョブのコマンド エントリポイントと引数を構成するには:

コンソール

  1. Google Cloud コンソールで、Cloud Run の [ジョブ] ページに移動します。

    Cloud Run に移動

  2. [コンテナをデプロイ] をクリックし、[ジョブ] を選択して、ジョブの初期設定ページに入力します。既存のジョブを構成する場合は、ジョブをクリックして [編集] をクリックします。

  3. [コンテナ、変数とシークレット、接続、セキュリティ] をクリックして、ジョブのプロパティ ページを開きます。

  4. [全般] タブをクリックします。

    画像

    • コンテナで実行するコマンドを指定します(コンテナでコマンドが定義されていない場合)。オプションで、エントリポイント コマンドへの引数を指定します。
  5. [作成] または [更新] をクリックします。

gcloud

  1. 新しいジョブの start コマンドと引数を設定するには:

    gcloud run jobs create JOB_NAME --image IMAGE_URL --command COMMAND --args ARG1,ARG-N

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

    • JOB_NAME は、ジョブの名前に置き換えます。
    • COMMAND は、デフォルトのコマンドを使用していない場合に、コンテナを開始するコマンドに置き換えます。
    • ARG1 は、コンテナ コマンドに送信する引数に置き換えます。複数の引数を指定する場合は、カンマ区切りのリストを使用します。
    • IMAGE_URL は、コンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/job:latest など)に置き換えます。

既存のジョブのコマンドと引数を更新するには:

gcloud run jobs update JOB_NAME --command COMMAND --args ARG1,ARG-N 

YAML

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

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. args: 属性と command 属性を更新します。

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: JOB_NAME
    spec:
      template:
        spec:
          template:
            spec:
              containers:
              - args:
                - 'ARG1'
                - 'ARG-N'
                command:
                - COMMAND
                image: IMAGE

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

    • COMMAND は、デフォルトのコマンドを使用していない場合に、コンテナを開始するコマンドに置き換えます。
    • ARG1 は、コンテナ コマンドに送信する引数に置き換えます。必要に応じて、1 行に 1 つずつ追加の引数を指定します。

    環境変数やメモリ上限など他の構成を指定することもできます。

  3. 既存のジョブ構成を更新します。

    gcloud run jobs replace job.yaml

設定したエントリポイント コマンドと引数をクリアするには(コンテナのデフォルトに戻すには)、次のように空の文字列を指定します。

gcloud run jobs update JOB_NAME --command "" --args "" 

Terraform

Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。

Terraform 構成の google_cloud_run_v2_job リソースに次の内容を追加します。

resource "google_cloud_run_v2_job" "default" {
 name     = "JOB_NAME"
 location = "us-central1"

 template {
   template {
     containers {
       image = "us-docker.pkg.dev/cloudrun/container/job"
       command = ["COMMAND"]
       args = ["ARG1", "ARG-N"]
     }
   }
 }
}

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

  • JOB_NAME: Cloud Run ジョブの名前。
  • COMMAND は、デフォルトのコマンドを使用していない場合に、コンテナを開始するコマンドに置き換えます。
  • ARG1 は、コンテナ コマンドに送信する引数に置き換えます。必要に応じて、追加の引数を指定します。

引数に等号またはカンマを使用する

引数で等号を使用する場合は、次の形式を使用して指定します。

gcloud run deploy  \
  --args="--repo-allowlist=github.com/example/example_demo"

引数にカンマが含まれる場合、カンマをエスケープする方法については、環境変数の構成をご覧ください。

コンテナ設定を表示する

Cloud Run ジョブの現在のコンテナ設定を表示するには:

コンソール

  1. Google Cloud コンソールで、Cloud Run の [ジョブ] ページに移動します。

    Cloud Run の [ジョブ] に移動

  2. 目的のジョブをクリックして、[ジョブの詳細] ページを開きます。

  3. [構成] タブをクリックします。

  4. 構成の詳細でシークレットの設定を見つけます。

gcloud

  1. 次のコマンドを使用します。

    gcloud run jobs describe JOB_NAME
  2. 返された構成で、コンテナ設定を見つけます。

サイドカー デプロイでコンテナの起動順序を構成する

サイドカー デプロイでコンテナの開始順序を指定するには、コンテナの依存関係の特性を利用します。依存関係のあるコンテナを指定し、それらが依存するコンテナをリストします。依存関係のないコンテナは常に最初に同時実行として起動されます。

起動順序は、Google Cloud コンソール、Google Cloud CLI、または YAML で指定できます。

コンソール

  1. Google Cloud コンソールで [Cloud Run] ページに移動します。

    Cloud Run に移動

    • 既存のジョブの場合は、[ジョブ] をクリックします。次に、リスト内のジョブをクリックし、[ジョブ構成を表示して編集] を選択して、[ジョブの編集] フォームを表示します。
    • 新しいジョブの場合は、[コンテナをデプロイ] をクリックし、[ジョブ] を選択して [ジョブを作成] フォームを表示します。
  2. 新しいジョブの場合は、ジョブ名、ジョブ コンテナ URL、リージョン、タスク数を指定します。[コンテナ、ボリューム、ネットワーキング、セキュリティ] タブで、次の操作を行います。

    1. メインジョブ コンテナを構成します。
    2. デプロイするサイドカー コンテナを追加するには、[コンテナを追加] をクリックします。
    3. コンテナが他のコンテナに依存している場合は、[コンテナの起動順序] メニューを使用して、Cloud Run が現在のコンテナの前に起動する必要があるコンテナを選択します。
  3. 既存のジョブの場合は、コンテナごとに次の操作を行います。

    1. [コンテナの起動順序] メニューに表示されているコンテナを確認します。
    2. コンテナが他のコンテナに依存している場合は、[コンテナの起動順序] メニューを使用して、それらのコンテナを選択します。
  4. その他の必要な構成を完了し、新しいジョブの場合は [作成]、既存のジョブの場合は [更新] をクリックします。デプロイが完了するまで待ちます。

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. 起動順序を指定して複数のジョブをサービスにデプロイするには、次のコマンドを実行します。

    gcloud beta run create JOB \
       --container CONTAINER_1_NAME --image='JOB_IMAGE' \
       --container CONTAINER_2_NAME --image='SIDECAR_IMAGE' --depends-on=CONTAINER_1_NAME \
       --container CONTAINER_3_NAME --image='SIDECAR_IMAGE' --depends-on=CONTAINER_1_NAMECONTAINER_2_NAME

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

    • JOB は、デプロイ先のジョブの名前に置き換えます。このパラメータは完全に省略できますが、省略するとジョブ名の入力を求められます。
    • CONTAINER_1_NAME は、メインジョブ コンテナの名前に置き換えます。
    • JOB_IMAGE は、メインジョブ コンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/job:latest など)に置き換えます。
    • CONTAINER_2_NAME は、サイドカー コンテナの名前(sidecar など)に置き換えます。
    • SIDECAR_IMAGE は、サイドカー コンテナ イメージへの参照に置き換えます。

    deploy コマンドで各コンテナを構成する場合は、container パラメータの後に各コンテナの構成を指定します。

YAML

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

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. container-dependencies 属性を更新します。

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      annotations:
        run.googleapis.com/launch-stage: BETA
      name: JOB
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/container-dependencies: '{"CONTAINER1":["CONTAINER2"], "CONTAINER3":["CONTAINER1","CONTAINER2"]}'
    

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

    • CONTAINER1 は、1 つ以上のコンテナに依存する最初のコンテナの名前に置き換えます。コンテナ名は YAML で設定できます。名前を指定しなかった場合、Cloud Run は自動的に名前を生成します。
    • CONTAINER2 は、CONTAINER1 の前に起動する必要があるコンテナの名前に置き換えます。
    • CONTAINER3 は、1 つ以上のコンテナに依存する 2 番目のコンテナの名前に置き換えます。

    YAML スニペットの例では、CONTAINER2 が最初に起動し、次に CONTAINER1 が起動して、最後に CONTAINER3 が起動しています。

  3. 次のコマンドを使用して、ジョブを作成または更新します。

    gcloud run jobs replace job.yaml