11.4. 在外部使用服务帐户凭证
您可以将服务帐户的令牌分发给必须通过 API 身份验证的外部应用程序。
若要拉取镜像,经过身份验证的用户必须具有所请求的 imagestreams/layers
的 get
权限。要推送镜像,经过身份验证的用户必须具有所请求的 imagestreams/layers
的 update
权限。
默认情况下,一个项目中的所有服务帐户都有权拉取同一项目中的任何镜像,而 builder 服务帐户则有权在同一项目中推送任何镜像。
流程
查看服务帐户的 API 令牌:
$ oc describe secret <secret_name>
例如:
$ oc describe secret robot-token-uzkbh -n top-secret
输出示例
Name: robot-token-uzkbh Labels: <none> Annotations: kubernetes.io/service-account.name=robot,kubernetes.io/service-account.uid=49f19e2e-16c6-11e5-afdc-3c970e4b7ffe Type: kubernetes.io/service-account-token Data token: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...
使用您获取的令牌进行登录:
$ oc login --token=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...
输出示例
Logged into "https://server:8443" as "system:serviceaccount:top-secret:robot" using the token provided. You don't have any projects. You can try to create a new project, by running $ oc new-project <projectname>
确认您已经以服务帐户登录:
$ oc whoami
输出示例
system:serviceaccount:top-secret:robot