×

作为管理员,您可以使用组来管理用户、更改其权限和增强协作。您的组织可能已经创建了用户组并将其存储在 LDAP 服务器中。OpenShift Container Platform 可以将这些 LDAP 记录与内部 OpenShift Container Platform 记录同步,使您能够在一个位置管理您的组。OpenShift Container Platform 当前支持使用三种常用的定义组成员关系的模式与 LDAP 服务器进行组同步:RFC 2307、Active Directory 和增强的 Active Directory。

有关配置 LDAP 的更多信息,请参阅配置 LDAP 身份提供程序

您必须拥有cluster-admin权限才能同步组。

关于配置 LDAP 同步

在运行 LDAP 同步之前,您需要一个同步配置文件。此文件包含以下 LDAP 客户端配置详细信息

  • 连接到 LDAP 服务器的配置。

  • 取决于 LDAP 服务器中使用的模式的同步配置选项。

  • 管理员定义的名称映射列表,该列表将 OpenShift Container Platform 组名称映射到 LDAP 服务器中的组。

配置文件的格式取决于您使用的模式:RFC 2307、Active Directory 或增强的 Active Directory。

LDAP 客户端配置

配置部分定义了与 LDAP 服务器的连接。

配置部分定义了与 LDAP 服务器的连接。

LDAP 客户端配置
url: ldap://10.0.0.0:389 (1)
bindDN: cn=admin,dc=example,dc=com (2)
bindPassword: <password> (3)
insecure: false (4)
ca: my-ldap-ca-bundle.crt (5)
1 连接协议、托管数据库的 LDAP 服务器的 IP 地址以及要连接到的端口,格式为scheme://host:port
2 可选的区分名称 (DN),用作绑定 DN。如果需要提升的权限才能检索同步操作的条目,则 OpenShift Container Platform 将使用此名称。
3 可选的用于绑定的密码。如果需要提升的权限才能检索同步操作的条目,则 OpenShift Container Platform 将使用此密码。此值也可以在环境变量、外部文件或加密文件中提供。
4 当为false时,安全 LDAP (ldaps://) URL 使用 TLS 连接,不安全 LDAP (ldap://) URL 将升级到 TLS。当为true时,不会建立与服务器的 TLS 连接,并且您无法使用ldaps:// URL 方案。
5 用于验证已配置 URL 的服务器证书的证书包。如果为空,OpenShift Container Platform 将使用系统信任的根证书。这仅适用于insecure设置为false的情况。
LDAP 查询定义

同步配置包括需要同步的条目的 LDAP 查询定义。LDAP 查询的具体定义取决于用于在 LDAP 服务器中存储成员信息模式。

LDAP 查询定义
baseDN: ou=users,dc=example,dc=com (1)
scope: sub (2)
derefAliases: never (3)
timeout: 0 (4)
filter: (objectClass=person) (5)
pageSize: 0 (6)
1 所有搜索都将从中开始的目录分支的区分名称 (DN)。您必须指定目录树的顶部,但您也可以指定目录中的子树。
2 搜索的范围。有效值为baseonesub。如果未定义此值,则假定范围为sub。可以在下表中找到范围选项的说明。
3 关于 LDAP 树中别名的搜索行为。有效值为neversearchbasealways。如果未定义此值,则默认为always取消引用别名。可以在下表中找到取消引用行为的说明。
4 客户端允许搜索的时间限制(以秒为单位)。值为0表示没有客户端限制。
5 有效的 LDAP 搜索筛选器。如果未定义此值,则默认为(objectClass=*)
6 服务器响应页面的可选最大大小(以 LDAP 条目为单位)。如果设置为0,则不会对响应页面的大小进行限制。当查询返回的条目多于客户端或服务器默认允许的条目时,需要设置分页大小。
表 2. LDAP 引用取消行为
引用取消行为 说明

从不

从不取消 LDAP 树中找到的任何别名的引用。

搜索

仅取消搜索时找到的别名的引用。

base

仅在查找基础对象时取消别名的引用。

总是

始终取消 LDAP 树中找到的所有别名的引用。

用户定义的名称映射

用户定义的名称映射将 OpenShift Container Platform 组的名称显式映射到唯一标识符,这些标识符可在您的 LDAP 服务器上查找组。映射使用标准 YAML 语法。用户定义的映射可以包含 LDAP 服务器中每个组的条目,也可以只包含这些组的子集。如果 LDAP 服务器上存在没有用户定义名称映射的组,则同步期间的默认行为是使用指定为 OpenShift Container Platform 组名称的属性。

用户定义的名称映射
groupUIDNameMapping:
  "cn=group1,ou=groups,dc=example,dc=com": firstgroup
  "cn=group2,ou=groups,dc=example,dc=com": secondgroup
  "cn=group3,ou=groups,dc=example,dc=com": thirdgroup

关于 RFC 2307 配置文件

RFC 2307 模式要求您为用户和组条目提供 LDAP 查询定义,以及在内部 OpenShift Container Platform 记录中表示它们的属性。

为清晰起见,您在 OpenShift Container Platform 中创建的组应尽可能使用与区分名称不同的属性作为面向用户或管理员的字段。例如,通过电子邮件标识 OpenShift Container Platform 组的用户,并使用组的名称作为通用名称。以下配置文件创建了这些关系

如果使用用户定义的名称映射,您的配置文件将有所不同。

使用 RFC 2307 模式的 LDAP 同步配置:rfc2307_config.yaml
kind: LDAPSyncConfig
apiVersion: v1
url: ldap://LDAP_SERVICE_IP:389 (1)
insecure: false (2)
bindDN: cn=admin,dc=example,dc=com
bindPassword:
  file: "/etc/secrets/bindPassword"
rfc2307:
    groupsQuery:
        baseDN: "ou=groups,dc=example,dc=com"
        scope: sub
        derefAliases: never
        pageSize: 0
    groupUIDAttribute: dn (3)
    groupNameAttributes: [ cn ] (4)
    groupMembershipAttributes: [ member ] (5)
    usersQuery:
        baseDN: "ou=users,dc=example,dc=com"
        scope: sub
        derefAliases: never
        pageSize: 0
    userUIDAttribute: dn (6)
    userNameAttributes: [ mail ] (7)
    tolerateMemberNotFoundErrors: false
    tolerateMemberOutOfScopeErrors: false
1 存储此组记录的 LDAP 服务器的 IP 地址和主机。
2 当为false时,安全 LDAP (ldaps://) URL 使用 TLS 连接,不安全 LDAP (ldap://) URL 将升级到 TLS。当为true时,不会建立与服务器的 TLS 连接,并且您无法使用ldaps:// URL 方案。
3 唯一标识 LDAP 服务器上组的属性。使用 DN 作为 groupUIDAttribute 时,不能指定 groupsQuery 过滤器。对于细粒度过滤,请使用白名单/黑名单方法。
4 用作组名称的属性。
5 存储成员信息组上的属性。
6 唯一标识 LDAP 服务器上用户的属性。使用 DN 作为 userUIDAttribute 时,不能指定 usersQuery 过滤器。对于细粒度过滤,请使用白名单/黑名单方法。
7 在 OpenShift Container Platform 组记录中用作用户名属性。

关于 Active Directory 配置文件

Active Directory 模式要求您为用户条目提供 LDAP 查询定义,以及在内部 OpenShift Container Platform 组记录中表示它们的属性。

为清晰起见,您在 OpenShift Container Platform 中创建的组应尽可能使用与区分名称不同的属性作为面向用户或管理员的字段。例如,通过电子邮件标识 OpenShift Container Platform 组的用户,但通过 LDAP 服务器上的组名称定义组的名称。以下配置文件创建了这些关系

使用 Active Directory 模式的 LDAP 同步配置:active_directory_config.yaml
kind: LDAPSyncConfig
apiVersion: v1
url: ldap://LDAP_SERVICE_IP:389
activeDirectory:
    usersQuery:
        baseDN: "ou=users,dc=example,dc=com"
        scope: sub
        derefAliases: never
        filter: (objectclass=person)
        pageSize: 0
    userNameAttributes: [ mail ] (1)
    groupMembershipAttributes: [ memberOf ] (2)
1 在 OpenShift Container Platform 组记录中用作用户名属性。
2 用户上存储成员信息的属性。

关于增强的 Active Directory 配置文件

增强的 Active Directory 模式要求您为用户条目和组条目提供 LDAP 查询定义,以及在内部 OpenShift Container Platform 组记录中表示它们的属性。

为清晰起见,您在 OpenShift Container Platform 中创建的组应尽可能使用与区分名称不同的属性作为面向用户或管理员的字段。例如,通过电子邮件标识 OpenShift Container Platform 组的用户,并使用组的名称作为通用名称。以下配置文件创建了这些关系。

使用增强的 Active Directory 模式的 LDAP 同步配置:augmented_active_directory_config.yaml
kind: LDAPSyncConfig
apiVersion: v1
url: ldap://LDAP_SERVICE_IP:389
augmentedActiveDirectory:
    groupsQuery:
        baseDN: "ou=groups,dc=example,dc=com"
        scope: sub
        derefAliases: never
        pageSize: 0
    groupUIDAttribute: dn (1)
    groupNameAttributes: [ cn ] (2)
    usersQuery:
        baseDN: "ou=users,dc=example,dc=com"
        scope: sub
        derefAliases: never
        filter: (objectclass=person)
        pageSize: 0
    userNameAttributes: [ mail ] (3)
    groupMembershipAttributes: [ memberOf ] (4)
1 唯一标识 LDAP 服务器上组的属性。使用 DN 作为 groupUIDAttribute 时,不能指定 groupsQuery 过滤器。对于细粒度过滤,请使用白名单/黑名单方法。
2 用作组名称的属性。
3 在 OpenShift Container Platform 组记录中用作用户名属性。
4 用户上存储成员信息的属性。

运行 LDAP 同步

创建同步配置文件后,您可以开始同步。OpenShift Container Platform 允许管理员对同一服务器执行多种不同的同步类型。

将 LDAP 服务器与 OpenShift Container Platform 同步

您可以将 LDAP 服务器上的所有组与 OpenShift Container Platform 同步。

先决条件
  • 创建一个同步配置文件。

  • 您可以作为具有 cluster-admin 角色的用户访问集群。

步骤
  • 将 LDAP 服务器上的所有组与 OpenShift Container Platform 同步

    $ oc adm groups sync --sync-config=config.yaml --confirm

    默认情况下,所有组同步操作都是试运行,因此您必须在 oc adm groups sync 命令上设置 --confirm 标志才能更改 OpenShift Container Platform 组记录。

将 OpenShift Container Platform 组与 LDAP 服务器同步

您可以同步 OpenShift Container Platform 中已有的所有组,这些组对应于配置文件中指定的 LDAP 服务器中的组。

先决条件
  • 创建一个同步配置文件。

  • 您可以作为具有 cluster-admin 角色的用户访问集群。

步骤
  • 将 OpenShift Container Platform 组与 LDAP 服务器同步

    $ oc adm groups sync --type=openshift --sync-config=config.yaml --confirm

    默认情况下,所有组同步操作都是试运行,因此您必须在 oc adm groups sync 命令上设置 --confirm 标志才能更改 OpenShift Container Platform 组记录。

将 LDAP 服务器上的子组与 OpenShift Container Platform 同步

您可以使用白名单文件、黑名单文件或两者来将 LDAP 组的子集与 OpenShift Container Platform 同步。

您可以组合使用黑名单文件、白名单文件或白名单文字。白名单和黑名单文件必须每行包含一个唯一的组标识符,您可以直接在命令中包含白名单文字。这些准则适用于在 LDAP 服务器上找到的组以及 OpenShift Container Platform 中已存在的组。

先决条件
  • 创建一个同步配置文件。

  • 您可以作为具有 cluster-admin 角色的用户访问集群。

步骤
  • 要将 LDAP 组的子集与 OpenShift Container Platform 同步,请使用以下任何命令

    $ oc adm groups sync --whitelist=<whitelist_file> \
                       --sync-config=config.yaml      \
                       --confirm
    $ oc adm groups sync --blacklist=<blacklist_file> \
                       --sync-config=config.yaml      \
                       --confirm
    $ oc adm groups sync <group_unique_identifier>    \
                       --sync-config=config.yaml      \
                       --confirm
    $ oc adm groups sync <group_unique_identifier>  \
                       --whitelist=<whitelist_file> \
                       --blacklist=<blacklist_file> \
                       --sync-config=config.yaml    \
                       --confirm
    $ oc adm groups sync --type=openshift           \
                       --whitelist=<whitelist_file> \
                       --sync-config=config.yaml    \
                       --confirm

    默认情况下,所有组同步操作都是试运行,因此您必须在 oc adm groups sync 命令上设置 --confirm 标志才能更改 OpenShift Container Platform 组记录。

运行组修剪作业

管理员还可以选择从 OpenShift Container Platform 记录中删除组,如果创建它们的 LDAP 服务器上的记录不再存在。修剪作业将接受与同步作业相同的同步配置文件和白名单或黑名单。

例如

$ oc adm prune groups --sync-config=/path/to/ldap-sync-config.yaml --confirm
$ oc adm prune groups --whitelist=/path/to/whitelist.txt --sync-config=/path/to/ldap-sync-config.yaml --confirm
$ oc adm prune groups --blacklist=/path/to/blacklist.txt --sync-config=/path/to/ldap-sync-config.yaml --confirm

自动同步 LDAP 组

您可以通过配置 cron 作业定期自动同步 LDAP 组。

先决条件
  • 您可以作为具有 cluster-admin 角色的用户访问集群。

  • 您已配置 LDAP 身份提供商 (IDP)。

    此步骤假设您创建了一个名为 ldap-secret 的 LDAP 密钥和一个名为 ca-config-map 的配置映射。

步骤
  1. 创建一个 cron 作业将运行的项目

    $ oc new-project ldap-sync (1)
    1 此步骤使用名为 ldap-sync 的项目。
  2. 找到在配置 LDAP 身份提供商时创建的密钥和配置映射,并将它们复制到此新项目。

    密钥和配置映射存在于 openshift-config 项目中,必须复制到新的 ldap-sync 项目。

  3. 定义服务账户

    示例 ldap-sync-service-account.yaml
    kind: ServiceAccount
    apiVersion: v1
    metadata:
      name: ldap-group-syncer
      namespace: ldap-sync
  4. 创建服务账户

    $ oc create -f ldap-sync-service-account.yaml
  5. 定义集群角色

    示例 ldap-sync-cluster-role.yaml
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: ldap-group-syncer
    rules:
      - apiGroups:
          - user.openshift.io
        resources:
          - groups
        verbs:
          - get
          - list
          - create
          - update
  6. 创建集群角色

    $ oc create -f ldap-sync-cluster-role.yaml
  7. 定义集群角色绑定,将集群角色绑定到服务账户

    示例 ldap-sync-cluster-role-binding.yaml
    kind: ClusterRoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: ldap-group-syncer
    subjects:
      - kind: ServiceAccount
        name: ldap-group-syncer              (1)
        namespace: ldap-sync
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: ldap-group-syncer                (2)
    1 引用此流程前面创建的服务账户。
    2 引用此流程前面创建的集群角色。
  8. 创建集群角色绑定

    $ oc create -f ldap-sync-cluster-role-binding.yaml
  9. 定义一个配置映射,指定同步配置文件

    示例 ldap-sync-config-map.yaml
    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: ldap-group-syncer
      namespace: ldap-sync
    data:
      sync.yaml: |                                 (1)
        kind: LDAPSyncConfig
        apiVersion: v1
        url: ldaps://10.0.0.0:389                  (2)
        insecure: false
        bindDN: cn=admin,dc=example,dc=com         (3)
        bindPassword:
          file: "/etc/secrets/bindPassword"
        ca: /etc/ldap-ca/ca.crt
        rfc2307:                                   (4)
          groupsQuery:
            baseDN: "ou=groups,dc=example,dc=com"  (5)
            scope: sub
            filter: "(objectClass=groupOfMembers)"
            derefAliases: never
            pageSize: 0
          groupUIDAttribute: dn
          groupNameAttributes: [ cn ]
          groupMembershipAttributes: [ member ]
          usersQuery:
            baseDN: "ou=users,dc=example,dc=com"   (6)
            scope: sub
            derefAliases: never
            pageSize: 0
          userUIDAttribute: dn
          userNameAttributes: [ uid ]
          tolerateMemberNotFoundErrors: false
          tolerateMemberOutOfScopeErrors: false
    1 定义同步配置文件。
    2 指定URL。
    3 指定bindDN
    4 此示例使用 RFC2307 模式;根据需要调整值。您也可以使用其他模式。
    5 groupsQuery指定baseDN
    6 usersQuery指定baseDN
  10. 创建配置映射

    $ oc create -f ldap-sync-config-map.yaml
  11. 定义一个cron job

    示例 ldap-sync-cron-job.yaml
    kind: CronJob
    apiVersion: batch/v1
    metadata:
      name: ldap-group-syncer
      namespace: ldap-sync
    spec:                                                                                (1)
      schedule: "*/30 * * * *"                                                           (2)
      concurrencyPolicy: Forbid
      jobTemplate:
        spec:
          backoffLimit: 0
          ttlSecondsAfterFinished: 1800                                                  (3)
          template:
            spec:
              containers:
                - name: ldap-group-sync
                  image: "registry.redhat.io/openshift4/ose-cli:latest"
                  command:
                    - "/bin/bash"
                    - "-c"
                    - "oc adm groups sync --sync-config=/etc/config/sync.yaml --confirm" (4)
                  volumeMounts:
                    - mountPath: "/etc/config"
                      name: "ldap-sync-volume"
                    - mountPath: "/etc/secrets"
                      name: "ldap-bind-password"
                    - mountPath: "/etc/ldap-ca"
                      name: "ldap-ca"
              volumes:
                - name: "ldap-sync-volume"
                  configMap:
                    name: "ldap-group-syncer"
                - name: "ldap-bind-password"
                  secret:
                    secretName: "ldap-secret"                                            (5)
                - name: "ldap-ca"
                  configMap:
                    name: "ca-config-map"                                                (6)
              restartPolicy: "Never"
              terminationGracePeriodSeconds: 30
              activeDeadlineSeconds: 500
              dnsPolicy: "ClusterFirst"
              serviceAccountName: "ldap-group-syncer"
    1 配置cron job的设置。有关cron job设置的更多信息,请参见“创建cron job”。
    2 cron格式指定的作业计划。此cron job示例每30分钟运行一次。根据需要调整频率,确保考虑同步运行所需的时间。
    3 保留已完成作业的时间(以秒为单位)。这应该与作业计划周期匹配,以便清理旧的失败作业并防止不必要的警报。有关更多信息,请参见Kubernetes文档中的TTL-after-finished控制器
    4 cron job要运行的LDAP同步命令。传入在配置映射中定义的同步配置文件。
    5 配置LDAP IDP时创建此密钥。
    6 配置LDAP IDP时创建此配置映射。
  12. 创建cron job

    $ oc create -f ldap-sync-cron-job.yaml

LDAP组同步示例

本节包含RFC 2307、Active Directory和增强型Active Directory模式的示例。

这些示例假设所有用户都是其各自组的直接成员。具体来说,没有任何组将其他组作为成员。有关如何同步嵌套组的信息,请参见嵌套成员身份同步示例。

使用RFC 2307模式同步组

对于RFC 2307模式,以下示例同步名为admins的组,该组有两个成员:JaneJim。示例说明

  • 如何将组和用户添加到LDAP服务器。

  • 同步后OpenShift Container Platform中的最终组记录将是什么。

这些示例假设所有用户都是其各自组的直接成员。具体来说,没有任何组将其他组作为成员。有关如何同步嵌套组的信息,请参见嵌套成员身份同步示例。

在RFC 2307模式中,用户(Jane和Jim)和组都作为一等公民条目存在于LDAP服务器上,并且组成员身份存储在组上的属性中。以下ldif片段定义了此模式的用户和组

使用RFC 2307模式的LDAP条目:rfc2307.ldif
  dn: ou=users,dc=example,dc=com
  objectClass: organizationalUnit
  ou: users
  dn: cn=Jane,ou=users,dc=example,dc=com
  objectClass: person
  objectClass: organizationalPerson
  objectClass: inetOrgPerson
  cn: Jane
  sn: Smith
  displayName: Jane Smith
  mail: jane.smith@example.com
  dn: cn=Jim,ou=users,dc=example,dc=com
  objectClass: person
  objectClass: organizationalPerson
  objectClass: inetOrgPerson
  cn: Jim
  sn: Adams
  displayName: Jim Adams
  mail: jim.adams@example.com
  dn: ou=groups,dc=example,dc=com
  objectClass: organizationalUnit
  ou: groups
  dn: cn=admins,ou=groups,dc=example,dc=com (1)
  objectClass: groupOfNames
  cn: admins
  owner: cn=admin,dc=example,dc=com
  description: System Administrators
  member: cn=Jane,ou=users,dc=example,dc=com (2)
  member: cn=Jim,ou=users,dc=example,dc=com
1 该组是LDAP服务器中的一等公民条目。
2 组成员列在组上的属性中,带有标识引用。
先决条件
  • 创建配置文件。

  • 您可以作为具有 cluster-admin 角色的用户访问集群。

步骤
  • 使用rfc2307_config.yaml文件运行同步

    $ oc adm groups sync --sync-config=rfc2307_config.yaml --confirm

    OpenShift Container Platform创建以下组记录作为上述同步操作的结果

    使用rfc2307_config.yaml文件创建的OpenShift Container Platform组
    apiVersion: user.openshift.io/v1
    kind: Group
    metadata:
      annotations:
        openshift.io/ldap.sync-time: 2015-10-13T10:08:38-0400 (1)
        openshift.io/ldap.uid: cn=admins,ou=groups,dc=example,dc=com (2)
        openshift.io/ldap.url: LDAP_SERVER_IP:389 (3)
      creationTimestamp:
      name: admins (4)
    users: (5)
    - jane.smith@example.com
    - jim.adams@example.com
    1 此OpenShift Container Platform组上次与LDAP服务器同步的时间(ISO 6801格式)。
    2 LDAP服务器上组的唯一标识符。
    3 存储此组记录的 LDAP 服务器的 IP 地址和主机。
    4 同步文件指定的组名称。
    5 作为组成员的用户,名称由同步文件指定。

使用RFC 2307模式和用户定义的名称映射同步组

使用用户定义的名称映射同步组时,配置文件会更改为包含如下所示的这些映射。

使用RFC 2307模式和用户定义的名称映射的LDAP同步配置:rfc2307_config_user_defined.yaml
kind: LDAPSyncConfig
apiVersion: v1
groupUIDNameMapping:
  "cn=admins,ou=groups,dc=example,dc=com": Administrators (1)
rfc2307:
    groupsQuery:
        baseDN: "ou=groups,dc=example,dc=com"
        scope: sub
        derefAliases: never
        pageSize: 0
    groupUIDAttribute: dn (2)
    groupNameAttributes: [ cn ] (3)
    groupMembershipAttributes: [ member ]
    usersQuery:
        baseDN: "ou=users,dc=example,dc=com"
        scope: sub
        derefAliases: never
        pageSize: 0
    userUIDAttribute: dn (4)
    userNameAttributes: [ mail ]
    tolerateMemberNotFoundErrors: false
    tolerateMemberOutOfScopeErrors: false
1 用户定义的名称映射。
2 用于用户定义名称映射中的键的唯一标识符属性。使用DN作为groupUIDAttribute时,不能指定groupsQuery过滤器。对于细粒度过滤,请使用白名单/黑名单方法。
3 如果其唯一标识符不在用户定义的名称映射中,则用于命名OpenShift Container Platform组的属性。
4 唯一标识 LDAP 服务器上用户的属性。使用 DN 作为 userUIDAttribute 时,不能指定 usersQuery 过滤器。对于细粒度过滤,请使用白名单/黑名单方法。
先决条件
  • 创建配置文件。

  • 您可以作为具有 cluster-admin 角色的用户访问集群。

步骤
  • 使用rfc2307_config_user_defined.yaml文件运行同步

    $ oc adm groups sync --sync-config=rfc2307_config_user_defined.yaml --confirm

    OpenShift Container Platform创建以下组记录作为上述同步操作的结果

    使用rfc2307_config_user_defined.yaml文件创建的OpenShift Container Platform组
    apiVersion: user.openshift.io/v1
    kind: Group
    metadata:
      annotations:
        openshift.io/ldap.sync-time: 2015-10-13T10:08:38-0400
        openshift.io/ldap.uid: cn=admins,ou=groups,dc=example,dc=com
        openshift.io/ldap.url: LDAP_SERVER_IP:389
      creationTimestamp:
      name: Administrators (1)
    users:
    - jane.smith@example.com
    - jim.adams@example.com
    1 用户定义的名称映射指定的组名称。

使用RFC 2307和用户定义的错误容差同步组

默认情况下,如果要同步的组包含其条目在成员查询中定义的范围之外的成员,则组同步将失败并出现错误

Error determining LDAP group membership for "<group>": membership lookup for user "<user>" in group "<group>" failed because of "search for entry with dn="<user-dn>" would search outside of the base dn specified (dn="<base-dn>")".

这通常表示usersQuery字段中的baseDN配置错误。但是,如果baseDN故意不包含组的某些成员,则设置tolerateMemberOutOfScopeErrors: true允许组同步继续。范围外的成员将被忽略。

同样,当组同步过程找不到组的成员时,它将直接失败并出现错误

Error determining LDAP group membership for "<group>": membership lookup for user "<user>" in group "<group>" failed because of "search for entry with base dn="<user-dn>" refers to a non-existent entry".
Error determining LDAP group membership for "<group>": membership lookup for user "<user>" in group "<group>" failed because of "search for entry with base dn="<user-dn>" and filter "<filter>" did not return any results".

这通常表示usersQuery字段配置错误。但是,如果组包含已知缺失的成员条目,则设置tolerateMemberNotFoundErrors: true允许组同步继续。有问题的成员将被忽略。

启用LDAP组同步的错误容差会导致同步过程忽略有问题的成员条目。如果LDAP组同步配置不正确,这可能会导致同步的OpenShift Container Platform组缺少成员。

使用RFC 2307模式和有问题的组成员关系的LDAP条目:rfc2307_problematic_users.ldif
  dn: ou=users,dc=example,dc=com
  objectClass: organizationalUnit
  ou: users
  dn: cn=Jane,ou=users,dc=example,dc=com
  objectClass: person
  objectClass: organizationalPerson
  objectClass: inetOrgPerson
  cn: Jane
  sn: Smith
  displayName: Jane Smith
  mail: jane.smith@example.com
  dn: cn=Jim,ou=users,dc=example,dc=com
  objectClass: person
  objectClass: organizationalPerson
  objectClass: inetOrgPerson
  cn: Jim
  sn: Adams
  displayName: Jim Adams
  mail: jim.adams@example.com
  dn: ou=groups,dc=example,dc=com
  objectClass: organizationalUnit
  ou: groups
  dn: cn=admins,ou=groups,dc=example,dc=com
  objectClass: groupOfNames
  cn: admins
  owner: cn=admin,dc=example,dc=com
  description: System Administrators
  member: cn=Jane,ou=users,dc=example,dc=com
  member: cn=Jim,ou=users,dc=example,dc=com
  member: cn=INVALID,ou=users,dc=example,dc=com (1)
  member: cn=Jim,ou=OUTOFSCOPE,dc=example,dc=com (2)
1 LDAP服务器上不存在的成员。
2 可能存在的成员,但不位于同步作业的用户查询中的baseDN下。

要容忍上述示例中的错误,必须对同步配置文件进行以下添加

使用RFC 2307模式并容忍错误的LDAP同步配置:rfc2307_config_tolerating.yaml
kind: LDAPSyncConfig
apiVersion: v1
url: ldap://LDAP_SERVICE_IP:389
rfc2307:
    groupsQuery:
        baseDN: "ou=groups,dc=example,dc=com"
        scope: sub
        derefAliases: never
    groupUIDAttribute: dn
    groupNameAttributes: [ cn ]
    groupMembershipAttributes: [ member ]
    usersQuery:
        baseDN: "ou=users,dc=example,dc=com"
        scope: sub
        derefAliases: never
    userUIDAttribute: dn (1)
    userNameAttributes: [ mail ]
    tolerateMemberNotFoundErrors: true (2)
    tolerateMemberOutOfScopeErrors: true (3)
1 唯一标识 LDAP 服务器上用户的属性。使用 DN 作为 userUIDAttribute 时,不能指定 usersQuery 过滤器。对于细粒度过滤,请使用白名单/黑名单方法。
2 如果设置为true,同步作业将容忍某些成员未找到的组,并且将忽略未找到LDAP条目的成员。同步作业的默认行为是在找不到组的成员时失败。
3 如果设置为true,同步作业将容忍某些成员位于usersQuery基本DN中给定的用户范围之外的组,并且将忽略成员查询范围之外的成员。同步作业的默认行为是在组的成员超出范围时失败。
先决条件
  • 创建配置文件。

  • 您可以作为具有 cluster-admin 角色的用户访问集群。

步骤
  • 使用rfc2307_config_tolerating.yaml文件运行同步。

    $ oc adm groups sync --sync-config=rfc2307_config_tolerating.yaml --confirm

    OpenShift Container Platform创建以下组记录作为上述同步操作的结果

    使用rfc2307_config.yaml文件创建的OpenShift Container Platform组
    apiVersion: user.openshift.io/v1
    kind: Group
    metadata:
      annotations:
        openshift.io/ldap.sync-time: 2015-10-13T10:08:38-0400
        openshift.io/ldap.uid: cn=admins,ou=groups,dc=example,dc=com
        openshift.io/ldap.url: LDAP_SERVER_IP:389
      creationTimestamp:
      name: admins
    users: (1)
    - jane.smith@example.com
    - jim.adams@example.com
    1 作为同步文件指定的组成员用户。查找遇到可容忍错误的成员将缺失。

使用Active Directory模式同步组

在Active Directory模式中,用户(Jane和Jim)都作为一等条目存在于LDAP服务器中,并且组成员身份存储在用户的属性中。以下ldif代码片段定义了此模式的用户和组。

使用Active Directory模式的LDAP条目:active_directory.ldif
dn: ou=users,dc=example,dc=com
objectClass: organizationalUnit
ou: users

dn: cn=Jane,ou=users,dc=example,dc=com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: testPerson
cn: Jane
sn: Smith
displayName: Jane Smith
mail: jane.smith@example.com
memberOf: admins (1)

dn: cn=Jim,ou=users,dc=example,dc=com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: testPerson
cn: Jim
sn: Adams
displayName: Jim Adams
mail: jim.adams@example.com
memberOf: admins
1 用户的组成员身份列在用户的属性中,并且组在服务器上不存在作为条目。memberOf属性不必是用户上的文字属性;在某些LDAP服务器中,它是在搜索期间创建的并返回给客户端,但未提交到数据库。
先决条件
  • 创建配置文件。

  • 您可以作为具有 cluster-admin 角色的用户访问集群。

步骤
  • 使用active_directory_config.yaml文件运行同步。

    $ oc adm groups sync --sync-config=active_directory_config.yaml --confirm

    OpenShift Container Platform创建以下组记录作为上述同步操作的结果

    使用active_directory_config.yaml文件创建的OpenShift Container Platform组。
    apiVersion: user.openshift.io/v1
    kind: Group
    metadata:
      annotations:
        openshift.io/ldap.sync-time: 2015-10-13T10:08:38-0400 (1)
        openshift.io/ldap.uid: admins (2)
        openshift.io/ldap.url: LDAP_SERVER_IP:389 (3)
      creationTimestamp:
      name: admins (4)
    users: (5)
    - jane.smith@example.com
    - jim.adams@example.com
    1 此OpenShift Container Platform组上次与LDAP服务器同步的时间(ISO 6801格式)。
    2 LDAP服务器上组的唯一标识符。
    3 存储此组记录的 LDAP 服务器的 IP 地址和主机。
    4 LDAP服务器中列出的组名称。
    5 作为组成员的用户,名称由同步文件指定。

使用增强的Active Directory模式同步组

在增强的Active Directory模式中,用户(Jane和Jim)和组都作为一等条目存在于LDAP服务器中,并且组成员身份存储在用户的属性中。以下ldif代码片段定义了此模式的用户和组。

使用增强的Active Directory模式的LDAP条目:augmented_active_directory.ldif
dn: ou=users,dc=example,dc=com
objectClass: organizationalUnit
ou: users

dn: cn=Jane,ou=users,dc=example,dc=com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: testPerson
cn: Jane
sn: Smith
displayName: Jane Smith
mail: jane.smith@example.com
memberOf: cn=admins,ou=groups,dc=example,dc=com (1)

dn: cn=Jim,ou=users,dc=example,dc=com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: testPerson
cn: Jim
sn: Adams
displayName: Jim Adams
mail: jim.adams@example.com
memberOf: cn=admins,ou=groups,dc=example,dc=com

dn: ou=groups,dc=example,dc=com
objectClass: organizationalUnit
ou: groups

dn: cn=admins,ou=groups,dc=example,dc=com (2)
objectClass: groupOfNames
cn: admins
owner: cn=admin,dc=example,dc=com
description: System Administrators
member: cn=Jane,ou=users,dc=example,dc=com
member: cn=Jim,ou=users,dc=example,dc=com
1 用户的组成员身份列在用户的属性中。
2 该组是LDAP服务器上的一等条目。
先决条件
  • 创建配置文件。

  • 您可以作为具有 cluster-admin 角色的用户访问集群。

步骤
  • 使用augmented_active_directory_config.yaml文件运行同步。

    $ oc adm groups sync --sync-config=augmented_active_directory_config.yaml --confirm

    OpenShift Container Platform创建以下组记录作为上述同步操作的结果

    使用augmented_active_directory_config.yaml文件创建的OpenShift Container Platform组。
    apiVersion: user.openshift.io/v1
    kind: Group
    metadata:
      annotations:
        openshift.io/ldap.sync-time: 2015-10-13T10:08:38-0400 (1)
        openshift.io/ldap.uid: cn=admins,ou=groups,dc=example,dc=com (2)
        openshift.io/ldap.url: LDAP_SERVER_IP:389 (3)
      creationTimestamp:
      name: admins (4)
    users: (5)
    - jane.smith@example.com
    - jim.adams@example.com
    1 此OpenShift Container Platform组上次与LDAP服务器同步的时间(ISO 6801格式)。
    2 LDAP服务器上组的唯一标识符。
    3 存储此组记录的 LDAP 服务器的 IP 地址和主机。
    4 同步文件指定的组名称。
    5 作为组成员的用户,名称由同步文件指定。

LDAP嵌套成员身份同步示例

OpenShift Container Platform中的组不会嵌套。在使用数据之前,LDAP服务器必须展平组成员身份。Microsoft的Active Directory服务器通过LDAP_MATCHING_RULE_IN_CHAIN规则(OID为1.2.840.113556.1.4.1941)支持此功能。此外,使用此匹配规则时,只有明确列入白名单的组才能同步。

本节提供增强的Active Directory模式的示例,该模式同步名为admins的组,该组具有一个用户Jane和一个组otheradmins作为成员。otheradmins组具有一个用户成员:Jim。此示例解释了:

  • 如何将组和用户添加到LDAP服务器。

  • LDAP同步配置文件的样子。

  • 同步后OpenShift Container Platform中的最终组记录将是什么。

在增强的Active Directory模式中,用户(JaneJim)和组都作为一等条目存在于LDAP服务器中,并且组成员身份存储在用户或组的属性中。以下ldif代码片段定义了此模式的用户和组。

使用具有嵌套成员的增强Active Directory模式的LDAP条目:augmented_active_directory_nested.ldif
dn: ou=users,dc=example,dc=com
objectClass: organizationalUnit
ou: users

dn: cn=Jane,ou=users,dc=example,dc=com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: testPerson
cn: Jane
sn: Smith
displayName: Jane Smith
mail: jane.smith@example.com
memberOf: cn=admins,ou=groups,dc=example,dc=com (1)

dn: cn=Jim,ou=users,dc=example,dc=com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: testPerson
cn: Jim
sn: Adams
displayName: Jim Adams
mail: jim.adams@example.com
memberOf: cn=otheradmins,ou=groups,dc=example,dc=com (1)

dn: ou=groups,dc=example,dc=com
objectClass: organizationalUnit
ou: groups

dn: cn=admins,ou=groups,dc=example,dc=com (2)
objectClass: group
cn: admins
owner: cn=admin,dc=example,dc=com
description: System Administrators
member: cn=Jane,ou=users,dc=example,dc=com
member: cn=otheradmins,ou=groups,dc=example,dc=com

dn: cn=otheradmins,ou=groups,dc=example,dc=com (2)
objectClass: group
cn: otheradmins
owner: cn=admin,dc=example,dc=com
description: Other System Administrators
memberOf: cn=admins,ou=groups,dc=example,dc=com  (1) (3)
member: cn=Jim,ou=users,dc=example,dc=com
1 用户和组的成员身份列在对象的属性中。
2 这些组是LDAP服务器上的一等条目。
3 otheradmins组是admins组的成员。

使用Active Directory同步嵌套组时,必须为用户条目和组条目提供LDAP查询定义,以及在内部OpenShift Container Platform组记录中表示它们的属性。此外,此配置需要进行某些更改:

  • oc adm groups sync命令必须显式列入组的白名单。

  • 用户的groupMembershipAttributes必须包含"memberOf:1.2.840.113556.1.4.1941:"以符合LDAP_MATCHING_RULE_IN_CHAIN规则。

  • groupUIDAttribute必须设置为dn

  • groupsQuery

    • 不能设置filter

    • 必须设置有效的derefAliases

    • 不应设置baseDN,因为该值将被忽略。

    • 不应设置scope,因为该值将被忽略。

为清晰起见,您在 OpenShift Container Platform 中创建的组应尽可能使用与区分名称不同的属性作为面向用户或管理员的字段。例如,通过电子邮件标识 OpenShift Container Platform 组的用户,并使用组的名称作为通用名称。以下配置文件创建了这些关系

使用具有嵌套成员的增强Active Directory模式的LDAP同步配置:augmented_active_directory_config_nested.yaml
kind: LDAPSyncConfig
apiVersion: v1
url: ldap://LDAP_SERVICE_IP:389
augmentedActiveDirectory:
    groupsQuery: (1)
        derefAliases: never
        pageSize: 0
    groupUIDAttribute: dn (2)
    groupNameAttributes: [ cn ] (3)
    usersQuery:
        baseDN: "ou=users,dc=example,dc=com"
        scope: sub
        derefAliases: never
        filter: (objectclass=person)
        pageSize: 0
    userNameAttributes: [ mail ] (4)
    groupMembershipAttributes: [ "memberOf:1.2.840.113556.1.4.1941:" ] (5)
1 不能指定groupsQuery过滤器。groupsQuery基本DN和范围值将被忽略。groupsQuery必须设置有效的derefAliases
2 唯一标识LDAP服务器上组的属性。它必须设置为dn
3 用作组名称的属性。
4 用作OpenShift Container Platform组记录中用户名属性。在大多数安装中,mailsAMAccountName是首选。
5 存储成员信息的用户属性。请注意LDAP_MATCHING_RULE_IN_CHAIN的使用。
先决条件
  • 创建配置文件。

  • 您可以作为具有 cluster-admin 角色的用户访问集群。

步骤
  • 使用augmented_active_directory_config_nested.yaml文件运行同步。

    $ oc adm groups sync \
        'cn=admins,ou=groups,dc=example,dc=com' \
        --sync-config=augmented_active_directory_config_nested.yaml \
        --confirm

    必须显式列入cn=admins,ou=groups,dc=example,dc=com组的白名单。

    OpenShift Container Platform创建以下组记录作为上述同步操作的结果

    使用augmented_active_directory_config_nested.yaml文件创建的OpenShift Container Platform组。
    apiVersion: user.openshift.io/v1
    kind: Group
    metadata:
      annotations:
        openshift.io/ldap.sync-time: 2015-10-13T10:08:38-0400 (1)
        openshift.io/ldap.uid: cn=admins,ou=groups,dc=example,dc=com (2)
        openshift.io/ldap.url: LDAP_SERVER_IP:389 (3)
      creationTimestamp:
      name: admins (4)
    users: (5)
    - jane.smith@example.com
    - jim.adams@example.com
    1 此OpenShift Container Platform组上次与LDAP服务器同步的时间(ISO 6801格式)。
    2 LDAP服务器上组的唯一标识符。
    3 存储此组记录的 LDAP 服务器的 IP 地址和主机。
    4 同步文件指定的组名称。
    5 作为同步文件中指定名称的组成员用户。请注意,嵌套组的成员包含在内,因为组成员身份已由Microsoft Active Directory服务器展平。

LDAP同步配置规范

配置文件的对象规范如下所示。请注意,不同的模式对象具有不同的字段。例如,v1.ActiveDirectoryConfig没有groupsQuery字段,而v1.RFC2307Config和v1.AugmentedActiveDirectoryConfig都有。

不支持二进制属性。来自LDAP服务器的所有属性数据必须为UTF-8编码的字符串格式。例如,切勿使用二进制属性(例如objectGUID)作为ID属性。必须改用字符串属性,例如sAMAccountNameuserPrincipalName

v1.LDAPSyncConfig

LDAPSyncConfig包含定义LDAP组同步所需的配置选项。

名称 说明 模式

种类

表示此对象所代表的 REST 资源的字符串值。服务器可以从客户端提交请求的端点推断出这一点。无法更新。使用驼峰命名法。更多信息:https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#types-kinds

字符串

apiVersion

定义此对象表示的版本化模式。服务器应将识别的模式转换为最新的内部值,并可能拒绝无法识别的值。更多信息:https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#resources

字符串

URL

Host 是要连接到的 LDAP 服务器的方案、主机和端口:scheme://host:port

字符串

bindDN

可选的 DN,用于绑定到 LDAP 服务器。

字符串

bindPassword

在搜索阶段绑定时使用的可选密码。

v1.StringSource

insecure

如果为true,则表示连接不应使用 TLS。如果为false,则ldaps:// URL 使用 TLS 连接,而ldap:// URL 将根据https://tools.ietf.org/html/rfc2830中指定的规范升级到 TLS 连接。如果将insecure设置为true,则不能使用ldaps:// URL 方案。

布尔值

ca

向服务器发出请求时使用的可选受信任证书颁发机构捆绑包。如果为空,则使用默认的系统根证书。

字符串

groupUIDNameMapping

LDAP 组 UID 与 OpenShift Container Platform 组名称的可选直接映射。

对象

rfc2307

保存从类似于 RFC2307 的方式设置的 LDAP 服务器中提取数据的配置:一流的组和用户条目,组成员资格由组条目上列出其成员的多值属性确定。

v1.RFC2307Config

activeDirectory

保存从类似于 Active Directory 中使用的 LDAP 服务器中提取数据的配置:一流的用户条目,组成员资格由成员上列出其所属组的多值属性确定。

v1.ActiveDirectoryConfig

augmentedActiveDirectory

保存从类似于上述 Active Directory 中使用的 LDAP 服务器中提取数据的配置,并增加一项:存在一流的组条目,用于保存元数据,但不保存组成员资格。

v1.AugmentedActiveDirectoryConfig

v1.StringSource

StringSource允许内联指定字符串,或通过环境变量或文件外部指定。当它只包含一个字符串值时,它会编组为一个简单的 JSON 字符串。

名称 说明 模式

value

指定明文值,如果指定了keyFile,则指定加密值。

字符串

env

指定包含明文值的环境变量,如果指定了keyFile,则指定加密值。

字符串

file

引用包含明文值的文件,如果指定了keyFile,则指定加密值。

字符串

keyFile

引用包含用于解密值的关键的文件。

字符串

v1.LDAPQuery

LDAPQuery保存构建 LDAP 查询所需的选项。

名称 说明 模式

baseDN

所有搜索都应从中开始的目录分支的 DN。

字符串

scope

搜索的可选范围。可以是base:只有基本对象,one:基本级别上的所有对象,sub:整个子树。如果未设置,则默认为sub

字符串

derefAliases

关于别名的搜索行为的可选行为。可以是never:从不取消引用别名,search:仅在搜索中取消引用,base:仅在查找基本对象时取消引用,always:始终取消引用。如果未设置,则默认为always

字符串

timeout

保存任何对服务器的请求在放弃等待响应之前可以保持未完成的时间限制(以秒为单位)。如果为0,则不施加客户端限制。

整数

filter

一个有效的 LDAP 搜索过滤器,用于使用 base DN 从 LDAP 服务器检索所有相关条目。

字符串

pageSize

最大首选页面大小(以 LDAP 条目为单位)。页面大小为0表示不进行分页。

整数

v1.RFC2307Config

RFC2307Config保存必要的配置选项,以定义 LDAP 组同步如何与使用 RFC2307 架构的 LDAP 服务器交互。

名称 说明 模式

groupsQuery

保存返回组条目的 LDAP 查询模板。

v1.LDAPQuery

groupUIDAttribute

定义 LDAP 组条目上的哪个属性将被解释为其唯一标识符。(ldapGroupUID)

字符串

groupNameAttributes

定义 LDAP 组条目上的哪些属性将被解释为其名称,用于 OpenShift Container Platform 组。

字符串数组

groupMembershipAttributes

定义 LDAP 组条目上哪些属性将被解释为其成员。这些属性中包含的值必须可以通过您的UserUIDAttribute查询。

字符串数组

usersQuery

保存返回用户条目的 LDAP 查询模板。

v1.LDAPQuery

userUIDAttribute

定义 LDAP 用户条目上哪个属性将被解释为其唯一标识符。它必须与从GroupMembershipAttributes中找到的值相对应。

字符串

userNameAttributes

定义 LDAP 用户条目上哪些属性将按顺序用作其 OpenShift Container Platform 用户名。使用第一个具有非空值的属性。这应与您的LDAPPasswordIdentityProviderPreferredUsername设置相匹配。用作 OpenShift Container Platform 组记录中用户名属性的属性。在大多数安装中,mailsAMAccountName是首选。

字符串数组

tolerateMemberNotFoundErrors

确定遇到缺少用户条目时 LDAP 同步作业的行为。如果为true,则不会找到任何用户的 LDAP 用户查询将被容忍,并且只会记录错误。如果为false,如果用户查询找不到任何内容,则 LDAP 同步作业将失败。默认值为false。将此标志设置为true的配置错误的 LDAP 同步作业会导致组成员资格被删除,因此建议谨慎使用此标志。

布尔值

tolerateMemberOutOfScopeErrors

确定遇到范围外用户条目时 LDAP 同步作业的行为。如果为true,则对超出为所有用户查询给定的 base DN 的用户的 LDAP 查询将被容忍,并且只会记录错误。如果为false,如果用户查询将在所有用户查询指定的 base DN 之外进行搜索,则 LDAP 同步作业将失败。将此标志设置为true的配置错误的 LDAP 同步作业可能导致组缺少用户,因此建议谨慎使用此标志。

布尔值

v1.ActiveDirectoryConfig

ActiveDirectoryConfig保存必要的配置选项,以定义 LDAP 组同步如何与使用 Active Directory 架构的 LDAP 服务器交互。

名称 说明 模式

usersQuery

保存返回用户条目的 LDAP 查询模板。

v1.LDAPQuery

userNameAttributes

定义 LDAP 用户条目上哪些属性将被解释为其 OpenShift Container Platform 用户名。用作 OpenShift Container Platform 组记录中用户名的属性。在大多数安装中,mailsAMAccountName是首选。

字符串数组

groupMembershipAttributes

定义 LDAP 用户条目上哪些属性将被解释为其所属的组。

字符串数组

v1.AugmentedActiveDirectoryConfig

AugmentedActiveDirectoryConfig保存必要的配置选项,以定义 LDAP 组同步如何与使用增强的 Active Directory 架构的 LDAP 服务器交互。

名称 说明 模式

usersQuery

保存返回用户条目的 LDAP 查询模板。

v1.LDAPQuery

userNameAttributes

定义 LDAP 用户条目上哪些属性将被解释为其 OpenShift Container Platform 用户名。用作 OpenShift Container Platform 组记录中用户名的属性。在大多数安装中,mailsAMAccountName是首选。

字符串数组

groupMembershipAttributes

定义 LDAP 用户条目上哪些属性将被解释为其所属的组。

字符串数组

groupsQuery

保存返回组条目的 LDAP 查询模板。

v1.LDAPQuery

groupUIDAttribute

定义 LDAP 组条目上的哪个属性将被解释为其唯一标识符。(ldapGroupUID)

字符串

groupNameAttributes

定义 LDAP 组条目上的哪些属性将被解释为其名称,用于 OpenShift Container Platform 组。

字符串数组