【问题标题】:Azure Service Fabric - selective update of service parameters with Powershell?Azure Service Fabric - 使用 Powershell 选择性更新服务参数?
【发布时间】:2018-09-24 21:11:08
【问题描述】:

我们有一个包含多个应用和服务的 Azure Service Fabric 集群。一些服务包含多达 50 个参数(表示在 Service Fabric Explorer 中单击给定服务的详细信息选项卡时会看到的 Key:Value 对)。

我需要从 50 多个参数列表中更新其中一个。我的一位开发人员的印象是,您可以更改其中一个参数的唯一方法是运行一个 Powershell 脚本,该脚本包含脚本中的所有服务参数。换句话说,如果您尝试使用仅要更新的参数运行脚本,您将删除所有其他参数。

问题 1:是否真的无法在脚本中不包含所有现有参数的情况下仅更新一个 Service Fabric 服务参数?

问题 2:是否有任何工具/模板可帮助您构建 Powershell 脚本以在 Service Fabric 中进行此类更改?

【问题讨论】:

  • 你说的是来自Settings.xml的参数吗?
  • @OlegKarasik 不,不是PackageRoot/Config 下的settings.xml。在 Visual Studio 中构建 Service Fabric 解决方案时,该解决方案的 Service Fabric 部分下将有一个名为 ApplicationParameters 的文件夹。在此文件夹中将有许多 XML 文件 - 当您第一次构建解决方案时,它默认包含 3 个称为 Cloud.xml、Local.1Node.xml 和 Local.5Node.xml。这些文件用于输入和存储与您的应用程序相关的键:值对。您使用哪个 xml 文件取决于您的部署方式(到云,或到 SFC 的本地实例)。
  • 很遗憾,如果不执行应用程序升级或远程/创建新应用程序,就无法更新参数。如果您使用的是 Azure DevOps (VSTS),则有一组与发布配置文件集成的操作(Cloud.xml 等),并且可以在实际部署之前自动增加应用程序的版本(如 @DiegoMendes 所述)。如果由于某种原因该过程应该通过 PowerShell 脚本手动完成,那么我建议您尝试通过@SteppingRazor 解决方案。

标签: azure-service-fabric


【解决方案1】:

AFAIK 无法只更新一个参数。

服务结构具有包(代码、配置、数据)的概念,您可以在其中更改其中一个而不更改其他包,在您的情况下,您只需更改配置,但每次更改都会生成一个新版本,并且更改必须包括所有数据,因为您正在替换以前的版本,而不是修改它。

发布 SF 应用程序的“正确方法”(最佳)是使用 VSTS 之类的 CI/CD 工具来自动执行这些更改,而不是手动运行脚本,因为很难跟踪更改,而且迟早会很小像你想做的那样改变,变成一个巨大的痛苦。

如果这些版本是使用 CD 工具控制的,例如 VSTS、Octopus、Jenkins,您只需更改值并触发新版本。

【讨论】:

    【解决方案2】:

    一旦应用程序部署到集群,就可以连接到集群并检索当前参数列表,运行Get-ServiceFabricApplication 命令。

    所以可以通过自定义PowerShell脚本来实现。在部署期间,您可以收集现有参数值并与新参数组合。然后传递组合参数并部署应用程序。应该不难做到。

    这是我能想到的一种方式。而且我不认为有一些内置的功能。是的,开发人员是对的,您总是必须提供所有参数。

    【讨论】:

    • 我的帖子中可能有点不清楚 - 我确实知道如何通过 Powershell 进行更改 - 只是在寻找一种无需包含所有参数的方法。不过感谢您的回答,对于那些不了解Get-ServiceFabricApplication的人来说,这是很有价值的信息@
    猜你喜欢
    • 2018-10-19
    • 2017-12-17
    • 2016-04-07
    • 2016-09-24
    • 2017-06-09
    • 2018-10-27
    • 2020-01-23
    • 2017-10-30
    • 2016-07-26
    相关资源
    最近更新 更多