CloudFoundry CLI -获取绑定凭据



是否有办法从PCF CLI获得绑定凭据?例如,我想获得数据库凭据。

更多细节:

当你在manifest中使用Redis, cloudSQL等服务时。Yml文件,PCF绑定这些服务并生成凭据,应用程序使用它们。如果我想获得本地使用的积分,我需要登录PCF并前往服务获取这些积分。相反,我希望能够从cli获得这些信用,而不必登录到pcf UI。cf env <service>显示VCAP_SERVICES json。但是对于数据库,它不显示凭据。不过,这对Redis来说是显而易见的。对于数据库,我必须去Web,然后去服务,然后去数据库服务获取凭据。

考虑到缺乏细节,这有点像猜测,但是,服务将其凭据存储在CredHub中而不是将其存储在Cloud Controller中越来越普遍。如果您按照评论中的建议查看环境变量,就会在VCAP_SERVICES中看到占位符条目。

如果这就是您所看到的,则需要进一步检索凭据(这是服务执行此操作的确切点,这会使服务的凭据更加难以破坏)。

  1. cf ssh到你的应用程序容器
  2. 运行curl -vv -i -H 'Content-Type: application/json' --cert /etc/cf-instance-credentials/instance.crt --key /etc/cf-instance-credentials/instance.key -d "$VCAP_SERVICES" 'https://credhub.service.cf.internal:8844/api/v1/interpolate' | jq .

这可能看起来像魔法,所以我将分解它。

)。它使用curl来查询CredHub的/api/v1/interpolate端点。这个API接受带有占位符的VCAP_SERVICES的内容,并返回一个没有占位符的版本。b。)-d "$VCAP_SERVICES"将请求的主体设置为$VCAP_SERVICES的内容。这正是API调用所期望的。c。)您正在告诉curl使用证书&钥匙在/etc/cf-instance/credentials.key&/etc/cf-instance/credentials.crt。这允许您使用Credhub进行身份验证。d。)结果是JSON,所以jq .只是漂亮地打印响应。它是可选的。

您可以使用以相同方式配置的HTTP客户端,在您选择的编程语言中实现相同的功能。您必须从容器内部执行此操作,因为只有从容器中才能获得CredHub,而且这也是您可以获得认证到CredHub所需的证书/密钥的唯一地方。

最新更新