使用 Cloud Run 設定伺服器端標記

本指南說明如何:

  • 佈建預覽伺服器,為容器啟用預覽功能。
  • 佈建標記伺服器,處理即時流量。
  • 增加或減少執行 Google 代碼管理工具容器的伺服器數量。
  • 佈建伺服器後,請將標記伺服器版本更新至最新版本。

必要條件

  1. 您需要 GCP 帳戶。如果沒有,請建立新的 GCP 帳戶
  2. 您需要 GCP 帳單帳戶。如果沒有,請建立 GCP 帳單帳戶 (需要帳單帳戶建立者角色)。
  3. 您需要專案建立者和帳單帳戶使用者角色。進一步瞭解如何新增角色

佈建預覽和標記伺服器

您可以在 Google 代碼管理工具中自動佈建 Cloud Run 服務,也可以在 Google Cloud 中手動佈建。

編輯服務設定

如要變更服務設定,請按照下列步驟操作:

  1. 開啟 Cloud Run
  2. 選取要調整的服務。
  3. 點選「編輯及部署新的修訂版本」
  4. 進行變更,然後按一下「部署」

Cloud Run 費用

在這個 Cloud Run 設定中,每部伺服器的費用約為每月 $45 美元。每個伺服器都是 Cloud Run 執行個體,具有 1 個 vCPU 和 0.5 GB 記憶體,並採用「一律分配 CPU」的定價模式。

建議您至少執行 2 個執行個體,以降低伺服器中斷時資料遺失的風險。不過,您可以選擇執行較少 (或較多) 伺服器。 我們預期自動調度 2 到 10 部伺服器,每秒可處理 35 到 350 個要求,但效能會因代碼數量和代碼功能而異。

Cloud Run 會根據負載動態調整規模。max-instances 設定是資源費用的最差情況。除非必要,否則 Cloud Run 不會佈建這麼多執行個體。

Cloud Run 費用估算

如要估算執行代碼伺服器的每月費用,請使用 Google Cloud Pricing Calculator。計算機隨即開啟,並預先設定預估值,供預設的伺服器端代碼部署作業使用。您可以調整設定,根據預期流量取得更準確的估算結果。

選用:從 App Engine 遷移

如果您先前已建立 App Engine 部署作業,並確認該作業不再接收任何流量,請停用 App Engine 應用程式,以免產生意外的帳單費用。

選用:多區域部署

如果您的網站遍及全球,或想在服務中建構備援機制,請將標記伺服器部署至多個區域

事前準備:

  1. 建立負載平衡器
  2. 請記下所選的 BACKEND_NAME

如要為部署作業新增更多區域,請按照下列步驟操作:

  1. REGION 替換為部署預覽伺服器的區域。如果您按照指令列選項佈建預覽和代碼伺服器,系統可能已填入這項資訊。
  2. CONTAINER_CONFIG 替換為代碼管理工具中的容器設定字串。如果您按照指令列選項佈建預覽和標記伺服器,這項資訊可能已填寫完畢。
  3. NEW_REGION 替換為您希望部署代碼伺服器的新區域。
  4. BACKEND_NAME 替換為您在佈建負載平衡器時選擇的名稱。
  5. 選用:如要新增其他區域,請替換 NEW_REGION 變數,然後重新執行程式碼片段。
    gcloud run deploy "server-side-tagging" \
    --region NEW_REGION \
    --image gcr.io/cloud-tagging-10302018/gtm-cloud-image:stable \
    --platform managed \
    --ingress all \
    --min-instances 2 \
    --max-instances 10 \
    --timeout 60 \
    --allow-unauthenticated \
    --no-cpu-throttling \
    --update-env-vars PREVIEW_SERVER_URL="$(
      gcloud run services describe server-side-tagging-preview \--region "REGION" \
      --format="value(status.url)")",CONTAINER_CONFIG="CONTAINER_CONFIG" && \

    gcloud compute network-endpoint-groups create server-side-tagging-neg \
    --region=NEW_REGION \
    --network-endpoint-type=SERVERLESS \
    --cloud-run-service="server-side-tagging" && \

    gcloud compute backend-services add-backend --global "BACKEND_NAME" \
    --network-endpoint-group-region=NEW_REGION \
    --network-endpoint-group=server-side-tagging-neg

選用:停用記錄功能

要求記錄

根據預設,系統會記錄每項要求的相關資訊 (例如要求路徑、查詢參數等)。如果代碼伺服器每月處理大量要求 (例如超過 100 萬筆),這些記錄訊息可能會產生高額記錄費用。如要減少或免除記錄費用,建議停用要求記錄。

如要停用要求記錄功能,請按照下列指示操作:

  1. 在 Google Cloud Platform 中,開啟記錄檔路由器。請確認您位於與容器 ID 相符的專案中:
    GCP 專案選取器的螢幕截圖,顯示範例代碼管理工具容器 ID。
  2. 在「類型」部分,選取「Cloud Logging bucket」(Cloud Logging bucket);在「名稱」部分,選取「_Default」(預設) 行,然後按一下溢位選單中的「Edit Sink」(編輯接收器)
  3. 在「接收器目的地」下方,選取記錄檔 bucket「_Default」
  4. 在「選擇要納入接收器的記錄檔」下方,新增一行。在現有的納入篩選器中輸入下列規則:

    NOT LOG_ID("run.googleapis.com/requests")
    
  5. 如要同時停用負載平衡器的記錄功能,請新增一行,並在現有的納入篩選器中輸入下列規則:

    NOT LOG_ID("requests")
    
  6. 按一下「更新接收器」套用變更。現在系統不會記錄這些要求。

  7. 確認記錄檔探索工具記錄中未顯示任何新要求。

控制台記錄

容器中的代碼伺服器、用戶端或代碼可能會將訊息記錄到控制台,這可能會產生記錄費用。 如要減少或免除記錄費用,可以停用不必要的控制台記錄訊息。

找出不適用的控制台記錄:

  1. 在 GCP 中,開啟「Logs Explorer」(記錄檔探索工具)
  2. 找出標記產生的任何不必要的記錄訊息。例如:

    代碼可能會傳送下列記錄:

    const logToConsole = require('logToConsole');
    
    logToConsole('Custom message: ' + data.param1);
    logToConsole('An important message to keep around!');
    data.gtmOnSuccess()
    

    textPayload 欄位中尋找對應的記錄訊息:
    GCP 記錄檔總管的螢幕截圖,顯示記錄檔範例。

如要停用控制台記錄訊息,請按照下列步驟操作:

  1. 在 Google Cloud Platform 中,開啟記錄檔路由器。請確認您位於與容器 ID 相符的專案中:
    GCP 專案選取器的螢幕截圖,顯示範例代碼管理工具容器 ID。
  2. 在「類型」部分,選取「Cloud Logging bucket」(Cloud Logging bucket);在「名稱」部分,選取「_Default」(預設) 行,然後按一下溢位選單中的「Edit Sink」(編輯接收器)
  3. 在「接收器目的地」下方,選取記錄檔 bucket「_Default」
  4. 在「選擇要納入接收器的記錄檔」下方,新增一行。在現有的納入篩選器中輸入下列規則:

    NOT textPayload:"Custom message:"
    

    如果是主控台記錄,請將 Custom message: 文字替換為主控台記錄中要停用的子字串。如要使用更精細的篩選器,請運用 Logging 查詢語言

  5. 按一下「更新接收器」套用變更。相符的logToConsole 訊息應排除在記錄檔之外。

  6. 確認記錄檔瀏覽器中沒有顯示新的控制台記錄訊息。

2. 將部署作業對應至自訂網域

設定自訂網域,使用 Cloud Run 提供的預設位址以外的網域。

3. 在 Google 代碼管理工具中新增伺服器網址

現在您已擁有伺服器,請務必讓 Google 代碼管理工具知道應使用您的伺服器。

  1. 開啟 Google 代碼管理工具

  2. 按一下要指向標記伺服器的伺服器容器。

  3. 在「管理」分頁標籤中,依序開啟伺服器容器設定 >「容器設定」

  4. 按一下「新增網址」,然後貼上伺服器網址。

  5. 儲存並返回工作區。

4. 驗證

標記伺服器設定完成後,請確認運作正常。 在代碼管理工具工作區中,按一下「預覽」按鈕。如果預覽頁面載入,表示一切設定正確。

預覽多個網址

如果已將多個網域對應至單一標記伺服器,請務必將每個網址新增至容器設定。

如果您提供多個網址,所有路徑 (網域名稱後的字串) 都必須一致。

作品 無法運作
網址 1:example.com/abc
網址 2:example2.com/abc
網址 1:example.com/abc
網址 2:example2.com/def

如果新增多個網址,預覽按鈕旁會顯示圖示,可供您選取要預覽的網址。

更新標記伺服器版本

新的代碼伺服器更新包含安全性漏洞修正和新功能。代碼管理工具通知您更新時,建議您至少為每個主要版本更新標記伺服器 (例如從 1.x.x 版升級至 2.x.x 版)。

如要更新代碼伺服器,請使用先前使用的相同設定,部署新修訂版本。

  1. 開啟 Cloud Run
  2. 選取要更新的服務。
  3. 點選「編輯及部署新的修訂版本」
  4. 確認「Container image URL」(容器映像檔網址) 設為 gcr.io/cloud-tagging-10302018/gtm-cloud-image:stable,然後按一下「Deploy」(部署)

如要確認更新是否成功,請按照下列步驟操作:

  1. 在伺服器容器中,按一下「預覽」按鈕,啟動新的偵錯工作階段,並在另一個分頁中傳送要求。
  2. 在「摘要」中,選取「控制台」分頁標籤,確認沒有要求更新代碼伺服器的訊息。

伺服器更新成功後,代碼管理工具最多可能需要一天,才會停止顯示要求更新標記伺服器的訊息。不過,預覽頁面會顯示有關代碼伺服器版本的最新訊息。