步驟 8:啟用控制層存取權

如要讓執行階段層和控制層通訊,您必須使用 updateControlPlaneAccess API,為 Synchronizer 和數據分析發布者啟用必要權限。

取得授權權杖

如要發出本主題稍後所述的 Apigee API 呼叫,您必須取得具備 Apigee 機構管理員角色的授權權杖。

  1. 如果您不是與 Apigee hybrid 組織相關聯的 Google Cloud 雲端專案擁有者,請確認您的 Google Cloud 使用者帳戶具備 roles/apigee.admin (Apigee 組織管理員) 角色。您可以使用下列指令,查看指派給您的角色:
    gcloud projects get-iam-policy ${PROJECT_ID}  \
      --flatten="bindings[].members" \
      --format='table(bindings.role)' \
      --filter="bindings.members:your_account_email"
    

    例如:

    gcloud projects get-iam-policy my-project  \
      --flatten="bindings[].members" \
      --format='table(bindings.role)' \
      --filter="bindings.members:myusername@example.com"

    輸出內容應包含 roles/apigee.admin。

  2. 如果沒有 roles/apigee.admin,請將「Apigee Organization Admin」(Apigee 組織管理員) 角色新增至使用者帳戶。使用下列指令,將角色新增至使用者帳戶:
    gcloud projects add-iam-policy-binding ${PROJECT_ID} \
      --member user:your_account_email \
      --role roles/apigee.admin

    例如:

    gcloud projects add-iam-policy-binding my-project \
      --member user:myusername@example.com \
      --role roles/apigee.admin
  3. 在指令列中,使用下列指令取得 gcloud 驗證憑證:

    Linux / MacOS

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

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

    echo $TOKEN

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

    Windows

    for /f "tokens=*" %a in ('gcloud auth print-access-token') do set TOKEN=%a

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

    echo %TOKEN%

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

啟用同步器存取權

如要啟用同步器存取權,請按照下列步驟操作:

  1. 取得要授予同步器存取權的服務帳戶電子郵件地址。 如果是正式環境,則應為 apigee-synchronizer。非正式環境則應為 apigee-non-prod。請使用下列指令:

    正式環境

    gcloud iam service-accounts list --project ${PROJECT_ID} --filter "apigee-synchronizer"

    非正式環境

    gcloud iam service-accounts list --project ${PROJECT_ID} --filter "apigee-non-prod"
  2. 呼叫 updateControlPlaneAccess API,使用下列指令為同步器啟用必要權限:

    無資料落地

    curl -X PATCH -H "Authorization: Bearer $TOKEN" \
      -H "Content-Type:application/json" \
      "https://apigee.googleapis.com/v1/organizations/${ORG_NAME}/controlPlaneAccess?update_mask=synchronizer_identities" \
      -d "{\"synchronizer_identities\": [\"serviceAccount:apigee-synchronizer@${ORG_NAME}.iam.gserviceaccount.com\"]}"
    

    其中:

    • ${ORG_NAME}:混合式組織的名稱。
    • apigee-synchronizer@${ORG_NAME}.iam.gserviceaccount.com:服務帳戶的電子郵件地址。

    資料落地設定

    curl -X PATCH -H "Authorization: Bearer $TOKEN" \
      -H "Content-Type:application/json" \
      "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/${ORG_NAME}/controlPlaneAccess?update_mask=synchronizer_identities" \
      -d "{\"synchronizer_identities\": [\"serviceAccount:apigee-synchronizer@${ORG_NAME}.iam.gserviceaccount.com\"]}"
    

    其中:

    • CONTROL_PLANE_LOCATION:如果混合式安裝使用資料落地,則為控制層資料的位置。這是儲存客戶核心內容 (例如 Proxy 繫結) 的位置。如需清單,請參閱「可用的 Apigee API 控制層區域」。
    • ${ORG_NAME}:混合式組織的名稱。
    • apigee-synchronizer@${ORG_NAME}.iam.gserviceaccount.com:服務帳戶的電子郵件地址。
  3. 如要確認服務帳戶已設定,請使用下列指令呼叫 API,取得服務帳戶清單:

    無資料落地

    curl -X GET -H "Authorization: Bearer $TOKEN" \
      -H "Content-Type:application/json" \
      "https://apigee.googleapis.com/v1/organizations/${ORG_NAME}/controlPlaneAccess"
        

    資料落地設定

    curl -X GET -H "Authorization: Bearer $TOKEN" \
      -H "Content-Type:application/json" \
      "https://CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/${ORG_NAME}/controlPlaneAccess"
        

    輸出內容大致如下:

    {
      "synchronizerIdentities": [
        "serviceAccount:apigee-synchronizer@YOUR_ORG_NAME.iam.gserviceaccount.com"
      ]
    }

啟用 Analytics 發布商存取權

多個 Apigee hybrid 執行階段元件會發布數據分析和偵錯記錄,提供報表和偵錯資訊。如要啟用這項資料的發布功能,您必須將額外權限授予執行這些 Apigee 元件的服務帳戶,以便直接將資料發布至控制層。

如要啟用 Analytics 發布商存取權,請按照下列步驟操作:

  1. 取得要授予 Analytics 發布商存取權的服務帳戶電子郵件地址。 如果是正式環境,則應為 apigee-runtime、apigee-mart 和 apigee-mint-task-scheduler (如果您要啟用 Apigee Hybrid 的營利功能)。非正式環境則應為 apigee-non-prod。

    正式環境

    gcloud iam service-accounts list --project ${PROJECT_ID} --filter "apigee-runtime OR apigee-mart OR apigee-mint-task-scheduler"

    非正式環境

    gcloud iam service-accounts list --project ${PROJECT_ID} --filter "apigee-non-prod"
  2. 使用下列指令,為執行階段、MART 和 mint 工作排程器 (如果您在 v1.15.1 以上版本啟用 Apigee hybrid 營利功能) 元件的服務帳戶設定權限,將資料發布至控制層:

    無資料落地

    呼叫 updateControlPlaneAccess API,為執行階段和 MART 服務帳戶啟用權限:

    curl -X PATCH -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type:application/json" \
      "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/controlPlaneAccess?update_mask=analytics_publisher_identities" \
      -d "{\"analytics_publisher_identities\": [\"serviceAccount:apigee-mart@$ORG_NAME.iam.gserviceaccount.com\",\"serviceAccount:apigee-runtime@$ORG_NAME.iam.gserviceaccount.com\"]}"
    

    如要為 Apigee Hybrid 啟用營利功能,請設定 Mint 工作排程器服務帳戶的權限:

    curl -X PATCH -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type:application/json" \
      "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/controlPlaneAccess?update_mask=analytics_publisher_identities" \
      -d "{\"analytics_publisher_identities\": [\"serviceAccount:apigee-mart@$ORG_NAME.iam.gserviceaccount.com\",\"serviceAccount:apigee-runtime@$ORG_NAME.iam.gserviceaccount.com\",\"serviceAccount:apigee-mint-task-scheduler@$ORG_NAME.iam.gserviceaccount.com\"]}"
    

    其中下列是服務帳戶的電子郵件地址:

    • apigee-mart@${ORG_NAME}.iam.gserviceaccount.com
    • apigee-mint-task-scheduler@${ORG_NAME}.iam.gserviceaccount.com
    • apigee-runtime@${ORG_NAME}.iam.gserviceaccount.com

    資料落地設定

    呼叫 updateControlPlaneAccess API,為執行階段和 MART 服務帳戶啟用權限:

    curl -X PATCH -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type:application/json" \
      "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$ORG_NAME/controlPlaneAccess?update_mask=analytics_publisher_identities" \
      -d "{\"analytics_publisher_identities\": [\"serviceAccount:apigee-mart@$ORG_NAME.iam.gserviceaccount.com\",\"serviceAccount:apigee-runtime@$ORG_NAME.iam.gserviceaccount.com\"]}"
    

    如要為 Apigee Hybrid 啟用營利功能,請設定 Mint 工作排程器服務帳戶的權限:

    curl -X PATCH -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type:application/json" \
      "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$ORG_NAME/controlPlaneAccess?update_mask=analytics_publisher_identities" \
      -d "{\"analytics_publisher_identities\": [\"serviceAccount:apigee-mart@$ORG_NAME.iam.gserviceaccount.com\",\"serviceAccount:apigee-runtime@$ORG_NAME.iam.gserviceaccount.com\",\"serviceAccount:apigee-mint-task-scheduler@$ORG_NAME.iam.gserviceaccount.com\"]}"
    

    其中:

    • 如果混合式安裝使用資料落地,CONTROL_PLANE_LOCATION 是控制層資料的位置。這是儲存客戶核心內容 (例如 Proxy 繫結) 的位置。如需清單,請參閱「可用的 Apigee API 控制層區域」。
    • 以下是服務帳戶的電子郵件地址:

      • apigee-mart@${ORG_NAME}.iam.gserviceaccount.com
      • apigee-mint-task-scheduler@${ORG_NAME}.iam.gserviceaccount.com
      • apigee-runtime@${ORG_NAME}.iam.gserviceaccount.com

    回應內容應與下方類似:

    {
      "name": "organizations/YOUR_ORG_NAME/operations/8316aa78-c137-4733-92ec-cc0d2d92fd29",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.apigee.v1.OperationMetadata",
        "operationType": "UPDATE",
        "targetResourceName": "organizations/YOUR_ORG_NAME/controlPlaneAccess",
        "state": "IN_PROGRESS"
      }
    }
    
  3. 使用更新回應中「name」欄位的 ID,驗證作業狀態:

    無資料落地

    curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)"  \
      -H "Content-Type:application/json"  \
      "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/operations/$OPERATION_ID"

    資料落地設定

    curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)"  \
      -H "Content-Type:application/json"  \
      "https://CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$ORG_NAME/operations/$OPERATION_ID"

    回應內容應如下所示:

    {
      "name": "organizations/YOUR_ORG_NAME/operations/$OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.apigee.v1.OperationMetadata",
        "operationType": "UPDATE",
        "targetResourceName": "organizations/YOUR_ORG_NAME/controlPlaneAccess",
        "state": "FINISHED"
      },
      "done": true,
      "response": {
        "@type": "type.googleapis.com/google.cloud.apigee.v1.ControlPlaneAccess",
        "name": "organizations/YOUR_ORG_NAME/controlPlaneAccess"
      }
    }
    
  4. 驗證組織的 ControlPlaneAccess 設定:

    無資料落地

    curl "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/controlPlaneAccess" \
    -H "Authorization: Bearer $(gcloud auth print-access-token)"

    資料落地設定

    curl "https://CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$ORG_NAME/controlPlaneAccess" \
    -H "Authorization: Bearer $(gcloud auth print-access-token)"

    回應內容應如下所示:

    {
      "synchronizerIdentities": [
        "serviceAccount:apigee-synchronizer@YOUR_ORG_NAME.iam.gserviceaccount.com"
      ],
      "analyticsPublisherIdentities": [
        "serviceAccount:apigee-mart@YOUR_ORG_NAME.iam.gserviceaccount.com",
        "serviceAccount:apigee-mint-task-scheduler@YOUR_ORG_NAME.iam.gserviceaccount.com",
        "serviceAccount:apigee-runtime@YOUR_ORG_NAME.iam.gserviceaccount.com"
      ]
    }
    

您現在已啟用 Apigee Hybrid 執行階段和管理層,可進行通訊。接著,安裝 cert-manager,讓 Apigee Hybrid 解讀及管理憑證。

下一步

1 2 3 4 5 6 7 8 (下一步) 步驟 9:安裝 cert-manager 10 11