本主題說明如何為 Apigee Hybrid 建立新環境。如需簡介,請參閱「關於環境和環境群組」。
關於建立環境
建立環境時,必須完成以下工作:
- 使用 Apigee UI 或 Create environments API,在管理層中建立環境,並將其附加至環境群組。
- 將環境新增至覆寫檔案,並使用
apigee-envHelm 圖表在叢集中安裝環境的執行階段元件。
如果是新安裝的第一個環境,請參閱「步驟 3:新增環境」和「指定設定覆寫」中的說明。如要移除環境,請參閱「刪除環境」。
如何建立環境
下列步驟會將 prod 環境新增至已有 test 環境的安裝項目。
- 使用 Apigee UI 或 Create environments API,在管理層中建立環境。詳細步驟請參閱「步驟 3:新增環境」。
- 將環境連結至環境群組。Apigee 只會透過環境群組,將 API 流量轉送至環境。您可以在 Apigee UI 中將環境附加至現有環境群組,或使用環境群組附加 API,如下所示:
-
在指令列中,使用下列指令取得
gcloud驗證憑證:Linux / MacOS
TOKEN=$(gcloud auth print-access-token)
Windows
for /f "tokens=*" %a in ('gcloud auth print-access-token') do set TOKEN=%a - 將環境附加至環境群組:
無資料落地
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" } }
-
-
在覆寫檔案的
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" - name: prod serviceAccountPaths: synchronizer: "your_keypath/PROJECT_ID-apigee-synchronizer.json" runtime: "your_keypath/PROJECT_ID-apigee-runtime.json" ...
-
為新環境安裝
apigee-env圖表。您必須一次安裝一個環境,並使用--set env=ENV_NAME 指定。-
模擬測試:
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的錯誤。 - ENV_RELEASE_NAME 是用來追蹤
-
安裝圖表:
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.yamlRelease "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」。 -
確認環境正在執行:
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。