コンテナの構成

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

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

コンテナポートの構成

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

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

Console

  1. Google Cloud コンソールで Cloud Run for Anthos に移動します。

    Cloud Run for Anthos に移動

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

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

    画像

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

  5. [次へ] をクリックして、次のセクションに進みます。

  6. [このサービスをトリガーする方法の構成] セクションで、サービスを呼び出すために使用する接続を選択します。

  7. [作成] をクリックしてイメージを Cloud Run for Anthos にデプロイし、デプロイの完了を待ちます。

コマンドライン

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

    gcloud run services update SERVICE --port PORT
    

    以下のように置き換えます。

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

    gcloud run deploy SERVICE --image=IMAGE_URL --port PORT
    

    以下のように置き換えます。

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

YAML

--format=export フラグを使用して、gcloud run services describe コマンドで既存のサービスの構成を YAML ファイルにダウンロードできます。次に YAML ファイルを変更し、gcloud beta run services replace コマンドを使用してこれらの変更をデプロイします。指定した属性のみを変更する必要があります。

  1. ローカル ワークスペースの service.yaml という名前のファイルにサービスの構成をダウンロードします。

    gcloud run services describe SERVICE --format export > service.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 は、コンテナの起動時にイメージのデフォルト エントリポイント コマンドを実行します。コンテナ イメージに定義されている既存のエントリポイント コマンドと引数を指定またはオーバーライドするには、Cloud Run for Anthos コンテナ構成で commandargs の設定を構成します。

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

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

Console

  1. Google Cloud コンソールで Cloud Run for Anthos に移動します。

    Cloud Run for Anthos に移動

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

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

    画像

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

  5. [次へ] をクリックして、次のセクションに進みます。

  6. [このサービスをトリガーする方法の構成] セクションで、サービスを呼び出すために使用する接続を選択します。

  7. [作成] をクリックしてイメージを Cloud Run for Anthos にデプロイし、デプロイの完了を待ちます。

コマンドライン

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

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

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

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

    以下のように置き換えます。

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

    gcloud run deploy SERVICE --image=IMAGE_URL --command COMMAND --args ARG1,ARG2,ARG-N
    

    以下のように置き換えます。

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

YAML

--format=export フラグを使用して、gcloud run services describe コマンドで既存のサービスの構成を YAML ファイルにダウンロードできます。次に YAML ファイルを変更し、gcloud beta run services replace コマンドを使用してこれらの変更をデプロイします。指定した属性のみを変更する必要があります。

  1. ローカル ワークスペースの service.yaml という名前のファイルにサービスの構成をダウンロードします。

    gcloud run services describe SERVICE --format export > service.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