Documentation for this version is no longer maintained.
View documentation for the latest supported version.1.2. 在命名空间间共享 ConfigMap 对象
ConfigMap 对象存储非敏感配置数据,如应用程序 URL 或功能标记。SharedConfigMap 自定义资源(CR)可让您在没有手动重复的情况下,在集群中的多个命名空间中安全地共享 ConfigMap 对象。通过共享 ConfigMap 对象,您可以建立单个配置数据源并确保集群的一致性。
1.2.1. 创建 SharedConfigMap 自定义资源 复制链接链接已复制到粘贴板!
您可以创建 SharedConfigMap 自定义资源(CR)实例,以在命名空间间共享 ConfigMap 对象。
先决条件
-
您已创建了要在其他命名空间中共享的
ConfigMap对象。要创建ConfigMap对象,请参阅"添加输入 secret 和 configmaps"。 您必须具有执行以下操作的权限:
-
在集群范围的级别上创建
sharedconfigmaps.sharedresource.openshift.ioCR。 -
为
SharedConfigMapCR 创建ClusterRole对象。 -
为 Shared Resource Container Storage Interface (CSI)驱动程序创建
Role和RoleBinding对象。 - 管理集群中命名空间中的角色和角色绑定,以控制哪些用户可以获取、列出和监视实例。
-
管理角色和角色绑定,以便 pod 指定的服务帐户可以使用
SharedConfigMapCR 挂载引用ConfigMap对象的csi卷。 -
访问包含您要共享的
ConfigMap对象的命名空间。
-
在集群范围的级别上创建
流程
创建
Role和RoleBinding对象,为 Shared Resource CSI Driver 授予访问ConfigMap对象的权限。请参见以下示例配置:Role对象示例apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: shared-test-config namespace: <name_of_the_source_namespace> rules: - apiGroups: [""] resources: ["configmaps"] resourceNames: ["shared-config"] verbs: ["get", "list", "watch"]apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: shared-test-config namespace: <name_of_the_source_namespace>1 rules: - apiGroups: [""] resources: ["configmaps"] resourceNames: ["shared-config"] verbs: ["get", "list", "watch"]Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
<name_of_the_source_namespace> 替换为源命名空间的名称。
RoleBinding对象示例apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: shared-test-config namespace: <name_of_the_source_namespace> roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: shared-test-config subjects: - kind: ServiceAccount name: csi-driver-shared-resource namespace: openshift-buildsapiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: shared-test-config namespace: <name_of_the_source_namespace>1 roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: shared-test-config subjects:2 - kind: ServiceAccount name: csi-driver-shared-resource namespace: openshift-buildsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为您要在集群中的命名空间之间共享的
ConfigMap对象创建SharedConfigMapCR。以下示例显示了示例配置:apiVersion: sharedresource.openshift.io/v1alpha1 kind: SharedConfigMap metadata: name: share-test-config spec: configMapRef: name: shared-config namespace: <name_of_the_source_namespace>apiVersion: sharedresource.openshift.io/v1alpha1 kind: SharedConfigMap metadata: name: share-test-config1 spec: configMapRef: name: shared-config namespace: <name_of_the_source_namespace>2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个
ClusterRoleCR 实例,其授予基于角色的访问控制(RBAC)权限,以使用引用的共享资源。以下示例显示了示例配置:apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: <cluster_role_name> rules: - apiGroups: - sharedresource.openshift.io resources: - sharedconfigmaps resourceNames: - share-test-config verbs: - useapiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: <cluster_role_name>1 rules: - apiGroups: - sharedresource.openshift.io resources: - sharedconfigmaps resourceNames: - share-test-config2 verbs: - useCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.2.2. 在 pod 中使用 SharedConfigMap 自定义资源 复制链接链接已复制到粘贴板!
要从 pod 访问 SharedConfigMap 自定义资源(CR),您必须为关联的服务帐户授予所需的基于角色的访问控制(RBAC)权限,以使用该 SharedConfigMap CR。
先决条件
-
为您要在集群中的命名空间之间共享的配置映射创建
SharedConfigMapCR 实例。 您必须具有执行以下操作的权限:
-
运行
oc get sharedconfigmaps命令,以获取SharedConfigMapCR 实例的列表。 -
运行
oc adm policy who-can use <sharedsecret_identifier> 命令检查服务帐户是否可以使用SharedSecretCR,并且服务帐户列在命名空间中。 -
运行
oc describe clusterrole <roleName> 命令,以确认 pod 的服务帐户可以使用csi卷。如果以用户身份创建 pod,请确认您可以使用csi卷。
-
运行
如果您无法完成最后两个先决条件,集群管理员可以授予 RBAC 权限,使服务帐户能够使用 SharedConfigMap CR。
流程
创建与角色关联的
RoleBinding对象,并为服务帐户授予使用共享资源的权限。apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: use-shared-config namespace: <app_namespace> roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: use-shared-config subjects: - kind: ServiceAccount name: <service_account_name>apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: use-shared-config namespace: <app_namespace>1 roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: use-shared-config subjects: - kind: ServiceAccount name: <service_account_name>2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 Shared Resource Container Storage Interface (CSI)驱动程序挂载到 pod 或接受
csi卷的任何其他资源中。apiVersion: v1 kind: Pod metadata: name: example-shared-config namespace: <app_namespace> spec: ... serviceAccountName: default volumes: - name: shared-config csi: readOnly: true driver: csi.sharedresource.openshift.io volumeAttributes: sharedConfigMap: share-test-configapiVersion: v1 kind: Pod metadata: name: example-shared-config namespace: <app_namespace>1 spec: ... serviceAccountName: default volumes: - name: shared-config csi: readOnly: true driver: csi.sharedresource.openshift.io volumeAttributes: sharedConfigMap: share-test-config2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要如果
sharedConfigMap属性的值与sharedConfigMap实例的名称不匹配,则 pod 无法启动。