7.6. 配置 GitHub 或 GitHub Enterprise 身份提供程序
				配置 github 身份提供程序,针对 GitHub 或 GitHub Enterprise 的 OAuth 身份验证服务器验证用户名和密码。OAuth 可以协助 OpenShift Container Platform 和 GitHub 或 GitHub Enterprise 之间的令牌交换流。
			
				您可以使用 GitHub 集成来连接 GitHub 或 GitHub Enterprise。对于 GitHub Enterprise 集成,您必须提供实例的 hostname,并可选择提供要在服务器请求中使用的 ca 证书捆绑包。
			
除非有所注明,否则以下步骤同时适用于 GitHub 和 GitHub Enterprise。
7.6.1. 关于 OpenShift Container Platform 中的身份提供程序
					默认情况下,集群中只有 kubeadmin 用户。要指定身份提供程序,您必须创建一个自定义资源(CR) 来描述该身份提供程序并把它添加到集群中。
				
						OpenShift Container Platform 用户名不能包括 /、: 和 %。
					
7.6.2. 关于 GitHub 身份验证
配置 GitHub 身份验证后,用户可使用 GitHub 凭证登录 OpenShift Container Platform。为防止具有任何 GitHub 用户 ID 的任何人登录 OpenShift Container Platform 集群,您可以将访问权利限制给仅属于特定 GitHub 组织的用户。
7.6.3. 注册 GitHub 应用程序
要将 GitHub 或 GitHub Enterprise 用作身份提供程序,您必须注册要使用的应用程序。
流程
- 在 GitHub 上注册应用程序: - 
									对于 GitHub,点击 Settings Developer settings OAuth Apps Register a new OAuth application。 
- 
									对于 GitHub Enterprise,前往 GitHub Enterprise 主页,然后点击 Settings Developer settings Register a new application。 
 
- 
									对于 GitHub,点击 Settings 
- 
							输入应用程序名称,如 My OpenShift Install。
- 
							输入主页 URL,如 https://oauth-openshift.apps.<cluster-name>.<cluster-domain>。
- 可选:输入应用程序描述。
- 输入授权回调 URL,其中 URL 末尾包含身份提供程序 - name:- https://oauth-openshift.apps.<cluster-name>.<cluster-domain>/oauth2callback/<idp-provider-name> - https://oauth-openshift.apps.<cluster-name>.<cluster-domain>/oauth2callback/<idp-provider-name>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 例如: - https://oauth-openshift.apps.openshift-cluster.example.com/oauth2callback/github - https://oauth-openshift.apps.openshift-cluster.example.com/oauth2callback/github- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 点击 Register application。GitHub 提供客户端 ID 和客户端 secret。您需要使用这些值来完成身份提供程序配置。
7.6.4. 创建 secret
					身份提供程序使用 openshift-config 命名空间中的 OpenShift Container Platform Secret 对象来包含客户端 secret、客户端证书和密钥。
				
流程
- 使用以下命令创建一个包含字符串的 - Secret对象:- oc create secret generic <secret_name> --from-literal=clientSecret=<secret> -n openshift-config - $ oc create secret generic <secret_name> --from-literal=clientSecret=<secret> -n openshift-config- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 提示- 您还可以应用以下 YAML 来创建 secret: - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 您可以使用以下命令定义一个包含文件内容的 - Secret对象:- oc create secret generic <secret_name> --from-file=<path_to_file> -n openshift-config - $ oc create secret generic <secret_name> --from-file=<path_to_file> -n openshift-config- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
7.6.5. 创建配置映射
					身份提供程序使用 openshift-config 命名空间中的 OpenShift Container Platform ConfigMap 对象来包含证书颁发机构捆绑包。主要用于包含身份提供程序所需的证书捆绑包。
				
只有 GitHub Enterprise 需要此步骤。
流程
- 使用以下命令,定义包含证书颁发机构的 OpenShift Container Platform - ConfigMap。证书颁发机构必须存储在- ConfigMap对象的- ca.crt键中。- oc create configmap ca-config-map --from-file=ca.crt=/path/to/ca -n openshift-config - $ oc create configmap ca-config-map --from-file=ca.crt=/path/to/ca -n openshift-config- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 提示- 您还可以应用以下 YAML 来创建配置映射: - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
7.6.6. GitHub CR 示例
以下自定义资源 (CR) 显示 GitHub 身份提供程序的参数和可接受值。
GitHub CR
- 1
- 此提供程序名称作为前缀放在 GitHub 数字用户 ID 前,以此组成身份名称。它还可用来构建回调 URL。
- 2
- 控制如何在此提供程序的身份和User对象之间建立映射。
- 3
- 可选:对包含 PEM 编码证书颁发机构捆绑包的 OpenShift Container PlatformConfigMap的引用,以用于验证所配置 URL 的服务器证书。仅用于带有非公开信任的根证书的 GitHub Enterprise。
- 4
- 注册的 GitHub OAuth 应用程序的客户端 ID。应用程序必须配置有回调 URLhttps://oauth-openshift.apps.<cluster-name>.<cluster-domain>/oauth2callback/<idp-provider-name>。
- 5
- 对包含 GitHub 发布的客户端 Secret 的 OpenShift Container PlatformSecret的引用。
- 6
- 对于 GitHub Enterprise,您必须提供实例的主机名,如example.com。这个值必须与/setup/settings文件中的 GitHub Enterprisehostname值匹配,且不可包括端口号。如果未设定这个值,则必须定义teams或organizations。对于 GitHub,请省略此参数。
- 7
- 组织列表。必须设置organizations或teams字段,除非设置hostname字段,或者将mappingMethod设为lookup。不可与teams字段结合使用。
- 8
- 团队列表。必须设置teams或organizations字段,除非设置hostname字段,或者将mappingMethod设为lookup。不可与organizations字段结合使用。
						如果指定了 organizations 或 teams,只有至少是一个所列组织成员的 GitHub 用户才能登录。如果在 clientID 中配置的 GitHub OAuth 应用程序不归该组织所有,则组织所有者必须授予第三方访问权限才能使用此选项。这可以在组织管理员第一次登录 GitHub 时完成,也可以在 GitHub 组织设置中完成。
					
7.6.7. 在集群中添加身份提供程序
安装集群之后,请在其中添加一个身份提供程序,以便您的用户可以进行身份验证。
先决条件
- 创建 OpenShift Container Platform 集群。
- 为身份提供程序创建自定义资源(CR)。
- 必须已经以管理员身份登录。
流程
- 应用定义的 CR: - oc apply -f </path/to/CR> - $ oc apply -f </path/to/CR>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注意- 如果一个 CR 不存在, - oc apply会创建一个新的 CR,并可能会触发以下警告- Warning: oc apply should be used on resources created by either oc create --save-config or oc apply。在这种情况下,您可以忽略这个警告。
- 从 OAuth 服务器获取令牌。 - 只要 - kubeadmin用户已被删除,- oc login命令就会提供如何访问可以获得令牌的网页的说明。- 您还可以通过使用 web 控制台的 (?)访问此页面。Help - Command Line Tools - Copy Login Command. 
- 登录到集群,提供令牌进行身份验证。 - oc login --token=<token> - $ oc login --token=<token>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注意- 这个身份提供程序不支持使用用户名和密码登录。 
- 确认用户登录成功,并显示用户名。 - oc whoami - $ oc whoami- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow