如何在PCF的Credhub中更新单个密钥且不覆盖其他密钥
解决PCF CredHub实例单个密钥更新不覆盖其他密钥的问题
问题原因
你使用cf update-service时通过-c传入单个键值对,这个操作是完全替换服务实例的配置参数,而非增量更新,所以现有其他密钥会被覆盖删除。
解决方案
以下两种方式可以实现仅更新特定键值、保留现有所有name:value对:
方法一:使用CredHub CLI(推荐)
直接通过CredHub CLI操作单个密钥,无需影响其他配置:
- 登录CredHub(PCF环境下通常可复用CF登录上下文,若需手动指定:
credhub login --server https://credhub.sys.your-pcf-domain.com --client-name credhub_cli --client-secret <your-cli-secret> - 定位目标CredHub实例的密钥路径:
找到对应credhub listCredhubMySecrets实例下的密钥,路径通常为/<your-org>/<your-space>/CredhubMySecrets/<key-name> - 更新单个密钥(以
dbpwd为例):credhub set -n /<your-org>/<your-space>/CredhubMySecrets/dbpwd -v "new-db-password" - 重启应用使新密钥生效:
cf restage <your-app-name>
方法二:通过PCF UI应用管理器操作
若需用UI实现,需先导出全部现有配置再修改:
- 进入PCF应用管理器,找到
CredhubMySecrets服务实例 - 查看服务实例的配置参数,复制所有现有
name:value键值对 - 修改其中需要更新的单个键值(如
dbpwd的新值) - 将包含所有未修改键值的完整配置粘贴到服务设置的配置框中,保存更新
- 重启对应应用,让新配置生效
注意事项
- 无论用CLI还是UI,不要仅提交单个键值对,否则会触发全量覆盖
- 使用CredHub CLI更适合批量或频繁更新场景,操作更精准
- 操作前建议备份所有密钥,避免意外丢失
内容的提问来源于stack exchange,提问作者Sanal Kumaran
相关产品推荐
相关产品推荐

