azure - 逻辑应用 CI/CD - 为什么将工作流视为基础设施?

标签 azure azure-pipelines azure-logic-apps azure-resource-manager azure-pipelines-yaml

我在我的一个项目中使用逻辑应用程序,我认为使用 Azure Pipeline 会很好,甚至只是了解 CI/CD。我已经弄清楚如何使用 Azure Function 进行 CI/CD(我项目的另一部分使用 Functions)。然而,逻辑应用程序有点奇怪。我见过的所有示例都使用 ARM 模板来部署逻辑应用程序 ( MSDN example )。

这意味着我不仅会部署逻辑应用程序的工作流程,还会部署 Azure 中的逻辑应用程序资源。这是为什么?

对于 Azure Function 代码,我在 Azure 中有一个手动设置的 Azure Function 资源,在管道中,我只需将代码部署到其中 - 我不需要基础设施部署。因此,管道中的步骤类似于:

  1. 构建 Function 应用
  2. 将代码部署到 Function

现在,随着逻辑应用程序的添加,它将开始看起来像这样:

  1. 构建 Function 应用
  2. 将代码部署到 Function
  3. 部署逻辑应用资源(ARM 中包含的工作流)

我看到的问题:

  1. 如果我的所有基础设施都在 ARM 中,IaC 会很好。我其实并不打算拥有它(我懒得为 azure 函数、表存储和我的其他资源这样做:P)。我不想部分采用基础设施即代码。
  2. 为什么 Logic App 的工作流程被视为 ARM 的一部分?我觉得我的应用服务的 ARM 似乎包含 C# 代码。奇怪!
  3. 在逻辑应用程序的 ARM 中,我必须指定工作流属性的值。我不想那样。我将这些属性视为应用程序服务的配置。我不想将这些值保留在我的仓库中。我希望能够在 Azure 中的逻辑应用程序中随时更改它(就像我可以更改 Azure 函数的配置一样),并且我希望在运行管道时不修改这些值!

我错过了什么吗?

最佳答案

在下面找到您问题的答案。

IaC would be nice if all my infrastructure was in ARM. I do not really intend to have it (I am too lazy to do it for azure functions, table storage, and the rest of my resources :P). I don't want to have partly Infrastructure as Code.

随着企业迈向数字化,logic apps通过提供预构建 API 作为Microsoft 管理的连接器,帮助您更轻松、更快速地连接旧版、现代和尖端系统。这样,您就可以专注于应用程序的业务逻辑和功能。您不必担心构建、托管、扩展、管理、维护和监控应用程序。 逻辑应用会为您解决这些问题。另外,您只需根据消耗量付费 pricing model .

在许多情况下,您不必编写代码。但是,如果您必须编写一些代码,则可以使用 Azure Functions 创建代码片段。并从逻辑应用程序按需运行该代码。此外,如果您的逻辑应用需要与来自 Azure 服务、自定义应用或其他解决方案的事件进行交互,您可以使用 Azure Event Grid与您的逻辑应用一起进行事件监视、路由和发布。

Why is Logic App's workflow treated as part of ARM? I feel it's as if my App Service's ARM would contain C# code. Weird!

这就是它的设计方式。如果您不需要工作流程(将在 ARM 模板中),您可以选择 Azure Functions 等服务 - 但在这里您必须自己编写、维护和管理代码。

In Logic App's ARM I have to specify values for workflow's properties. I don't want that. I treat these properties like the Configuration of an App Service. I don't want to keep these values in my repo. I want to be able to change it whenever I need in a Logic App in Azure (like I can change Configuration of Azure Function) and I want these values to not be modified when I run my pipeline!

如果您部署到开发、测试和生产环境,您可能会为每个环境使用不同的连接字符串。 您可以声明接受不同连接字符串的模板参数,然后将这些字符串存储在单独的参数文件中。这样,您就可以更改这些值,而无需更新和重新部署模板。

对于具有敏感或必须保护的参数值(例如密码和 secret )的情况,您可以将这些值存储在 Azure Key Vault 中。并让您的参数文件检索这些值。但是,在这些情况下,您需要重新部署以检索当前值。

要获取有关 Logic App 和此主题的更多信息,您可以访问以下 MSDocs 链接:

关于azure - 逻辑应用 CI/CD - 为什么将工作流视为基础设施?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64293755/

相关文章:

azure-devops - Azure Pipelines 从管道名称中排除提交消息

azure-pipelines - 具有多个存储库的 VSTS 构建

azure - 使用 Azure 逻辑应用在存储帐户容器中创建新文件夹时动态获取 Blob 内容

json - 该名称不能包含以下任何符号 : '[, ], .' . '.用于 Azure 逻辑应用程序中的 Compose

azure - 到 HDInsight Spark 的 Rest 接口(interface)以提交作业并读取结果

Azure Blob 存储静态站点托管重定向到后端 Web 应用程序

azure - 如何使用 prependpath 在 azure-pipeline 中设置路径

c# - 带投影的 Azure 表存储查询是否可以仅返回投影列而不包含 PK 和 RK?

azure - Azure 中同意场景中的授权被拒绝

每次我进入编辑模式时,Azure 逻辑应用设计器都会展开所有顶级操作