1.2.2. 在 pod 中使用 SharedConfigMap 自定义资源


要从 pod 访问 SharedConfigMap 自定义资源(CR),您必须为关联的服务帐户授予所需的基于角色的访问控制(RBAC)权限,以使用该 SharedConfigMap CR。

先决条件

  • 为您要在集群中的命名空间之间共享的配置映射创建 SharedConfigMap CR 实例。
  • 您必须具有执行以下操作的权限:

    • 运行 oc get sharedconfigmaps 命令,以获取 SharedConfigMap CR 实例的列表。
    • 运行 oc adm policy who-can use <sharedsecret_identifier > 命令检查服务帐户是否可以使用 SharedSecret CR,并且服务帐户列在命名空间中。
    • 运行 oc describe clusterrole <roleName > 命令,以确认 pod 的服务帐户可以使用 csi 卷。如果以用户身份创建 pod,请确认您可以使用 csi 卷。
注意

如果您无法完成最后两个先决条件,集群管理员可以授予 RBAC 权限,使服务帐户能够使用 SharedConfigMap CR。

流程

  1. 创建与角色关联的 RoleBinding 对象,并为服务帐户授予使用共享资源的权限。

    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
    1
    <app_namespace > 替换为应用程序的命名空间名称。
    2
    <service_account_name > 替换为应用程序的服务帐户名称。
  2. 将 Shared Resource Container Storage Interface (CSI)驱动程序挂载到 pod 或接受 csi 卷的任何其他资源中。

    apiVersion: 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-config 
    2
    1
    将 <app_namespace> 替换为应用程序的命名空间名称。
    2
    指定 sharedConfigMap 对象的名称。
    重要

    如果 sharedConfigMap 属性的值与 sharedConfigMap 实例的名称不匹配,则 pod 无法启动。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部