你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 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 管理实例同步,并使用所需格式的 API 管理对象填充 Git 存储库。

  2. 如果在 API 管理实例中检测到 API 更改,则会创建一个拉取请求 (PR) 供操作员审查。 操作员将更改合并到 Git 存储库中。

  3. API 开发人员使用他们选择的 OpenAPI 规范或工具克隆 Git 存储库、创建分支并创建 API 定义。

  4. 如果开发人员将更改推送到存储库,则会创建 PR 以供审查。

  5. 根据所需的控制级别,可以自动批准或评审 PR。

  6. 批准和合并更改后,发布管道会将最新的更改部署到 API 管理实例。

  7. API 操作员创建和修改 API 管理策略、诊断、产品和其他相关对象,然后提交更改。

  8. 评审更改,批准后会合并这些更改。

  9. 合并更改后,发布管道使用 API 定义过程来部署更改。

组件

  • Azure API Management 为后端服务创建一致的新式 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 架构良好的框架的支柱原则,即一套可用于改进工作负载质量的指导原则。 有关详细信息,请参阅 Microsoft Azure 架构良好的框架

安全性

安全性针对蓄意攻击及滥用宝贵数据和系统提供保障措施。 有关详细信息,请参阅安全性支柱概述

此解决方案提供了几个与安全相关的好处。 单个开发人员甚至操作员不直接访问 API 管理实例即可应用更改或更新。 相反,用户将更改推送到 Git 存储库,提取器和发布管道对其进行读取并将其应用到 API 管理实例。 此方法遵循最小权限的安全最佳做法,不会授予团队对 API 管理服务实例的写入权限。 在诊断或故障排除方案中,你可以根据具体情况在有限时间内授予提升权限。

为确保 API 管理实例使用最佳安全做法,你可以扩展此解决方案以通过使用第三方工具和单元测试来实施 API 最佳做法。 如果建议更改 API 或策略违反了标准,团队可以通过 PR 评审提供早期反馈。

除了设置存储库权限的任务之外,请考虑在同步到 API 管理实例的 Git 存储库中实施以下安全措施:

  • 拉取请求 (PR) 评审:使用分支,并防止直接将更改推送到表示 API 管理实例状态的分支。 要求 PR 至少有一名评审者,以强制实施四眼原则。
  • 不可变的历史记录:仅允许在现有更改之上进行新的提交。 不可变的历史记录对于审核目的尤其重要。
  • 多重身份验证:要求用户激活双重身份验证。
  • 已签名提交:仅允许事后不可更改的已签名提交。

成本优化

成本优化就是减少不必要的费用和提高运营效率。 有关详细信息,请参阅成本优化支柱概述

  • 使用 Azure 定价计算器估算成本。

  • API 管理提供以下层:消耗层、开发人员、基本层、标准层和高级版。

  • GitHub 提供免费服务。 但若要使用高级安全性相关的功能(例如代码所有者或所需的评审者),则需要团队计划。 有关详细信息,请参阅 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-实例”和文件夹层次结构的“APIM-自动化”屏幕截图。

      • 创建模板分支

        生成工件后,此阶段会创建一个 PR,其中包含提取的更改以供平台团队评审。

        第一次运行提取程序时,它会从 Git 存储库中提取所有内容。 创建的 PR 将包含所有 API、策略、项目等。

        以后的提取仅包含在 PR 中提取之前所做的更改。 有时,更改可能只针对 API 的规范,如以下示例所示的 PR。

        提取后的示例拉取请求屏幕截图,显示名为“specification.yml”的文件提议更改。

  • 评审者转到“拉取请求”以查看更新的拉取请求。 你还可以配置自动批准来自动完成此步骤。

    示例拉取请求屏幕截图,显示 “policy.xml”内容更改和其他文件的空格更改。

  • 批准 PR 后,会触发另一个从 API 管理发布到门户的管道。 在我们的示例中, 它具有以下阶段:生成创建者、生成终结者和发布 APIM 实例。

    管道 APIM-发布-门户阶段屏幕截图。

    • 生成创建者阶段处理新 API 的创建。
    • 生成终止符阶段处理任何删除。
    • 发布 APIM 实例阶段发布对 API 管理实例的更改。

    显示管道 PIM-发布-门户示例运行中作业的屏幕截图。

    此管道成功运行后,它会在 API 管理实例中发布更改。

作者

本文由 Microsoft 维护, 它最初是由以下贡献者撰写的。

主要作者:

若要查看非公开的 LinkedIn 个人资料,请登录到 LinkedIn。

后续步骤