问题描述
我的项目是Windows Service应用程序,可以以几种角色安装(区别在于服务名称,exe路径和app.config中的某些设置)。每个角色可以根据实例数量水平缩放。并且所有这些{角色x副本数}应该按特定比例部署在一组服务器上,以实现有效的性能和利用率。
例如:
ServerA
- ServiceAlfa.1
- ServiceAlfa.2
- ServiceBravo
- ServiceDelta
ServerB
- ServiceBravo
- ServiceCharlie
- ServiceDelta.1
- ServiceDelta.2
- ServiceDelta.3
如何使用Azure DevOps(Dev17.M153.5)工具实现此目标? 我知道全新的yaml管道引入了一些环境和VM的概念。暂时没有最新的稳定版本。但这就像是早期用于部署到多台计算机的部署组的替代品,我可以使用它。我已经安装了部署代理并进行了注册。但是我仍然无法弄清楚如何更好地配置实例到发布管道中服务器的复杂映射。
我可以为每个角色创建一个工作阶段,并将它们与相应的变量组(如
)关联起来StageAlfa
- ServerA:2
StageBravo
- ServerA:1
- ServerB:1
StageCharlie
- ServerB:1
StageDelta
- ServerA:1
- ServerB:3
所以我应该检查并比较脚本中的服务器名称
或者我可以做相反的事情:在每台计算机上创建一个阶段,并将其与描述当前服务器上特定角色副本数的变量组链接。因此,在每个阶段,我都可以通过标签从部署组中选择特定的计算机。
看起来第二种方法更简单,但是它们都感觉很尴尬!
P.S。由于特定的Windows软件依赖关系,因此Windows机器上的Windows服务不是Kubernetes中的容器。
解决方法
您的方法是正确的。您可以考虑迁移到Azure DevOps服务或升级到支持Envorinments和VM的Azure DevOps Server 2020: