system:serviceaccount:<project>:<name>
服务帐户是一个 OpenShift Container Platform 帐户,允许组件直接访问 API。服务帐户是在每个项目中存在的 API 对象。服务帐户提供了一种灵活的方式来控制 API 访问,而无需共享普通用户的凭据。
当您使用 OpenShift Container Platform CLI 或 Web 控制台时,您的 API 令牌会对您进行 API 身份验证。您可以将组件与服务帐户关联起来,以便它们可以访问 API 而无需使用普通用户的凭据。例如,服务帐户可以允许
复制控制器进行 API 调用以创建或删除 Pod。
容器内的应用程序进行 API 调用以进行发现。
外部应用程序进行 API 调用以进行监控或集成。
每个服务帐户的用户名都源自其项目和名称。
system:serviceaccount:<project>:<name>
每个服务帐户也是两个组的成员。
组 | 描述 |
---|---|
system:serviceaccounts |
包含系统中的所有服务帐户。 |
system:serviceaccounts:<project> |
包含指定项目中的所有服务帐户。 |
每个服务帐户自动包含两个密钥。
API 令牌
OpenShift Container Registry 的凭据
生成的 API 令牌和注册表凭据不会过期,但您可以通过删除密钥来撤销它们。当您删除密钥时,会自动生成一个新的密钥来代替它。
您的 OpenShift Container Platform 集群包含用于集群管理的默认服务帐户,并为每个项目生成更多服务帐户。
一些基础架构控制器使用服务帐户凭据运行。以下服务帐户在服务器启动时在 OpenShift Container Platform 基础架构项目 (openshift-infra
) 中创建,并在集群范围内获得以下角色:
服务帐户 | 描述 |
---|---|
|
分配了 |
|
分配了 |
|
分配了 |
每个项目中都会自动创建三个服务帐户。
服务帐户 | 用途 | ||
---|---|---|---|
|
由构建 Pod 使用。它被赋予
|
||
|
由部署 Pod 使用,并被赋予
|
||
|
用于运行所有其他 Pod,除非它们指定不同的服务帐户。 |
项目中的所有服务帐户都具有 system:image-puller
角色,允许使用内部容器镜像注册表从项目中的任何镜像流中拉取镜像。
默认情况下,OpenShift Container Platform 为每个服务帐户创建一个镜像拉取密钥。
在 OpenShift Container Platform 4.16 之前,还会为创建的每个服务帐户生成一个长期存在的服务帐户 API 令牌密钥。从 OpenShift Container Platform 4.16 开始,不再创建此服务帐户 API 令牌密钥。 升级到 4.17 后,任何现有的长期存在的服务帐户 API 令牌密钥都不会被删除,并将继续运行。有关检测集群中正在使用的长期存在的 API 令牌或在不需要时删除它们的信息,请参阅 Red Hat 知识库文章 OpenShift Container Platform 中长期存在的服务帐户 API 令牌。 |
此镜像拉取密钥是将OpenShift镜像注册表集成到集群的用户身份验证和授权系统所必需的。
但是,如果您未启用ImageRegistry
功能,或者在集群镜像注册表操作员的配置中禁用了集成的OpenShift镜像注册表,则不会为每个服务帐户生成镜像拉取密钥。
在先前启用了集成的OpenShift镜像注册表的集群上禁用它时,先前生成的镜像拉取密钥将自动删除。
您可以在项目中创建一个服务帐户,并通过将其绑定到角色来授予其权限。
可选:查看当前项目中的服务帐户
$ oc get sa
NAME SECRETS AGE
builder 2 2d
default 2 2d
deployer 2 2d
在当前项目中创建一个新的服务帐户
$ oc create sa <service_account_name> (1)
1 | 要在不同的项目中创建服务帐户,请指定-n <project_name> 。 |
serviceaccount "robot" created
或者,您可以应用以下YAML来创建服务帐户
|
可选:查看服务帐户的密钥
$ oc describe sa robot
Name: robot
Namespace: project1
Labels: <none>
Annotations: <none>
Image pull secrets: robot-dockercfg-qzbhb
Mountable secrets: robot-dockercfg-qzbhb
Tokens: robot-token-f4khf
Events: <none>