APIOps 是一种将 GitOps 和 DevOps 的概念应用于 API 部署的方法。 与 DevOps 一样,APIOps 可帮助团队成员轻松进行更改,并采用迭代和自动化的方式部署这些更改。 此体系结构演示了可如何使用 APIOps 改进整个 API 生命周期和 API 质量。
体系结构
下载此体系结构的 Visio 文件。
工作流
API 操作员运行提取器管道以将 Git 存储库与 API 管理实例同步,并使用所需格式的 API 管理对象填充 Git 存储库。
如果在 API 管理实例中检测到 API 更改,则会创建一个拉取请求 (PR) 供操作员审查。 操作员将更改合并到 Git 存储库中。
API 开发人员使用他们选择的 OpenAPI 规范或工具克隆 Git 存储库、创建分支并创建 API 定义。
如果开发人员将更改推送到存储库,则会创建 PR 以供审查。
根据所需的控制级别,可以自动批准或评审 PR。
批准和合并更改后,发布管道会将最新的更改部署到 API 管理实例。
API 操作员创建和修改 API 管理策略、诊断、产品和其他相关对象,然后提交更改。
评审更改,批准后会合并这些更改。
合并更改后,发布管道使用 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 管理实例。
输入分支、APIM 工件存储库、API 管理实例和资源组的名称。
在我们的场景中,将门户中的更改下载到 API 管理实例的管道具有以下阶段:生成提取程序、从门户创建工件和创建模板分支。
评审者转到“拉取请求”以查看更新的拉取请求。 你还可以配置自动批准来自动完成此步骤。
批准 PR 后,会触发另一个从 API 管理发布到门户的管道。 在我们的示例中, 它具有以下阶段:生成创建者、生成终结者和发布 APIM 实例。
- 生成创建者阶段处理新 API 的创建。
- 生成终止符阶段处理任何删除。
- 发布 APIM 实例阶段发布对 API 管理实例的更改。
此管道成功运行后,它会在 API 管理实例中发布更改。
作者
本文由 Microsoft 维护, 它最初是由以下贡献者撰写的。
主要作者:
- Rishabh Saha | 首席解决方案架构师
若要查看非公开的 LinkedIn 个人资料,请登录到 LinkedIn。
后续步骤
- Azure Pipelines
- 针对 Azure API 管理的 APIOps
- 用于使用 Azure 资源管理器模板进行 API 管理的 CI/CD
- GitOps 概述
- Weave GitOps
- 教程:在已启用 Azure Arc 的 Kubernetes 群集上使用 GitOps 部署配置