查看 Application Integration 支援的連接器

建立開機指令碼

本頁說明如何為網路服務建立啟動指令碼,然後驗證指令碼。

為確保啟動網路服務時不需要手動介入,您必須建立開機指令碼。開機指令碼會執行下列工作:

  • 讀取虛擬機器 (VM) 中繼資料,並設定含有 CONNECTOR_ENV 前置字元的中繼資料環境變數。消費者所需的任何資料,都會在建立 VM 時從 Marketplace 取得,並在 Docker 中設為環境變數。應用程式就能讀取並處理這些環境變數。
  • 使用適當的環境變數,啟動含有網路服務的 Docker 容器。

以下程式碼為啟動指令碼範例:

#!/bin/bash

# 1. Fetch Metadata Keys
metadata_keys_url="http://metadata.google.internal/computeMetadata/v1/instance/attributes/"
metadata_keys=$(curl -H "Metadata-Flavor: Google" "$metadata_keys_url")

# 2. Set Environment Variables for CONNECTOR_ENV Keys (with error handling)
for key in $metadata_keys; do
  if [[ $key == CONNECTOR_ENV_* ]]; then
    metadata_value_url="http://metadata.google.internal/computeMetadata/v1/instance/attributes/$key"

    # Fetch value with error handling
    value=$(curl -H "Metadata-Flavor: Google" "$metadata_value_url" 2>/dev/null)
    if [[ -z "$value" ]]; then
      echo "Warning: No value found for key '$key'. Skipping." >&2 # Log the warning to stderr
      continue  # Skip to the next iteration
    fi
    export "$key=$value"
  fi
done

# 3. Run Docker with Environment Variables
sudo docker stop connector-service || true
sudo docker run \
  --name connector-service \
 $(env | grep CONNECTOR_ENV_ | sed 's/=/="/;s/$/"/' | sed 's/^/-e /') \
 -d -p $CONNECTOR_ENV_PORT:$CONNECTOR_ENV_PORT \
 --restart=unless-stopped \
  connector-container

驗證開機指令碼

  1. 在 VM 執行個體中,新增通訊埠的中繼資料,以及 VM 建立期間所需的所有其他參數。
    gcloud compute instances add-metadata VM_NAME \                                                   
        --zone=VM_ZONE \
        --project=PROJECT_NAME \
        --metadata=CONNECTOR_ENV_PORT=8081
  2. 透過使用者介面編輯 VM,並新增自動化部分中提及的開機指令碼。

    您也可以使用下列 gcloud 指令:

    gcloud compute instances add-metadata VM_NAME \                                                   
        --zone=VM_ZONE \
        --project=PROJECT_NAME \
        --metadata-from-file startup-script=gcp-start.sh
  3. 新增開機指令碼後,請透過 SSH 連線至 VM,然後執行下列指令:
    sudo google_metadata_script_runner startup
  4. 執行下列指令,確保 Docker 容器在上述通訊埠上執行。
    sudo docker ps
  5. 執行下列指令,停止並移除 Docker 服務。測試完成後,服務不得在 VM 上執行。
    sudo docker rm -f connector-service
  6. 後續步驟