設定容器

瞭解如何設定容器通訊埠、容器進入點指令和引數。

Knative serving 啟動容器時,會執行映像檔的預設進入點指令和預設指令引數。如要覆寫映像檔的預設進入點和指令引數,可以使用容器設定中的 commandargs 欄位。command 欄位會指定容器執行的實際指令。args 欄位會指定傳遞至該指令的引數。

設定容器通訊埠

變更任何設定都會建立新的修訂版本。除非您明確做出更新,變更這項設定,否則後續的修訂版本也會自動取得這個設定。

容器應監聽 PORT 環境變數定義的通訊埠,而非特定硬式編碼通訊埠。但如果無法這麼做,您可以設定要求傳送至容器的通訊埠:

控制台

  1. 前往 Google Cloud 控制台的 Knative Serving:

    前往 Knative serving

  2. 如要設定部署的新服務,請按一下「建立服務」。如要設定現有服務,請按一下該服務,然後按一下「Edit & Deploy New Revision」(編輯及部署新的修訂版本)

  3. 在「進階設定」下方,按一下「容器」

  4. 指定要將要求傳送至的通訊埠 (如果不是預設值 8080)。這也會設定 PORT 環境變數。

  5. 按一下「下一步」繼續前往下一個部分。

  6. 在「設定這項服務的觸發方式」部分,選取要用來叫用服務的連線。

  7. 按一下「建立」,將映像檔部署到 Knative 服務,然後等待部署作業完成。

指令列

  • 如要更新現有服務的通訊埠設定,請執行 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 檔案中。然後修改該 YAML 檔案,並使用 gcloud run services replace 指令部署這些變更。請務必只修改指定的屬性。

  1. 將服務設定下載到本機工作區中名為 service.yaml 的檔案:

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

    SERVICE 替換為 Knative 服務服務名稱。

  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 服務容器設定中設定 commandargs

您可以選擇設定進入點指令、引數或兩者。您在 Knative 服務中指定的指令會覆寫容器映像檔中定義的任何進入點指令。如果您選擇只指定引數,這些引數會傳送至容器映像檔中定義的 entrypoint 指令,並由該指令執行。

在 Knative 服務中,部署新的服務、更新現有服務或部署版本時,可以使用 Google Cloud 控制台、Google Cloud CLI 或 YAML 檔案設定進入點指令和引數:

控制台

  1. 前往 Google Cloud 控制台的 Knative Serving:

    前往 Knative serving

  2. 如要設定部署的新服務,請按一下「建立服務」。如要設定現有服務,請按一下該服務,然後按一下「Edit & Deploy New Revision」(編輯及部署新的修訂版本)

  3. 在「進階設定」下方,按一下「容器」

  4. 指定容器啟動時要執行的進入點指令和引數。

  5. 按一下「下一步」繼續前往下一個部分。

  6. 在「設定這項服務的觸發方式」部分,選取要用來叫用服務的連線。

  7. 按一下「建立」,將映像檔部署到 Knative 服務,然後等待部署作業完成。

指令列

指令參數選項

  • 如要指定含有半形逗號 (,) 的引數,請務必逸出每個 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,其中包含一或多個引數,用於啟動期間執行的指令。如要使用多個引數,請以半形逗號分隔。如何設定引數格式。
  • 如果是新服務,請執行 gcloud run deploy 指令並搭配 --command 參數,設定進入點指令:

    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 檔案中。然後修改該 YAML 檔案,並使用 gcloud run services replace 指令部署這些變更。請務必只修改指定的屬性。

  1. 將服務設定下載到本機工作區中名為 service.yaml 的檔案:

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

    SERVICE 替換為 Knative 服務服務名稱。

  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