1.2. 在命名空间间共享 secret
要在集群中的命名空间间共享 secret,您可以为 Secret
对象创建一个 SharedSecret
自定义资源(CR)实例。
先决条件
-
您已创建了要在其他命名空间中共享的
Secret
对象。 您必须具有执行以下操作的权限:
- 您订阅了集群,并通过 Insights Operator 同步授权密钥。
-
您在集群范围的级别上创建了
sharedsecrets.sharedresource.openshift.io
自定义资源定义(CRD)的实例。 -
为
SharedConfigMap CR
创建ClusterRole
对象。 -
为 Shared Resource CSI Driver 创建
Role
和RoleBinding
对象。 - 您可以在集群中的命名空间中管理角色和角色绑定,以控制用户。
-
您可以管理角色和角色绑定,以控制 pod 指定的服务帐户是否可以挂载引用您要使用的
Secret
或Configmap
CR 的 Container Storage Interface (CSI)卷。 - 您可以访问包含您要共享 secret 的命名空间。
流程
使用以下示例配置,创建一个
SharedSecret
实例,在集群中命名空间间共享引用的Secret
:apiVersion: sharedresource.openshift.io/v1alpha1 kind: SharedSecret metadata: name: shared-test-secret 1 spec: secretRef: name: test-secret namespace: <name_of_the_source_namespace>
- 1
- 定义
SharedSecret
CR 的名称。
使用以下示例配置,创建一个
ClusterRole
对象来授予 RBAC 权限以使用引用的共享资源:. apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: use-shared-test-secret 1 rules: - apiGroups: - sharedresource.openshift.io resources: - sharedsecrets resourceNames: - shared-test-secret verbs: - use
- 1
- 定义
ClusterRole
CR 的名称。
创建
Role
和RoleBinding
对象,为 Shared Resources CSI 驱动程序授予访问SharedSecret
对象的权限:Role
对象示例apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: share-etc-pki-entitlement 1 namespace: openshift-config-managed rules: - apiGroups: - "" resources: - secrets resourceNames: - etc-pki-entitlement verbs: - get - list - watch
- 1
- 定义
Role
CR 的名称。
RoleBinding
对象示例apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: share-etc-pki-entitlement 1 namespace: openshift-config-managed roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: share-etc-pki-entitlement 2 subjects: - kind: ServiceAccount name: csi-driver-shared-resource 3 namespace: openshift-builds