コンテナポート、コンテナ エントリ ポイントのコマンド、その引数の構成方法について学習します。
Knative serving がコンテナを起動すると、イメージのデフォルトのエントリポイント コマンドとデフォルトのコマンド引数が実行されます。イメージのデフォルトのエントリポイントとコマンド引数をオーバーライドする場合は、コンテナ構成の command
フィールドと args
フィールドを使用できます。command
フィールドは、コンテナによって実行される実際のコマンドを指定します。args
フィールドは、そのコマンドに渡される引数を指定します。
コンテナポートの構成
構成を変更すると、新しいリビジョンが作成されます。明示的に更新しない限り、以降のリビジョンでも、この構成が自動的に設定されます。
コンテナは、特定のハードコードされたポートではなく、PORT
環境変数で定義されたポートをリッスンする必要があります。ただし、これができない場合は、どのポートのリクエストをコンテナに送信するかを構成できます。
コンソール
Google Cloud コンソールで Knative serving に移動します。
デプロイ先の新しいサービスを構成する場合は、[サービスを作成] をクリックします。既存のサービスを構成する場合は、そのサービスをクリックし、[新しいリビジョンの編集とデプロイ] をクリックします。
[詳細設定] で [コンテナ] をクリックします。
リクエストを送信するポートを指定します(デフォルト値
8080
でない場合)。これにより、PORT
環境変数も設定されます。[次へ] をクリックして、次のセクションに進みます。
[このサービスをトリガーする方法の構成] セクションで、サービスを呼び出すために使用する接続を選択します。
[作成] をクリックしてイメージを Knative serving にデプロイし、デプロイの完了を待ちます。
コマンドライン
既存のサービスの場合は、次のパラメータを指定して
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/cloudrun/hello
など)。 - PORT はリクエストを送信するポートに置き換えます。デフォルト ポートは
8080
です。
YAML
--format=export
フラグを使用して、gcloud run services describe
コマンドで既存のサービスの構成を YAML ファイルにダウンロードできます。次に YAML ファイルを変更し、gcloud run services replace
コマンドを使用してこれらの変更をデプロイします。指定した属性のみを変更する必要があります。
ローカル ワークスペースの
service.yaml
という名前のファイルにサービスの構成をダウンロードします。gcloud run services describe SERVICE --format export > service.yaml
SERVICE は、Knative serving サービスの名前に置き換えます。
ローカル ファイルで
containerPort:
属性を更新します。apiVersion: serving.knative.dev/v1 kind: Service spec: template: spec: containers: - image: IMAGE_URL ports: - containerPort: PORT
次のように置き換えます。
- IMAGE_URL: コンテナ イメージへの参照(
gcr.io/cloudrun/hello
など)。 - PORT はリクエストを送信するポートに置き換えます。
- IMAGE_URL: コンテナ イメージへの参照(
次のコマンドを使用して、サービスを新しい構成に置き換えます。
gcloud run services replace service.yaml
コンテナのエントリポイント コマンドと引数の構成
構成を変更すると、新しいリビジョンが作成されます。明示的に更新しない限り、以降のリビジョンでも、この構成が自動的に設定されます。
Knative serving がコンテナを起動すると、イメージのデフォルト エントリポイント コマンドが実行されます。コンテナ イメージに定義されている既存のエントリポイント コマンドと引数を指定またはオーバーライドするには、Knative serving コンテナ構成で command
と args
の設定を構成します。
エントリポイント コマンド、引数、またはその両方を構成できます。Knative serving で指定したコマンドは、コンテナ イメージに定義されているエントリポイント コマンドをオーバーライドします。引数だけを指定した場合、これらの引数はコンテナ イメージで定義されたエントリ ポイント コマンドに渡され、実行されます。
Knative serving では、新しいサービスをデプロイし、既存のサービスを更新するか、リビジョンをデプロイする際に、Google Cloud コンソール、Google Cloud CLI、または YAML ファイルを使用して、エントリポイント コマンドと引数を構成できます。
コンソール
Google Cloud コンソールで Knative serving に移動します。
デプロイ先の新しいサービスを構成する場合は、[サービスを作成] をクリックします。既存のサービスを構成する場合は、そのサービスをクリックし、[新しいリビジョンの編集とデプロイ] をクリックします。
[詳細設定] で [コンテナ] をクリックします。
起動時にコンテナを実行するエントリポイント コマンドと引数を指定します。
[次へ] をクリックして、次のセクションに進みます。
[このサービスをトリガーする方法の構成] セクションで、サービスを呼び出すために使用する接続を選択します。
[作成] をクリックしてイメージを Knative serving にデプロイし、デプロイの完了を待ちます。
コマンドライン
コマンド パラメータ オプション
-
カンマ(
,
)を含む引数を指定する場合は、各ARG
を別の区切り文字でエスケープする必要があります。たとえば、@
を使用する場合は、次のようにします。--args "^@^arg,with,commas@anotherarg@ARG3..."
-
複数の Key-Value ペアを指定するには、読みやすくするために複数のパラメータを指定します。例:
[...] --args "
ARG
1" \ --args "ARG
2" \ --args "ARG
3" -
引数で等号(
=
)を使用する場合は、各引数を次の形式で指定する必要があります。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/cloudrun/hello
など)に置き換えます。 - 省略可: COMMAND は、起動時にコンテナが実行するコマンドに置き換えます。
- 省略可: ARG1 は、起動時に実行されるコマンドの 1 つ以上の引数を指定します。複数の引数を指定する場合は、カンマ区切りのリストを使用します。引数の形式
YAML
--format=export
フラグを使用して、gcloud run services describe
コマンドで既存のサービスの構成を YAML ファイルにダウンロードできます。次に YAML ファイルを変更し、gcloud run services replace
コマンドを使用してこれらの変更をデプロイします。指定した属性のみを変更する必要があります。
ローカル ワークスペースの
service.yaml
という名前のファイルにサービスの構成をダウンロードします。gcloud run services describe SERVICE --format export > service.yaml
SERVICE は、Knative serving サービスの名前に置き換えます。
ローカル ファイルで
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/cloudrun/hello
など)に置き換えます。 - 省略可: COMMAND は、起動時にコンテナが実行するコマンドに置き換えます。
- 省略可: ARG1 は、起動時に実行されるコマンドの 1 つ以上の引数を指定します。複数の引数を指定する場合は、カンマ区切りのリストを使用します。
- IMAGE_URL は、コンテナ イメージへの参照(
次のコマンドを使用して、サービスを新しい構成に置き換えます。
gcloud run services replace service.yaml