步驟 5:安裝 Hybrid 執行階段

啟用同步處理工具存取權

如何啟用同步處理工具存取權:

  1. 建立 Google Cloud 服務帳戶,並為該帳戶新增 Apigee 機構管理員角色。這個服務帳戶會用於驗證您在後續步驟中發出的 API 呼叫。建立服務帳戶的簡單方法是透過 GCP 控制台。 如需操作說明,請參閱 GCP 文件中的「 建立及管理服務帳戶」。

    舉例來說,下列 gcloud 指令會建立服務帳戶,並為該帳戶指派 Apigee 機構管理員

    1. 建立帳戶:
      gcloud iam service-accounts create apigee-org-admin \
          --display-name="apigee-org-admin"

      其中 apigee-org-admin 是您要建立的服務帳戶名稱。 建議在本教學課程中使用「apigee-org-admin」。

    2. Apigee 機構管理員角色指派給服務帳戶:
      gcloud projects add-iam-policy-binding $PROJECT_ID \
          --member="serviceAccount:apigee-org-admin@$PROJECT_ID.iam.gserviceaccount.com" \
          --role="roles/apigee.admin"

      其中:

      • $PROJECT_ID 是您在步驟 2:建立 Google Cloud 專案中建立的 Google Cloud 專案名稱。
      • apigee-org-admin 是您剛建立的服務帳戶名稱。
      • roles/apigee.adminApigee 機構管理員角色。
  2. 將服務帳戶金鑰下載到您的系統。使用下列指令將金鑰下載到 service-accounts/ 目錄。詳情請參閱 GCP 說明文件中的「 建立服務帳戶金鑰」一節。
    1. 確認您位於 /hybrid-base-directory/hybrid-files/ 目錄。
    2. 下載金鑰:
      gcloud iam service-accounts keys create ./service-accounts/$PROJECT_ID-apigee-org-admin.json \
        --iam-account apigee-org-admin@$PROJECT_ID.iam.gserviceaccount.com

      輸出內容應如下所示:

      created key [a0b1c2d3e4f5a0b1c2d3e4f5a0b1c2d3e4f5a0b1] of type [json] as [./service-accounts/hybrid-
      example-apigee-org-admin.json] for [apigee-org-admin@my-hybrid.iam.gserviceaccount.com]
      $ 
  3. 使用下列指令驗證 Apigee Org Admin 服務帳戶金鑰的路徑:
    ls service-accounts/*admin*

    結果應如下所示:

    service-accounts/hybrid-example-apigee-org-admin.json
  4. 建立 ORG_ADMIN_ACCOUNT 環境變數,並使用金鑰檔案的名稱。 例如:
    export ORG_ADMIN_ACCOUNT="hybrid-example-2-apigee-org-admin.json"
  5. 執行下列指令來取得權杖:
    export GOOGLE_APPLICATION_CREDENTIALS=./service-accounts/$ORG_ADMIN_ACCOUNT
    export TOKEN=$(gcloud auth application-default print-access-token)
  6. 使用下列指令取得 apigee-synchronizer 服務帳戶的電子郵件地址:
    gcloud iam service-accounts list --filter "apigee-synchronizer"

    如果符合 apigee-synchronizer$ORG_NAME.iam.gserviceaccount.com 模式,您可以在下一個步驟中使用該模式。

  7. 呼叫 setSyncAuthorization API,使用下列指令為 Synchronizer 啟用必要權限:
    curl -X POST -H "Authorization: Bearer $TOKEN" \
      -H "Content-Type:application/json" \
      "https://apigee.googleapis.com/v1/organizations/$ORG_NAME:setSyncAuthorization" \
       -d '{"identities":["'"serviceAccount:apigee-synchronizer@$ORG_NAME.iam.gserviceaccount.com"'"]}'
    

    其中:

    • $ORG_NAME:混合式機構的名稱。
    • apigee-synchronizer$ORG_NAME.iam.gserviceaccount.com:apigee-syncnronizer 服務帳戶的電子郵件地址。
  8. 如要確認服務帳戶已設定完成,請使用下列指令呼叫 API,取得服務帳戶清單:
    curl -X POST -H "Authorization: Bearer $TOKEN" \
      -H "Content-Type:application/json" \
      "https://apigee.googleapis.com/v1/organizations/$ORG_NAME:getSyncAuthorization" \
       -d ''
    

    輸出結果看起來與下列內容相似:

    {
       "identities":[
          "serviceAccount:my-synchronizer-manager-service_account@my_project_id.iam.gserviceaccount.com"
       ],
       "etag":"BwWJgyS8I4w="
    }

將設定套用到叢集

請按照下列步驟,將 Apigee Hybrid 安裝至叢集:

  1. 請務必位於 hybrid-base-directory/hybrid-files 目錄。
  2. 使用下列指令,確認 kubectl 已設為正確的環境。 目前的環境應設為要部署 Apigee Hybrid 的叢集。
    kubectl config get-contexts
  3. 執行模擬測試初始化作業。執行 init 指令並加上 --dry-run 旗標。進行試運轉可讓您在叢集進行任何變更前,檢查是否有錯誤。

    在混合式 1.3 版中,--dry-run 旗標的語法取決於您執行的 kubectl 版本。使用下列指令檢查 kubectl 版本:

    kubectl version

    kubectl 1.17 以下版本:

    $APIGEECTL_HOME/apigeectl init -f overrides/overrides.yaml --dry-run=true

    kubectl 1.18 以上版本:

    $APIGEECTL_HOME/apigeectl init -f overrides/overrides.yaml --dry-run=client
  4. 如果沒有錯誤,請執行 init 指令,如下所示:
    $APIGEECTL_HOME/apigeectl init -f overrides/overrides.yaml

    init 指令會安裝 Apigee 部署服務、Apigee Deployment Controller 和 Apigee Admission Webhook。

  5. 如要檢查部署作業的狀態,可以使用下列指令:
    $APIGEECTL_HOME/apigeectl check-ready -f overrides/overrides.yaml
    kubectl get pods -n apigee-system
    kubectl get pods -n istio-system

    Pod 準備就緒後,請前往下一個步驟。

  6. 執行模擬測試安裝。執行 apply 指令並加上 --dry-run 旗標。

    kubectl 1.17 以下版本:

    $APIGEECTL_HOME/apigeectl apply -f overrides/overrides.yaml --dry-run=true

    kubectl 1.18 以上版本:

    $APIGEECTL_HOME/apigeectl apply -f overrides/overrides.yaml --dry-run=client
  7. 如果沒有錯誤,您可以使用下列指令,將 Apigee 專屬的執行階段元件套用至叢集:
    $APIGEECTL_HOME/apigeectl apply -f overrides/overrides.yaml
  8. 如要檢查部署作業的狀態,請執行下列指令:
    $APIGEECTL_HOME/apigeectl check-ready -f overrides/overrides.yaml

    重複這個步驟,直到所有 Pod 都準備就緒。Pod 可能需要幾分鐘才能啟動。

啟用 Apigee Connect

Apigee Connect 會管理 Apigee 管理層與執行階段層 MART 之間的通訊。詳情請參閱「使用 Apigee Connect」。

如要啟用 Apigee Connect,請按照下列步驟操作:

  1. 在指令列中取得 gcloud 驗證憑證,如下列範例所示:

    TOKEN=$(gcloud auth print-access-token)

    如要確認權杖是否已填入,請使用 echo,如下列範例所示:

    echo $TOKEN

    這時應該會以編碼字串的形式顯示權杖。

    詳情請參閱 gcloud 指令列工具總覽

  2. 使用下列指令,查看貴機構是否已啟用 Apigee Connect。
    curl -H "Authorization: Bearer $TOKEN" \
      "https://apigee.googleapis.com/v1/organizations/$ORG_NAME"

    其中 $ORG_NAME 是貴機構的 ID。

    如果輸出內容包含下列項目:

          "name" : "features.mart.connect.enabled",
          "value" : "true"

    Apigee Connect 已啟用,您可以略過本節的其餘內容。

  3. 使用下列指令啟用 Apigee Connect:
    curl -H "Authorization: Bearer $TOKEN" -X PUT \
      -H "Content-Type: application/json" \
      -d '{
        "name" : "'"$ORG_NAME"'",
        "properties" : {
          "property" : [ {
            "name" : "features.hybrid.enabled",
            "value" : "true"
          }, {
            "name" : "features.mart.connect.enabled",
            "value" : "true"
          } ]
        }
      }' \
      "https://apigee.googleapis.com/v1/organizations/$ORG_NAME"
    

    如果輸出內容包含下列屬性,表示 Apigee Connect 已成功啟用:

          {
            "name": "features.mart.connect.enabled",
            "value": "true"
          },
          {
            "name": "features.hybrid.enabled",
            "value": "true"
          }
    

    輸出內容應如下所示:

    {
      "name": "hybrid-example-2",
      "createdAt": "1594409699772",
      "lastModifiedAt": "1594776283697",
      "environments": [
        "example-env"
      ],
      "properties": {
        "property": [
          {
            "name": "features.mart.connect.enabled",
            "value": "true"
          },
          {
            "name": "features.hybrid.enabled",
            "value": "true"
          }
        ]
      },
      "analyticsRegion": "us-central1",
      "runtimeType": "HYBRID",
      "subscriptionType": "TRIAL"
    }