建立環境

本主題說明如何為 Apigee Hybrid 建立新環境。如需簡介,請參閱「關於環境和環境群組」。

關於建立環境

建立環境時,必須完成以下工作:

  • 使用 Apigee UI 或 Create environments API,在管理層中建立環境,並將其附加至環境群組。
  • 將環境新增至覆寫檔案,並使用 apigee-env Helm 圖表在叢集中安裝環境的執行階段元件。

如果是新安裝的第一個環境,請參閱「步驟 3:新增環境」和「指定設定覆寫」中的說明。如要移除環境,請參閱「刪除環境」。

如何建立環境

下列步驟會將 prod 環境新增至已有 test 環境的安裝項目。

  1. 使用 Apigee UI 或建立環境 API,在管理層中建立環境。詳細步驟請參閱「步驟 3:新增環境」。
  2. 將環境連結至環境群組。Apigee 只會透過環境群組,將 API 流量轉送至環境。您可以在 Apigee UI 中將環境附加至現有環境群組,或使用環境群組附加 API,如下所示:
    1. 在指令列中,使用下列指令取得 gcloud 驗證憑證:

      Linux / MacOS

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

      Windows

      for /f "tokens=*" %a in ('gcloud auth print-access-token') do set TOKEN=%a
    2. 將環境附加至環境群組:

      無資料落地

      curl -X POST -H "Authorization: Bearer $TOKEN" \
        -H "Content-Type: application/json" \
        -d '{"environment": "prod"}' \
        "https://apigee.googleapis.com/v1/organizations/ORG_NAME/envgroups/ENV_GROUP/attachments"

      資料落地設定

      curl -X POST -H "Authorization: Bearer $TOKEN" \
        -H "Content-Type: application/json" \
        -d '{"environment": "prod"}' \
        "https://CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/ORG_NAME/envgroups/ENV_GROUP/attachments"

      其中:

      • ORG_NAME 是 Apigee 組織的名稱。
      • ENV_GROUP 是環境群組的名稱。
      • 如果您使用資料落地權,CONTROL_PLANE_LOCATION 是貴組織的控制層位置。

      輸出結果會與下列內容相似:

      {
        "name": "organizations/ORG_NAME/operations/d4ce8118-6355-451e-bbe9-460e58d9d268",
        "metadata": {
          "@type": "type.googleapis.com/google.cloud.apigee.v1.OperationMetadata",
          "operationType": "INSERT",
          "targetResourceName": "organizations/ORG_NAME/envgroups/ENV_GROUP/attachments/ca81c6ec-e49a-49cd-8f97-63b402deee76",
          "state": "FINISHED"
        },
        "done": true,
        "response": {
          "@type": "type.googleapis.com/google.cloud.apigee.v1.EnvironmentGroupAttachment",
          "name": "ca81c6ec-e49a-49cd-8f97-63b402deee76",
          "environment": "prod"
        }
      }
  3. 在覆寫檔案的 envs[] 屬性中,新增環境定義。這項屬性是陣列,因此您可以新增多個環境定義。為新環境命名,名稱與您在管理層建立的環境相同。舉例來說,下列設定定義了兩個環境:test 和 prod:

    namespace: my-namespace
    org: my-organization
    ...
    envs:
      - name: test
        serviceAccountPaths:
          synchronizer: "your_keypath/PROJECT_ID-apigee-synchronizer.json"
          runtime: "your_keypath/PROJECT_ID-apigee-runtime.json"
          udca: "your_keypath/PROJECT_ID-apigee-udca.json"
    
      - name: prod
        serviceAccountPaths:
          synchronizer: "your_keypath/PROJECT_ID-apigee-synchronizer.json"
          runtime: "your_keypath/PROJECT_ID-apigee-runtime.json"
          udca: "your_keypath/PROJECT_ID-apigee-udca.json"
    ...
  4. 為新環境安裝 apigee-env 圖表。您必須一次安裝一個環境,並使用 --set env=ENV_NAME 指定。

    1. 模擬測試:

      helm upgrade ENV_RELEASE_NAME apigee-env/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        --set env=ENV_NAME \
        -f OVERRIDES_FILE \
        --dry-run=server
      

      其中:

      • ENV_RELEASE_NAME 是用來追蹤 apigee-env 圖表安裝和升級作業的名稱。Helm 版本名稱在 Apigee hybrid 安裝作業中不得重複。如果環境名稱不重複,則可與 ENV_NAME 相同。不過,如果環境和環境群組的名稱相同,請為兩者使用不同的 Helm 版本名稱。舉例來說,如果兩者都命名為 dev,您可以使用 dev-env-release 和 dev-envgroup-release。如要進一步瞭解 Helm 中的版本,請參閱 Helm 說明文件中的「Three big concepts」(三大概念)。
      • APIGEE_NAMESPACE 是您安裝 Apigee Hybrid 的命名空間,預設為 apigee。
      • ENV_NAME 是新環境的名稱。
      • OVERRIDES_FILE 是覆寫檔案的路徑。

      如果 ENV_NAME 與 envs[] 中的項目不符,指令會失敗,並顯示類似 Environment 'prod' not found in the provided environments 的錯誤。

    2. 安裝圖表:

      helm upgrade ENV_RELEASE_NAME apigee-env/ \
        --install \
        --namespace APIGEE_NAMESPACE \
        --atomic \
        --set env=ENV_NAME \
        -f OVERRIDES_FILE
      

      舉例來說,如要安裝 prod 環境,請執行下列指令:

      helm upgrade prod apigee-env/ --install --namespace apigee --atomic --set env=prod -f overrides.yaml
      Release "prod" does not exist. Installing it now.
      NAME: prod
      ...
      STATUS: deployed
      REVISION: 1

      如果您使用 Workload Identity,請將 IAM 服務帳戶的存取權授予新環境的 Kubernetes 服務帳戶。環境範圍 Kubernetes 服務帳戶名稱包含環境名稱的雜湊,因此您為其他環境建立的繫結不適用於新環境。如要使用 GKE 的 Workload Identity,請執行 helm upgrade 輸出內容中「NOTES」部分的指令。詳情請參閱「在 GKE 上啟用 Workload Identity」或「在 AKS 和 EKS 上啟用 Workload Identity Federation」。

    3. 確認環境正在執行:

      kubectl -n APIGEE_NAMESPACE get apigeeenv
      

      輸出結果會與下列內容相似:

      NAME                          STATE     AGE   GATEWAYTYPE
      apigee-my-org-prod-e8d4a16    running   3m
      apigee-my-org-test-f86941d    running   22d
      

如要進一步瞭解虛擬主機設定,請參閱「設定虛擬主機」。如需環境設定元素的完整清單,請參閱設定屬性參考資料中的 envs。