使用 APIOps 將 API 部署自動化

Azure API 管理
Azure DevOps
Azure Pipelines

APIOps 是一種方法,可將 GitOps 和 DevOps 的概念套用至 API 部署。 如同 DevOps,APIOps 可協助小組成員輕鬆地進行變更,並以反覆且自動化的方式加以部署。 此架構示範如何使用 APIOps 改善整個 API 生命週期和 API 品質。

架構

在 Azure 上使用 APIOps 進行自動化 API 部署的架構圖表。

下載此架構的 Visio 檔案

工作流程

  1. API 操作員執行擷取器管線,以同步處理 Git 存放庫與 API 管理 實例,並以所需的格式填入 git 存放庫 API 管理 物件。

  2. 如果在 API 管理 實例中偵測到 API 變更,則會建立提取要求 (PR),讓操作員檢閱。 操作員會將變更合併至 Git 存放庫。

  3. API 開發人員會複製 Git 存放庫、建立分支,以及使用其選擇的 OpenAPI 規格或工具來建立 API 定義。

  4. 如果開發人員將變更推送至存放庫,則會建立PR以供檢閱。

  5. 根據所需的控制層級而定,PR 可以自動核准或檢閱。

  6. 在核准和合併變更之後,發佈管線會將最新的變更部署到 API 管理 實例。

  7. API 操作員會建立和修改 API 管理 原則、診斷、產品和其他相關物件,然後認可變更。

  8. 變更會經過檢閱,並在核准後合併。

  9. 合併變更之後,發佈管線會使用 API 定義程式來部署變更。

元件

  • Azure API 管理 為後端服務建立一致的新式 API 閘道。 除了將 API 呼叫路由傳送至後端之外,此平臺也會驗證認證、強制執行使用量配額,以及記錄元數據。

  • Azure DevOps 是一項服務,可讓您端對端管理開發生命週期,包括規劃和專案管理、程式代碼管理,以及繼續建置和發行。

  • Azure Pipelines 可讓持續整合 (CI) 和持續傳遞 (CD) 測試及建置您的程式碼,並將其寄送至任何目標。

  • Azure Repos 是一組版本控制工具,包括標準 Git,可用來管理程序代碼。

替代項目

此解決方案會使用 Azure Repos 提供 Git 功能,而 Azure Pipelines 提供管線。 您可以使用任何可比較的技術。

案例詳細資料

APIOps 使用版本控制來管理 API,並建立 API、原則和作業變更的稽核線索。

使用 APIOps 方法的 API 開發人員會較早且更頻繁地檢閱和稽核 API,以更快捕捉和解決 API 標準的偏差,以改善規格和 API 品質。 您使用 APIOps 方法建置和部署的 API 越多,API 之間的一致性就越大。

此 APIOps 架構會使用 Azure API 管理 作為 API 管理平臺。 Azure DevOps 會組織 API 管理。 Azure Repos 提供 Git 功能,而 Azure Pipelines 會建立 CI/CD 管線。

潛在的使用案例

  • 任何開發和管理 API 的組織
  • 高管制行業:保險、銀行、金融、政府

考量

這些考慮會實作 Azure Well-Architected Framework 的要素,這是一組指導原則,可用來改善工作負載的品質。 如需詳細資訊,請參閱 Microsoft Azure Well-Architected Framework

安全性

安全性可提供針對蓄意攻擊和濫用寶貴數據和系統的保證。 如需詳細資訊,請參閱 安全性要素概觀。

此解決方案提供數個安全性相關優點。 個別開發人員,甚至是操作員,不會直接存取 API 管理 實例以套用變更或更新。 相反地,用戶會將變更推送至 Git 存放庫,以及擷取器和發佈管線的讀取,並將其套用至 API 管理 實例。 此方法遵循最低許可權的安全性最佳做法,方法是不授與小組 API 管理 服務實例的寫入許可權。 在診斷或疑難解答案例中,您可以依案例來授與提高的許可權一段時間。

若要確定 API 管理 實例使用安全性的最佳做法,您可以擴充此解決方案,藉由使用第三方工具和單元測試來強制執行 API 最佳做法。 如果 API 或原則的建議變更違反標準,Teams 可以透過PR檢閱提供早期意見反應。

除了設定存放庫許可權的工作之外,請考慮在 Git 存放庫中實作下列安全性措施,以同步處理至 API 管理 實例:

  • 提取要求 (PR) 檢閱:使用分支,並保護代表 API 管理 實例狀態的分支,使其無法直接推送變更。 要求PR至少有一個檢閱者強制執行四眼原則。
  • 不可變的歷程記錄:只允許在現有變更之上的新認可。 不可變的歷程記錄對於稽核目的特別重要。
  • 多重要素驗證:要求使用者啟用雙因素驗證。
  • 已簽署的認可:只允許在事實之後無法改變的已簽署認可。

成本最佳化

成本優化是減少不必要的費用,並提升營運效率。 如需詳細資訊,請參閱 成本優化要素概觀。

  • 使用 Azure 定價計算機來預估成本。

  • API 管理 提供下列層級:取用、開發人員、基本、標準和 進階版。

  • GitHub 提供免費服務。 不過,若要使用進階安全性相關功能,例如程式代碼擁有者或必要的檢閱者,您需要Team方案。 如需詳細資訊,請參閱 GitHub 定價

卓越營運

卓越營運涵蓋部署應用程式的作業程式,並讓它在生產環境中執行。 如需詳細資訊,請參閱 營運卓越支柱概觀。

APIOps 可以提升 API 開發和部署的 DevOps 生產力。 其中一項最實用的功能是能夠使用 Git 作業來快速回復非預期行為的變更。 認可圖表包含所有認可,因此有助於進行事後分析。

API 操作員通常會針對同一組 API 管理多個環境。 一般而言,API 的幾個階段會部署到不同的 API 管理 實例或共用 API 管理 實例中。 Git 存放庫是單一事實來源,會顯示目前部署至叢集的應用程式版本。

當有人在 Git 存放庫中建立 PR 時,API 操作員知道他們有要檢閱的新程式代碼。 例如,當開發人員採用OpenAPI規格並建置API實作時,他們會將此新程式代碼新增至存放庫。 操作員可以檢閱PR,並確定提交以供檢閱的API符合最佳做法和標準。

效能效益

效能效率是工作負載調整的能力,以符合使用者以有效率的方式滿足其需求。 如需詳細資訊,請參閱 效能效率要素概觀

APIOps 有許多優點,但隨著 API 管理 環境成長,管理它們的複雜性也是如此。 此解決方案可協助解決下列挑戰:

  • 保留所有環境和 API 管理 實例的概觀。
  • 追蹤 API 和原則的重要變更。
  • 為所有已部署的變更建立稽核線索。

部署此案例

部署此解決方案牽涉到下列步驟:

  • 在入口網站中開發 API,或使用您選擇的工具來變更 OpenAPI 規格。

    • 如果您在入口網站中進行變更,您可以執行擷取器,從 API 管理 自動擷取所有 API 和其他相關原則、作業和組態。 您可以將此資訊同步處理至 Git 存放庫。

    • 或者,使用 Azure DevOps CLI 來 建立新的提取要求

  • 擷取器工作流程包含您採取下列步驟:

  • 在我們的案例中,將入口網站中的變更下載至 API 管理 實例的管線具有下列階段:建置擷取器從入口網站建立成品,以及建立範本分支

    • 組建擷取器

      這個階段會建置擷取器程序代碼。

    • 從入口網站建立成品

      此階段會執行擷取器,並建立類似 Git 存放庫結構的成品,如下列螢幕快照所示:

      顯示 'apim-instances' 和資料夾階層的 'APIM-automation' 螢幕快照。

      • 建立範本分支

        產生成品之後,此階段會建立PR,其中會擷取變更以供平臺小組檢閱。

        第一次執行擷取器時,它會從 Git 存放庫提取所有專案。 所建立的 PR 將會包含所有 API、原則、成品等等。

        之後的擷取只會在PR中的擷取之前進行變更。 有時候,變更可能只變更為 API 的規格,這在下列 PR 範例中就是這種情況。

        擷取之後範例提取要求的螢幕快照,其中顯示名為 『specification.yml』 檔案的建議變更。

  • 檢閱者移至 提取要求 ,以檢視更新的提取要求。 您也可以設定自動核准,將此步驟自動化。

    範例提取要求的螢幕快照,其中顯示 「policy.xml」中內容的變更,並只會變更其他檔案中的空格符。

  • 核准PR之後,它會觸發另一個從API 管理 發佈至入口網站的管線。 在我們的範例中, 它有下列階段: 建置建立者建置終止符發佈APIM實例

    APIM-publish-to-portal 中階段的螢幕快照,也就是管線。

    • 組建 建立者 階段會處理新 API 的建立。
    • 組建 終止符 階段會處理任何刪除。
    • 發行APIM實例階段會將變更發佈至 API 管理 實例。

    此螢幕快照顯示 APIM-publish-to-portal 管線範例執行中的作業。

    成功執行此管線之後,它會在 API 管理 實例中發佈變更。

參與者

本文由 Microsoft 維護。 原始投稿人如下。

主體作者:

若要查看非公用LinkedIn配置檔,請登入LinkedIn。

下一步