ServiceAccountsController 是 Kubernetes 中的一个控制器,负责管理和维护 Service Account 资源。
Service Account 是 Kubernetes 中用于身份验证和授权的一种机制。它与 Pod 关联,为 Pod 提供一个身份标识。通过 Service Account,Pod 可以与 API 服务器进行身份验证,并根据其与 Service Account 关联的角色和权限来访问集群中的资源。
ServiceAccountsController 的主要职责包括以下几个方面:
- 创建Service Account:当创建Namespace 时,ServiceAccountsController 会检查该Namespace下是否存在”default” ServiceAccounts,如果不存在则创建。
1 |
|
启动入口
1 | // cmd/kube-controller-manager/app/core.go |
当 Pod 使用 ServiceAccount 运行时,Kubernetes 会自动为该 ServiceAccount 创建一个与之关联的 Token。这个 Token 通常存储在 Pod 的文件系统中的 /var/run/secrets/kubernetes.io/serviceaccount/token 文件中。Pod 中的容器可以通过读取该文件来获取与 ServiceAccount 相关联的 Token。
Token 是一种用于身份验证的凭据,它可以用于与 Kubernetes API 服务器进行身份验证和授权操作。Pod 中的容器可以使用 Token 来与 Kubernetes API 服务器交互,例如获取或修改资源对象。
通过 ServiceAccount 和 Token 的组合,Kubernetes 提供了一种安全的身份验证和授权机制。Pod 可以使用与其关联的 ServiceAccount 的 Token 来证明其身份,并在需要访问受保护资源时进行授权。这种机制确保了集群中的各个组件和应用程序具有适当的访问权限,并提供了更细粒度的权限控制。
1 | type TokensControllerOptions struct { |
REF:
1.pkg/controller/serviceaccount/serviceaccounts_controller.go
2.cmd/kube-controller-manager/app/core.go
3.pkg/controller/serviceaccount/tokens_controller.go