【问题标题】:Refreshing credentials/configuration in Azure VM scale sets刷新 Azure VM 规模集中的凭据/配置
【发布时间】:2021-04-13 17:37:01
【问题描述】:

在 Azure VM 规模集中自动刷新凭据或应用程序配置的推荐方法是什么?

场景

我在 Azure 中托管了一个可水平扩展的应用程序,用于接收实时流数据。我配置了一个简单的 CI/CD 管道,它使用应用程序二进制文件/库构建自定义不可变图像,然后将其发布到图像库。从那里,它被部署到具有负载均衡器前端的规模集,以在实例之间分配流量。在创建时,每个实例都会从 Blob 存储中获取应用程序配置文件,并从 Key Vault 中获取凭据。

问题

当应用程序配置或凭据发生更改时,这些更改在重新映像之前不会反映在正在运行的实例中。当应用程序处理流数据时,我必须手动执行“滚动重启”,方法是逐个重新映像每个实例,以确保在所有实例都更新到最新配置时应用程序仍然可用。

问题

Azure 提供本机“滚动升级”功能来处理规模集属性的更改。我在部署新镜像时已经使用了它,而且效果很好。但是,对 blob 存储中的应用程序配置或密钥保管库中的凭据的更改显然不会触发对规模集属性的更改。有没有办法实现相同的“滚动升级”过程来解决外部更改,而无需手动循环浏览实例并重新映像它们?或者,是否有更好的方法来管理应用程序配置/凭据?

【问题讨论】:

    标签: azure configuration devops azure-vm-scale-set


    【解决方案1】:

    如果您有用于从 Blob 存储中获取应用程序配置文件和从密钥保管库中获取凭据的脚本。建议使用 Custom Script Extension 在 Azure VM 规模集上运行这些脚本。自定义脚本扩展在 Azure VM 上下载和执行脚本。此扩展对于部署后配置、软件安装或任何其他配置/管理任务很有用。

    【讨论】:

    • 感谢您的信息!不幸的是,Azure 扩展还需要安装 Azure Linux 代理 (waagent)。我目前使用纯 cloud-init 进行配置,并希望避免添加 waagent 包,因为它需要大约 100MB 和一些额外的依赖项。我尝试以相同的方式使用 cloud-init 自定义数据,但对自定义数据定义的更改不会触发规模集更新。您是否知道任何其他可能的解决方案?
    • 由于 cloud-init 在初始启动过程中运行,它不会触发规模集更新。在这种情况下,您也可以参考上述链接中提到的Install applications with OS update
    • 感谢您的帮助!我最终部署了 Azure Linux 代理并使用了一个简单的自定义脚本扩展来清除 cloud-init 数据并重新启动 VM。这允许我切换扩展上的ForceUpdateTag 以触发滚动重启/重新配置。
    猜你喜欢
    • 1970-01-01
    • 2023-03-20
    • 2019-05-01
    • 1970-01-01
    • 2017-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多