azure - 在部署期间替换 Service Fabric 应用程序参数
问题描述
我正在设置我的生产环境并希望保护我的环境相关变量。目前,每个环境都有自己的应用程序参数文件,效果很好,但我不希望我团队中的每个开发人员都知道生产连接字符串和其他可能出现在其中的敏感内容。
所以我正在寻找所有可用的可能性。我已经看到,在我目前用于 CI/CD 的 Azure DevOps 中,存在一些可能的变量替换(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 任务还有其他操作,例如将包复制到 SF 并在映像存储中注册应用程序版本,您需要复制它。您可以从服务结构项目的文件中复制完整的脚本,Deploy-FabricApplication.ps1
并将其替换为您的更改。另一种方法是在此处获取 VSTS 任务的源代码并添加您的更改。
如果您计划使用 KeyVault,我建议应用程序直接访问 KeyVault 上的值,而不是将其传递给 SF,这样,您可以更改 KeyVault 中的值而无需重新部署应用程序。在部署中,您只需传递 KeyVault 凭据\配置。
推荐阅读
- sql - SQL Server 在大表上按日期过滤需要太长时间
- lit-element - 在 lit-element 中重用组件
- arrays - 如何删除置换矩阵中的反向行?
- karate - 如何在空手道中为肥皂请求设置请求正文参数
- python - 值错误:加载预训练模型 facenet_keras.h5 时出现错误的 Marshal 数据
- ruby-on-rails - 在设计中重置密码令牌不匹配问题
- amazon-web-services - 当总 S3 存储桶大小仅为 500 GB 左右时,为什么我会在账单中看到“每 GB - 下一个 450 TB/月使用的存储空间”?
- angular - 如何访问块外行为主体的订阅块变量
- sql - 如何将具有外键的实体框架迁移应用于具有数据的表
- android - 如何在 android studio 中更改应用程序的主题?