反模式:在不使用原始碼控管功能的情況下管理資源

您目前查看的是 ApigeeApigee Hybrid 說明文件。
查看 Apigee Edge 說明文件。

Apigee 提供許多不同類型的資源,每種資源都有不同的用途。某些資源只能透過 Apigee 使用者介面、Apigee API 或使用 API 的工具進行設定 (即建立、更新和/或刪除),且使用者必須具備必要角色和權限。舉例來說,只有屬於特定機構組織的機構管理員,才能設定這些資源。也就是說,這些資源無法由終端使用者透過開發人員入口網站設定,也無法透過任何其他方式設定。這些資源包括:

  • API Proxy
  • 共用流程
  • API 產品
  • 快取
  • KVM
  • KeyStore 和 TrustStore
  • 虛擬主機
  • 目標伺服器
  • 資源檔案

雖然這些資源的存取權受到限制,但即使是獲得授權的使用者,只要對這些資源進行任何修改,系統就會以新資料覆寫歷來資料。這是因為這些資源只會依目前狀態儲存在 Apigee 中。這項規則的主要例外狀況是 API Proxy 和共用流程。

受修訂版本控管的 API Proxy 和共用流程

API Proxy 和共用流程是透過修訂版本管理,也就是建立、更新及部署。修訂版本會依序編號,方便您新增變更並儲存為新修訂版本,或部署 API Proxy/共用流程的先前修訂版本,藉此還原變更。除非修訂版本具有不同的基本路徑,否則在任何時間點,環境中只能部署一個 API Proxy/共用流程修訂版本。

雖然 API Proxy 和共用流程是透過修訂版本管理,但如果對現有修訂版本進行任何修改,就無法還原,因為舊的變更只會遭到覆寫。

稽核與記錄

Apigee 提供「稽核」功能,有助於排解問題。這些功能可讓您查看特定作業 (建立、讀取、更新、刪除、部署及取消部署) 的執行者和時間等資訊。不過,如果對任何 Apigee 資源執行更新或刪除作業,稽核就無法提供舊資料。

反模式

直接透過 Apigee UI 或 API 管理 Apigee 資源 (如上所列),而不使用原始碼控管系統

有人誤以為 Apigee 可以在修改或刪除資源後,將資源還原至先前的狀態。不過,Apigee 不會將資源還原至先前的狀態。因此,使用者有責任確保所有與 Apigee 資源相關的資料都透過來源控管管理,以便在意外刪除或需要還原任何變更時,快速還原舊資料。這對實際工作環境尤其重要,因為執行階段流量需要這項資料。

以下列舉幾個例子,說明如果資料未透過來源控制系統管理,且遭到有意或無意修改/刪除,會造成哪些影響:

範例 1:刪除或修改 API Proxy

刪除 API Proxy 或在現有修訂版本中部署變更後,先前的程式碼將無法復原。如果 API 代理程式包含 Java、JavaScript 或 Python 程式碼,但這些程式碼並未在 Apigee 外部的來源控管管理 (SCM) 系統中管理,那麼您可能會損失大量開發工作和心血。

範例 2:使用特定虛擬主機判斷 API Proxy

虛擬主機上的憑證即將到期,因此需要更新虛擬主機。如果 API Proxy 數量眾多,可能難以找出哪些 API Proxy 使用該虛擬主機進行測試。如果 API Proxy 是在 Apigee 以外的 SCM 系統中管理,就能輕鬆搜尋存放區。

範例 3:刪除金鑰儲存區/信任儲存區

如果刪除虛擬主機或目標伺服器設定使用的金鑰儲存區/信任儲存區,除非金鑰儲存區/信任儲存區的設定詳細資料 (包括憑證和/或私密金鑰) 儲存在來源控管中,否則無法還原。

影響

  • 如果刪除任何 Apigee 資源,就無法從 Apigee 復原資源及其內容。
  • API 要求可能會因發生非預期錯誤而失敗,導致服務中斷,直到資源還原至先前的狀態為止。
  • 在 Apigee 中,很難搜尋 API Proxy 和其他資源之間的相互依附關係。

最佳做法

  • 搭配持續整合與持續部署 (CICD) 管道使用任何標準 SCM,管理 API Proxy 和共用流程。
  • 使用任何標準 SCM 管理其他 Apigee 資源,包括 API 產品、快取、KVM、目標伺服器、虛擬主機和金鑰儲存區。
    • 如果已有任何 Apigee 資源,請使用 Apigee API 以 JSON/XML 酬載的形式取得這些資源的設定詳細資料,並將其儲存在來源控管管理系統中。
    • 在原始碼控管管理系統中,管理這些資源的任何新更新。
    • 如需建立新的 Apigee 資源或更新現有資源,請使用儲存在來源控管管理系統中的適當 JSON/XML 酬載,並透過 API 更新 Apigee 中的設定。

* 無法透過 API 以純文字形式匯出加密的 KVM。使用者有責任記錄加密 KVM 中輸入的值。

延伸閱讀