コンテナの構成

コンテナポート、コンテナ エントリ ポイントのコマンド、その引数の構成方法について学習します。

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

コンテナポートの構成

構成を変更すると、新しいリビジョンが作成されます。明示的に更新しない限り、以降のリビジョンでも、この構成が自動的に設定されます。

コンテナは、特定のハードコードされたポートではなく、PORT 環境変数で定義されたポートをリッスンする必要があります。ただし、これができない場合は、どのポートのリクエストをコンテナに送信するかを構成できます。

Console

  1. Cloud Run for Anthos on Google Cloud に移動

  2. デプロイ先の新しいサービスを構成する場合は、[サービスの作成] をクリックします。既存のサービスを構成する場合は、そのサービスをクリックし、[新しいリビジョンの編集とデプロイ] をクリックします。

  3. [詳細設定] で [コンテナ] をクリックします。

    画像

  4. リクエストを送信するポートを指定します(デフォルト値 8080 でない場合)。これにより、PORT 環境変数も設定されます。

  5. [作成] または [デプロイ] をクリックします。

コマンドライン

  • 既存のサービスの場合は、次のパラメータを指定して gcloud kuberun core services update コマンドを実行し、ポートの設定を更新します。

    gcloud kuberun core services update SERVICE --port PORT
    

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

    • SERVICE は、サービスの名前に置き換えます。
    • PORT は、リクエストを送信するポートに置き換えます。デフォルトのポートは 8080 です。
  • 新しいサービスの場合は、--port パラメータを指定して gcloud kuberun core services create コマンドを実行し、ポートを設定します。

    gcloud kuberun core services create SERVICE --image=IMAGE_URL --port PORT
    

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

    • SERVICE は、サービスの名前に置き換えます。
    • IMAGE_URL は、コンテナ イメージへの参照(gcr.io/myproject/my-image:latest など)に置き換えます。
    • PORT は、リクエストを送信するポートに置き換えます。デフォルトのポートは 8080 です。

YAML

YAML ファイルを使用して既存のサービスの構成を変更するには、現在の構成のコピーを取得し、その構成を変更してローカル ファイルに保存してから、これらの変更をサービスにデプロイします。

  1. YAML として表示し、サービスの構成をローカル ファイルにコピーします。例を示します。service.yaml:

    gcloud kuberun core services describe SERVICE --format yaml

    SERVICE は、Cloud Run for Anthos サービスの名前に置き換えます。

  2. ローカル ファイルで containerPort: 属性を更新します。

    apiVersion: serving.knative.dev/v1
    kind: Service
    spec:
      template:
        spec:
          containers:
          - image: IMAGE_URL
            ports:
            - containerPort: PORT
    

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

    • IMAGE_URL は、コンテナ イメージへの参照(gcr.io/myproject/my-image:latest など)に置き換えます。
    • PORT は、リクエストを送信するポートに置き換えます。
  3. 次のコマンドを使用して、サービスを新しい構成に置き換えます。

    gcloud beta run services replace service.yaml

コンテナのエントリポイント コマンドと引数の構成

構成を変更すると、新しいリビジョンが作成されます。明示的に更新しない限り、以降のリビジョンでも、この構成が自動的に設定されます。

Cloud Run for Anthos on Google Cloud は、コンテナの起動時にイメージのデフォルト エントリポイント コマンドを実行します。コンテナ イメージに定義されている既存のエントリポイント コマンドと引数を指定またはオーバーライドするには、Cloud Run for Anthos コンテナ構成で commandargs の設定を構成します。

エントリポイント コマンド、引数、またはその両方を構成できます。Cloud Run for Anthos で指定するコマンドは、コンテナ イメージに定義されているエントリポイント コマンドをオーバーライドします。引数だけを指定した場合、これらの引数はコンテナ イメージで定義されたエントリ ポイント コマンドに渡され、実行されます。

Cloud Run for Anthos では、新しいサービスのデプロイ、既存のサービスの更新、リビジョンのデプロイを行うときに、Cloud Console、gcloud コマンドライン ツール、または YAML ファイルを使用して、エントリポイント コマンドと引数を構成できます。

Console

  1. Cloud Run for Anthos on Google Cloud に移動

  2. デプロイ先の新しいサービスを構成する場合は、[サービスの作成] をクリックします。既存のサービスを構成する場合は、そのサービスをクリックし、[新しいリビジョンの編集とデプロイ] をクリックします。

  3. [詳細設定] で [コンテナ] をクリックします。

    画像

  4. 起動時にコンテナを実行するエントリポイント コマンドと引数を指定します。

  5. [作成] または [デプロイ] をクリックします。

コマンドライン

コマンド パラメータ オプション

  • カンマ(,)を含む引数を指定する場合は、各 ARG を別の区切り文字でエスケープする必要があります。たとえば、@ を使用する場合は、次のようにします。
    --args "^@^arg,with,commas@anotherarg@ARG3..."
    
  • 複数の Key-Value ペアを指定するには、読みやすくするために複数のパラメータを指定します。例:
    [...]
    --args "ARG1" \
    --args "ARG2" \
    --args "ARG3"
    
  • 引数で等号(=)を使用する場合は、各引数を次の形式で指定する必要があります。
    gcloud kuberun core services ...  \
      --args "--repo-allowlist=github.com/example/example_demo" \
      --args "--gh-webhook-secret=XX"
    

  • 既存のサービスの場合、次のパラメータを指定して gcloud kuberun core services update コマンドを実行し、エントリポイント コマンドを更新します。

    gcloud kuberun core services update SERVICE --command COMMAND --args ARG1,ARG2,ARG-N
    

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

    • SERVICE は、サービスの名前に置き換えます。
    • 省略可: COMMAND は、起動時にコンテナが実行するコマンドに置き換えます。
    • 省略可: ARG1 は、起動時に実行されるコマンドの 1 つ以上の引数を指定します。複数の引数を指定する場合は、カンマ区切りのリストを使用します。引数の形式
  • 新しいサービスの場合、エントリポイント コマンドを設定するには、--command パラメータを指定して gcloud kuberun core services create コマンドを実行します。

    gcloud kuberun core services create SERVICE --image=IMAGE_URL --command COMMAND --args ARG1,ARG2,ARG-N
    

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

    • SERVICE は、サービスの名前に置き換えます。
    • IMAGE_URL は、コンテナ イメージへの参照(gcr.io/myproject/my-image:latest など)に置き換えます。
    • 省略可: COMMAND は、起動時にコンテナが実行するコマンドに置き換えます。
    • 省略可: ARG1 は、起動時に実行されるコマンドの 1 つ以上の引数を指定します。複数の引数を指定する場合は、カンマ区切りのリストを使用します。引数の形式

YAML

YAML ファイルを使用して既存のサービスの構成を変更するには、現在の構成のコピーを取得し、その構成を変更してローカル ファイルに保存してから、これらの変更をサービスにデプロイします。

  1. YAML として表示し、サービスの構成をローカル ファイルにコピーします。例を示します。service.yaml:

    gcloud kuberun core services describe SERVICE --format yaml

    SERVICE は、Cloud Run for Anthos サービスの名前に置き換えます。

  2. ローカル ファイルで command 属性と args 属性を更新します。

    apiVersion: serving.knative.dev/v1
    kind: Service
    spec:
      template:
        spec:
          containers:
          - image: IMAGE_URL
            command:
            - COMMAND
            args:
            - "ARG1"
            - "ARG-N"
    

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

    • IMAGE_URL は、コンテナ イメージへの参照(gcr.io/myproject/my-image:latest など)に置き換えます。
    • 省略可: COMMAND は、起動時にコンテナが実行するコマンドに置き換えます。
    • 省略可: ARG1 は、起動時に実行されるコマンドの 1 つ以上の引数を指定します。複数の引数を指定する場合は、カンマ区切りのリストを使用します。
  3. 次のコマンドを使用して、サービスを新しい構成に置き換えます。

    gcloud beta run services replace service.yaml