了解如何配置容器端口以及容器入口点命令和参数。
当 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
您可以使用 gcloud run services describe
命令和 --format=export
标志将现有服务的配置下载到的 YAML 文件中。然后,您可以使用 gcloud run services replace
命令修改该 YAML 文件并部署这些更改。您必须确保仅修改指定的属性。
将服务配置下载到本地工作区上名为
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..."
-
如需指定多组键值对,您可以指定多个参数以确保可读性。示例:
[...] --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 替换为在启动期间运行的命令的一个或多个参数。如有多个参数,请使用逗号分隔列表。如何设置参数格式。
对于新服务,请运行带有
--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 替换为在启动期间运行的命令的一个或多个参数。如有多个参数,请使用逗号分隔列表。如何设置参数格式。
YAML
您可以使用 gcloud run services describe
命令和 --format=export
标志将现有服务的配置下载到的 YAML 文件中。然后,您可以使用 gcloud run services replace
命令修改该 YAML 文件并部署这些更改。您必须确保仅修改指定的属性。
将服务配置下载到本地工作区上名为
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 替换为在启动期间运行的命令的一个或多个参数。如有多个参数,请使用逗号分隔列表。
- 将 IMAGE_URL 替换为对容器映像的引用,例如
使用以下命令将服务替换为其新配置:
gcloud run services replace service.yaml