【问题标题】:Configuration Management in AKS Deployment with Azure Pipelines for Different Environments使用适用于不同环境的 Azure Pipelines 在 AKS 部署中进行配置管理
【发布时间】:2020-01-10 05:57:00
【问题描述】:

我创建了一个 ASP.NET Core WebAPI 并使用 Azure Pipelines 部署在开发环境 (Kubernetes) 中。如果我需要在另一个环境(例如 SIT)中发布相同的 API,如何更新管道中的配置。因为我对 Dev 和 SIT 环境有不同的设置/配置。 请指导我。

【问题讨论】:

  • 好几天没有收到您的回复。您要更新什么配置,请详细描述。
  • @HughLin-MSFT,抱歉回复晚了。我正在通过 Azure Pipelines 使用 AKS 将 API 部署到 Kubernetes 集群。数据库连接字符串在“appsettings.json”中。当我想将相同的 API 部署到 QA/UAT/Prod 等其他环境时,就会出现问题。因为每个环境都有单独的数据库。
  • 您可以使用Replace Tokens扩展名替换appsettings.json中的数据库连接字符串。请查看以下答案。

标签: azure-devops azure-pipelines azure-aks


【解决方案1】:
【解决方案2】:

当我想将相同的 API 部署到其他 QA/UAT/Prod 等环境。由于每个环境都有 独立的数据库

对于这个问题,有几种方法可以实现。您可以在作业中添加Replace Tokens 扩展名,以替换appsettings.json 中的数据库连接字符串。

你可以像下面这样定义你的变量:

{
  "ConnectionStrings": {
    "DefaultConnection": "#{connectstring}#"
  }
}

详情可以参考这个caselab

以下是同一问题的一些参考:

Replacing database connection strings in the Docker image

Set Json Property task to replace the ConnectionStrings

【讨论】:

  • 如果是这种情况,我们可能需要为每个环境使用不同的构建管道,对吧?
  • 我觉得没有必要使用不同的构建管道,你只需要在replace tokens任务中替换不同的连接字符串。然后生成不同的工件,在发布中选择不同的工件部署到相应的环境。
  • 替换 'appsetting.json' 中的令牌将不起作用。因为在构建管道中,我将图像推送到带有替换值的 ACR。而且我只有一个构建管道。在发布管道中,我使用 AKS 部署到多个环境中。因此,所有环境中都将部署相同的应用设置。
  • 您可以设置阶段的批准来控制部署到哪个环境。请参考this
猜你喜欢
  • 1970-01-01
  • 2018-11-09
  • 1970-01-01
  • 2020-01-30
  • 2018-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多