在部署期间替换 Service Fabric 应用程序参数
Substitute Service Fabric application parameters during deployment
我正在设置我的生产环境并希望保护我的环境相关变量。
目前,每个环境都有自己的应用程序参数文件,效果很好,但我不希望我团队中的每个开发人员都知道生产连接字符串和其他可能出现在其中的敏感内容。
所以我正在寻找所有可用的可能性。
我已经在 Azure DevOps 中看到了这一点,我目前正在为我的 CI/CD 使用它,有一些可能的变量替换(xml 转换)。它可以在 SF 项目中使用吗?
我在另一个项目中通过 Octopus 看到了类似的东西。
是否有任何其他工具可以帮助我安全地(轻松地)管理我的环境变量?
我最终可以用我的 KeyVault 做到这一点吗?
有什么建议吗?
谢谢
编辑:我想如何管理这些值的示例;这是章鱼的截图:
所以我正在寻找与此类似的分离和注入值的东西。
您可以对 ApplicationParameter 文件进行 XML 转换,以便在部署之前更新其中的值。
另一种选择是使用 Powershell 更新应用程序并将参数作为参数传递给脚本。
Start-ServiceFabricApplicationUpgrade
命令接受带有参数的哈希表作为参数,从技术上讲,VSTS\DevOps 中的内置任务将应用程序参数转换为哈希表,脚本如下所示:
#Get the existing parameters
$app = Get-ServiceFabricApplication -ApplicationName "fabric:/AzureFilesVolumePlugin"
#Create a temp hashtable and populate with existing values
$parameters = @{ }
$app.ApplicationParameters | ForEach-Object { $parameters.Add($_.Name, $_.Value) }
#Replace the desired parameters
$parameters["test"] = "123test" #Here you would replace with your variable, like $env:username
#Upgrade the application
Start-ServiceFabricApplicationUpgrade -ApplicationName "fabric:/AzureFilesVolumePlugin" -ApplicationParameter $parameters -ApplicationTypeVersion "6.4.617.9590" -UnmonitoredAuto
注意现有的VSTS Task还有其他操作,比如将包复制到SF,在image store注册应用版本,需要复制。您可以从 Service Fabric 项目中的 Deploy-FabricApplication.ps1
文件复制完整脚本,并将其替换为您的更改。另一种方法是获取 VSTS 任务的源代码 here 并添加您的更改。
如果您打算使用 KeyVault,我建议应用程序直接访问 KeyVault 上的值,而不是将其传递给 SF,这样,您可以在不重新部署应用程序的情况下更改 KeyVault 中的值。在部署中,您只会传递 KeyVault credentials\configuration.
我正在设置我的生产环境并希望保护我的环境相关变量。 目前,每个环境都有自己的应用程序参数文件,效果很好,但我不希望我团队中的每个开发人员都知道生产连接字符串和其他可能出现在其中的敏感内容。
所以我正在寻找所有可用的可能性。 我已经在 Azure DevOps 中看到了这一点,我目前正在为我的 CI/CD 使用它,有一些可能的变量替换(xml 转换)。它可以在 SF 项目中使用吗? 我在另一个项目中通过 Octopus 看到了类似的东西。 是否有任何其他工具可以帮助我安全地(轻松地)管理我的环境变量? 我最终可以用我的 KeyVault 做到这一点吗? 有什么建议吗? 谢谢
编辑:我想如何管理这些值的示例;这是章鱼的截图:
所以我正在寻找与此类似的分离和注入值的东西。
您可以对 ApplicationParameter 文件进行 XML 转换,以便在部署之前更新其中的值。
另一种选择是使用 Powershell 更新应用程序并将参数作为参数传递给脚本。
Start-ServiceFabricApplicationUpgrade
命令接受带有参数的哈希表作为参数,从技术上讲,VSTS\DevOps 中的内置任务将应用程序参数转换为哈希表,脚本如下所示:
#Get the existing parameters
$app = Get-ServiceFabricApplication -ApplicationName "fabric:/AzureFilesVolumePlugin"
#Create a temp hashtable and populate with existing values
$parameters = @{ }
$app.ApplicationParameters | ForEach-Object { $parameters.Add($_.Name, $_.Value) }
#Replace the desired parameters
$parameters["test"] = "123test" #Here you would replace with your variable, like $env:username
#Upgrade the application
Start-ServiceFabricApplicationUpgrade -ApplicationName "fabric:/AzureFilesVolumePlugin" -ApplicationParameter $parameters -ApplicationTypeVersion "6.4.617.9590" -UnmonitoredAuto
注意现有的VSTS Task还有其他操作,比如将包复制到SF,在image store注册应用版本,需要复制。您可以从 Service Fabric 项目中的 Deploy-FabricApplication.ps1
文件复制完整脚本,并将其替换为您的更改。另一种方法是获取 VSTS 任务的源代码 here 并添加您的更改。
如果您打算使用 KeyVault,我建议应用程序直接访问 KeyVault 上的值,而不是将其传递给 SF,这样,您可以在不重新部署应用程序的情况下更改 KeyVault 中的值。在部署中,您只会传递 KeyVault credentials\configuration.