我们需要多个Azure API管理实例吗?适用于 DEV、UAT、PROD 环境? [是的,我们这样做。含有溶液]

问题描述 投票:0回答:2

我们需要多个Azure API管理实例吗?适用于 DEV、UAT、PROD 环境? 如果我们这样做,那么我们如何对开发实例进行源代码控制并以编程方式将其释放到 uat 和 prod。 我在网上的发现和自己的实践可以总结为:-

  1. 可以获得dev实例的源码控制,但是将同一个实例推送到uat apim实例会导致关键错误,因此dev apim实例的源代码只能被dev实例使用。
  2. 许多开发者选择从 dev apim 实例生成 OpenAPI 模板,然后将此 OpenAPI 模板导入到 uat apim 实例中。这仍然会导致所有 api 的后端路由手动更新(如果您有 100 个 api,哇,这需要大量复制粘贴和更新 uat api 路由)。
azure azure-functions azure-api-management
2个回答
2
投票

我已经成功解决了这个问题。指南如下。特别感谢silent为我指明了正确的方向。

设置 API 管理以进行源代码控制发布

术语表 意义
pt..5..apim01 开发api管理实例
pt..4..apim01 UAT api管理实例
https://pt..5..func01.azurewebsites.net/api 开发azure函数端点
https://pt..4..func01.azurewebsites.net/api UAT Azure 函数端点
  1. 在dev API管理中,如果这个azure函数后端存在,则将其删除。

注意*:在 Azure Function API 选项卡中链接 Azure Function 和 API Management 时,会自动创建此 az function 后端。 当我们选择自定义前端 api 端点时,这没有用。

dev apim backend

  1. 这些 Azure 功能密钥也应该删除,当在 Azure Function API 选项卡中链接 Azure 功能和 API 管理时,它会聚集在一起。

此处拥有此密钥将阻止源代码控制部署。您将遇到这样的错误(将在后面的步骤中显示部署)。

key not found

delete azure function key in named values

  1. 添加一个名为values的函数端点。

命名值就像全局变量。

  • 因为我在这里的声誉仍然是菜鸟,所以不允许我上传更多图片。我会尽可能更新图像,现在相信你的想象力。
  1. 使用指定值更新 api 后端重定向。
  • 从此,图1

  • 为此,图2

  1. 现在要进行源代码控制部署,请转到 Dev APIM 中的“存储库”选项卡。
  • 图1(保存到存储库)
  1. 生成凭证并将存储库克隆到本地。
  • 图1(访问凭证)
  • 图2(生成密码)
  • 图 3(将存储库克隆到本地计算机)
  1. 按照上述步骤将开发环境和 uat 环境的存储库克隆到本地计算机。最终文件夹结构如下:-
Directory: C:\..\repos\MY_APIM

pt..4..apim01.scm.azure-api.net
pt..5..apim01.scm.azure-api.net
  1. 现在复制 dev 文件夹的内容并粘贴/替换 uat 文件夹中的内容。

  2. Git 将更改推送到 UAT apim master 分支

  3. 确保在 UAT apim 中使用正确的值创建相同的命名值。

  • 图片 1(我们创建的
    function-endpoint
    变量)
  1. 现在在 uat apim 中,执行部署到 API 管理。这将部署我们最近推送到 api uat master 分支的更改。
  • 图1(部署到API管理)
  1. 部署成功后。
  • 图1(部署成功)

2
投票

“您需要多个实例”吗?从技术上讲不,您可以在一个实例中完成所有操作。

我是否建议您将实例分开并为每个环境设置专用的实例?哦是的! (顺便说一句,这基本上适用于任何组件)。为了节省成本,您可以将开发人员 SKU 用于除产品之外的所有产品(当然,这取决于您在 UAT 上执行的操作)。

如何将开发中的变更传递到其他阶段:这是一个有多种可能方式的主题。我过去实施过的内容如下:

  • 开发人员希望使用 Dev 进行手动更改并尝试直到满意为止。
  • 我们在所有实例上使用了 Git 集成。一旦 Dev 上的更改准备好转移到 UAT/Test,集成 Git 中的提交就完成了。这触发了一个工作流程,该工作流程将从 Dev 中提取最新版本并将其推送到 UAT 的 Git 存储库中。
  • 准备好上线后,对 Prod(来自 UAT)执行相同的操作。
© www.soinside.com 2019 - 2024. All rights reserved.