我在我的一个项目中使用逻辑应用程序,我认为使用 Azure Pipeline 会很好,甚至只是了解 CI/CD。我已经弄清楚如何使用 Azure Function 进行 CI/CD(我项目的另一部分使用 Functions)。然而,逻辑应用程序有点奇怪。我见过的所有示例都使用 ARM 模板来部署逻辑应用程序 ( MSDN example )。
这意味着我不仅会部署逻辑应用程序的工作流程,还会部署 Azure 中的逻辑应用程序资源。这是为什么?
对于 Azure Function 代码,我在 Azure 中有一个手动设置的 Azure Function 资源,在管道中,我只需将代码部署到其中 - 我不需要基础设施部署。因此,管道中的步骤类似于:
- 构建 Function 应用
- 将代码部署到 Function
现在,随着逻辑应用程序的添加,它将开始看起来像这样:
- 构建 Function 应用
- 将代码部署到 Function
- 部署逻辑应用资源(ARM 中包含的工作流)
我看到的问题:
- 如果我的所有基础设施都在 ARM 中,IaC 会很好。我其实并不打算拥有它(我懒得为 azure 函数、表存储和我的其他资源这样做:P)。我不想部分采用基础设施即代码。
- 为什么 Logic App 的工作流程被视为 ARM 的一部分?我觉得我的应用服务的 ARM 似乎包含 C# 代码。奇怪!
- 在逻辑应用程序的 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/