在 Kubernetes 中,您可以为一个 ServiceAccount 绑定多个 Secret。
要将多个 Secret 绑定到一个 ServiceAccount,您需要创建一个 RoleBinding 或 ClusterRoleBinding,并将其绑定到 ServiceAccount 上。以下是一个例子:
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: myapp-secrets
namespace: default
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole # or just "Role" if you're using a non-cluster-scoped role
name: secret-reader # the name of the role that grants access to Secrets
subjects:
- kind: ServiceAccount
name: myapp-sa # the name of the ServiceAccount to bind to the role
---
apiVersion: v1
kind: Secret
metadata:
name: my-secret1 # the first Secret to bind to the ServiceAccount
type: Opaque
data:
username: YWRtaW4= # base64-encoded value for "admin"
---
apiVersion: v1
kind: Secret
metadata:
name : my-secret2 # the second Secret to bind to the ServiceAccount
type : Opaque
data :
password : MWYyZDFlMmU2N2Rm # base64-encoded value for "1f2d1e2e67df"
上面的 YAML 文件包括两个部分。第一部分是 RoleBinding
对象,它将 secret-reader
角色授权给名为 myapp-sa
的服务账户,并在默认命名空间中创建了一个名称为 myapp-secrets
的对象。第二部分是两个 Secret
对象,这些对象将绑定到 myapp-sa
服务账户。在这个例子中,我们有两个名称为 my-secret1
和 my-secret2
的 Secrets。
请注意,在您创建 RoleBinding 或 ClusterRoleBinding 时,您需要指定一个角色(例如上面的 secret-reader
角色),该角色定义了对哪些 Kubernetes 资源的访问权限。然后,通过将 ServiceAccount 指定为主体,并将 RoleBinding 绑定到 ServiceAccount 上来授予该 ServiceAccount 对这些资源的访问权限。
如果您想给不同命名空间中的 ServiceAccount 绑定多个 Secret,则需要创建具有正确命名空间的 RoleBinding 或 ClusterRoleBinding,并将其绑定到相应命名空间中的 ServiceAccount 上。