×

关于OpenShift Container Platform中的身份提供程序

默认情况下,集群中只存在kubeadmin用户。要指定身份提供程序,必须创建一个描述该身份提供程序的自定义资源(CR),并将其添加到集群中。

OpenShift Container Platform用户名包含/:%不受支持。

关于GitLab身份验证

配置GitLab身份验证允许用户使用其GitLab凭据登录OpenShift Container Platform。

如果您使用GitLab 7.7.0到11.0版本,您可以使用OAuth集成进行连接。如果您使用GitLab 11.1或更高版本,您可以使用OpenID Connect(OIDC)连接,而不是OAuth。

创建密钥

身份提供程序在openshift-config命名空间中使用OpenShift Container Platform Secret对象来包含客户端密钥、客户端证书和密钥。

步骤
  • 使用以下命令创建一个包含字符串的Secret对象

    $ oc create secret generic <secret_name> --from-literal=clientSecret=<secret> -n openshift-config

    或者,您可以应用以下YAML来创建密钥:

    apiVersion: v1
    kind: Secret
    metadata:
      name: <secret_name>
      namespace: openshift-config
    type: Opaque
    data:
      clientSecret: <base64_encoded_client_secret>
  • 您可以使用以下命令定义一个包含文件内容的Secret对象:

    $ oc create secret generic <secret_name> --from-file=<path_to_file> -n openshift-config

创建配置映射

身份提供程序在openshift-config命名空间中使用OpenShift Container Platform ConfigMap对象来包含证书颁发机构捆绑包。这些主要用于包含身份提供程序所需的证书捆绑包。

步骤
  • 使用以下命令定义一个包含证书颁发机构的OpenShift Container Platform ConfigMap对象。证书颁发机构必须存储在ConfigMap对象的ca.crt密钥中。

    $ oc create configmap ca-config-map --from-file=ca.crt=/path/to/ca -n openshift-config

    或者,您可以应用以下YAML来创建配置映射:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: ca-config-map
      namespace: openshift-config
    data:
      ca.crt: |
        <CA_certificate_PEM>

GitLab CR示例

以下自定义资源(CR)显示了GitLab身份提供程序的参数和可接受的值。

GitLab CR
apiVersion: config.openshift.io/v1
kind: OAuth
metadata:
  name: cluster
spec:
  identityProviders:
  - name: gitlabidp (1)
    mappingMethod: claim (2)
    type: GitLab
    gitlab:
      clientID: {...} (3)
      clientSecret: (4)
        name: gitlab-secret
      url: https://gitlab.com (5)
      ca: (6)
        name: ca-config-map
1 此提供程序名称作为前缀添加到GitLab数字用户ID,以形成身份名称。它还用于构建回调URL。
2 控制如何在此提供程序的身份和User对象之间建立映射。
3 已注册的GitLab OAuth应用程序的客户端ID。该应用程序必须配置为回调URL为https://oauth-openshift.apps.<cluster-name>.<cluster-domain>/oauth2callback/<idp-provider-name>
4 对包含GitLab颁发的客户端密钥的OpenShift Container Platform Secret对象的引用。
5 GitLab提供程序的主机URL。这可以是https://gitlab.com/或任何其他自托管的GitLab实例。
6 可选:对包含PEM编码的证书颁发机构捆绑包的OpenShift Container Platform ConfigMap对象的引用,用于验证为配置的URL验证服务器证书。
其他资源
  • 有关参数(如mappingMethod)的信息,这些参数对所有身份提供程序都是通用的,请参阅身份提供程序参数

向您的集群添加身份提供程序

安装集群后,请向其添加身份提供程序,以便您的用户可以进行身份验证。

先决条件
  • 创建 OpenShift Container Platform 集群。

  • 为您的身份提供程序创建自定义资源 (CR)。

  • 您必须以管理员身份登录。

步骤
  1. 应用已定义的 CR。

    $ oc apply -f </path/to/CR>

    如果 CR 不存在,oc apply 将创建一个新的 CR,并可能触发以下警告:Warning: oc apply should be used on resources created by either oc create --save-config or oc apply。在这种情况下,您可以安全地忽略此警告。

  2. 使用您的身份提供程序中的用户帐户登录集群,并在提示时输入密码。

    $ oc login -u <username>
  3. 确认用户已成功登录,并显示用户名。

    $ oc whoami