配置容器

了解如何配置容器端口以及容器入口点命令和参数。

当 Knative serving 启动容器时,它会运行映像的默认入口点命令和默认命令参数。如果要替换映像的默认入口点和命令参数,您可以使用容器配置中的 commandargs 字段。command 字段指定容器运行的实际命令。args 字段指定传递给该命令的参数。

配置容器端口

任何配置更改都会导致新修订版本的创建。后续修订版本也将自动采用此配置设置,除非您进行了明确更新。

容器应侦听 PORT 环境变量定义的端口,而不是特定的硬编码端口。但是,如果无法做到这一点,您可以配置请求通过哪个端口发送到容器:

控制台

  1. 在 Google Cloud 控制台中前往 Knative serving:

    前往 Knative serving

  2. 如果您是要配置一个新服务来作为部署目标,请点击创建服务。如果您要配置现有服务,请点击该服务,然后点击修改和部署新的修订版本

  3. 在“高级设置”下,点击容器

  4. 指定要向其发送请求的端口(如果该端口不是默认值 8080)。这也会设置 PORT 环境变量。

  5. 点击下一步以转到下一部分。

  6. 配置此服务的触发方式部分,选择您想使用哪个连接来调用服务。

  7. 点击创建以将映像部署到 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 文件并部署这些更改。您必须确保仅修改指定的属性。

  1. 将服务配置下载到本地工作区上名为 service.yaml 的文件中:

    gcloud run services describe SERVICE --format export > service.yaml

    SERVICE 替换为您的 Knative serving 服务的名称。

  2. 在本地文件中,更新 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 替换为要向其发送请求的端口。
  3. 使用以下命令将服务替换为其新配置:

    gcloud run services replace service.yaml

配置容器入口点命令和参数

任何配置更改都会导致新修订版本的创建。后续修订版本也将自动采用此配置设置,除非您进行了明确更新。

当 Knative serving 启动容器时,它会运行映像的默认入口点命令。如需指定或替换容器映像中定义的现有入口点命令和参数,您可以在 Knative serving 容器配置中配置 commandargs 设置。

您可以选择配置入口点命令和/或参数。您在 Knative serving 中指定的命令会替换容器映像中定义的任何入口点命令。如果您选择仅指定参数,则这些参数会传递到容器映像中定义的入口点命令并运行。

在 Knative serving 中,您可以在部署新服务、更新现有服务或部署修订版本时使用 Google Cloud 控制台、Google Cloud CLI 或 YAML 文件来配置入口点命令和参数:

控制台

  1. 在 Google Cloud 控制台中前往 Knative serving:

    前往 Knative serving

  2. 如果您是要配置一个新服务来作为部署目标,请点击创建服务。如果您要配置现有服务,请点击该服务,然后点击修改和部署新的修订版本

  3. 在“高级设置”下,点击容器

  4. 指定您希望容器在启动时运行的入口点命令和参数。

  5. 点击下一步以转到下一部分。

  6. 配置此服务的触发方式部分,选择您想使用哪个连接来调用服务。

  7. 点击创建以将映像部署到 Knative serving,然后等待部署完成。

命令行

命令参数选项

  • 如需指定包含逗号 (,) 的参数,必须使用一个不同的分隔符来转义每个 ARG。例如,如果使用 @
    --args "^@^arg,with,commas@anotherarg@ARG3..."
    
  • 如需指定多组键值对,您可以指定多个参数以确保可读性。示例:
    [...]
    --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 替换为在启动期间运行的命令的一个或多个参数。如有多个参数,请使用逗号分隔列表。如何设置参数格式
  • 对于新服务,请运行带有 --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 文件并部署这些更改。您必须确保仅修改指定的属性。

  1. 将服务配置下载到本地工作区上名为 service.yaml 的文件中:

    gcloud run services describe SERVICE --format export > service.yaml

    SERVICE 替换为您的 Knative serving 服务的名称。

  2. 在本地文件中,更新 commandargs 属性:

    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 替换为在启动期间运行的命令的一个或多个参数。如有多个参数,请使用逗号分隔列表。
  3. 使用以下命令将服务替换为其新配置:

    gcloud run services replace service.yaml