鉴于缺乏细节,这有点猜测,但是,服务越来越普遍地将其凭据存储在 CredHub 中,而不是将它们存储在 Cloud Controller 中。VCAP_SERVICES
如果您按照评论中的建议查看环境变量,这会导致看到占位符条目。
如果这是您所看到的,您需要更进一步来检索凭据(这正是服务执行此操作的确切点,它使得破坏服务的凭据变得更加困难)。
cf ssh
进入你的应用容器
- 跑
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 .
这可能看起来很神奇,所以我会分解它。
a.)curl
用于查询/api/v1/interpolate
CredHub 的端点。此 API 接受VCAP_SERVICES
with 占位符的内容并返回不带占位符的版本。b.)-d "$VCAP_SERVICES"
将请求的主体设置为$VCAP_SERVICES
. 这正是 API 调用所期望的。c.)您告诉使用&curl
处的证书和密钥执行双向 TLS 。这允许您使用 Credhub 进行身份验证。d.) 结果是 JSON,所以只是漂亮地打印响应。这是可选的。/etc/cf-instance/credentials.key
/etc/cf-instance/credentials.crt
jq .
您可以使用以相同方式配置的 HTTP 客户端在您选择的编程语言中实现相同的功能。但是,您必须从容器内部执行此操作,因为 CredHub 只能从那里获得,而且因为这是唯一可以获取对 CredHub 进行身份验证所需的证书/密钥的地方。