13.3.10.2. 在 master 上配置身份验证
如果您有:
已安装 OpenShift Container Platform,然后将 /etc/origin/master/master-config.yaml 文件复制到新目录中,例如:
cd /etc/origin/master mkdir githubconfig; cp master-config.yaml githubconfig
$ cd /etc/origin/master $ mkdir githubconfig; cp master-config.yaml githubconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 尚未安装 OpenShift Container Platform,然后启动 OpenShift Container Platform API 服务器,指定(future)OpenShift Container Platform master 的主机名,以及一个用于存储由 start 命令创建的配置文件的目录:
openshift start master --public-master=<apiserver> --write-config=<directory>
$ openshift start master --public-master=<apiserver> --write-config=<directory>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
openshift start master --public-master=https://myapiserver.com:8443 --write-config=githubconfig
$ openshift start master --public-master=https://myapiserver.com:8443 --write-config=githubconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果要使用 Ansible 安装,您必须将
identityProvider
配置添加到 Ansible playbook 中。如果在使用 Ansible 安装后使用以下步骤手动修改配置,那么每当您重新运行安装工具或升级时,您都会丢失任何修改。注意使用
openshift 自行启动 master
将自动检测主机名,但 GitHub 必须能够重定向到您在注册应用程序时指定的准确主机名。因此,您无法自动检测 ID,因为它可能会重定向到错误的地址。反之,您必须指定 Web 浏览器用来与 OpenShift Container Platform 集群交互的主机名。
编辑新的 master-config.yaml 文件的
identityProviders
小节,并复制示例GitHubIdentityProvider
配置并粘贴它来替换现有的小节:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 此提供程序名称作为前缀放在 GitHub 数字用户 ID 前,以此组成身份名称。它还可用来构建回调 URL。
- 2
GitHubIdentityProvider
无法用于发送WWW-Authenticate
质询。- 3
- 为
true
时,来自 Web 客户端(如 Web 控制台)的未经身份验证的令牌请求将重定向到 GitHub 以进行登录。 - 4
- 控制如何在此提供程序的身份和用户对象之间建立映射,如上 所述。
- 5
- 对于 GitHub Enterprise,CA 是向服务器发出请求时使用的可选的可信证书颁发机构捆绑包。省略此参数以使用默认系统 root 证书。对于 GitHub,请省略此参数。
- 6
- 注册的 GitHub OAuth 应用程序的客户端 ID。应用程序必须配置有 <
master>/oauth2callback/<identityProviderName>
; 的回调 URL。 - 7
- GitHub 发布的客户端 secret。此值也可在 环境变量、外部文件或加密文件 中提供。
- 8
- 对于 GitHub Enterprise,您必须提供实例的主机名,如
example.com
。这个值必须与 /setup/settings 文件中的 GitHub Enterprisehostname
值匹配,且不可包括端口号。对于 GitHub,请省略此参数。 - 9
- 可选的组织列表。如果指定,只有至少是一个所列组织成员的 GitHub 用户才能登录。如果在
clientID
中配置的 GitHub OAuth 应用程序不归该组织所有,则组织所有者必须授予第三方访问权限才能使用此选项。这可以在组织管理员第一次登录 GitHub 时完成,也可以在 GitHub 组织设置中完成。不可与teams
字段结合使用。 - 10
- 可选的团队列表。如果指定,只有是至少一个列出团队的成员的 GitHub 用户才能登录。如果在
clientID
中配置的 GitHub OAuth 应用程序不归该团队的组织所有,则组织所有者必须授予第三方访问权限才能使用此选项。这可以在组织管理员第一次登录 GitHub 时完成,也可以在 GitHub 组织设置中完成。不可与organizations
字段结合使用。
对
identityProviders
小节进行以下修改:更改供应商
名称
,以匹配您在 GitHub 上配置回调 URL。例如,如果您将回调 URL 定义为
https://myapiserver.com:8443/oauth2callback/github/
,则name
必须是github
。-
将
clientID
更改为您之前注册的 GitHub 中的客户端 ID。 -
将
clientSecret
改为 之前注册的 GitHub 中的 Client Secret。 -
更改
organizations
或teams
,使其包含一个或多个 GitHub 机构或团队的列表,用户必须具有成员资格才能进行身份验证。如果指定,只有至少是一个列出的机构或团队的成员的 GitHub 用户才能登录。如果未指定,则具有有效 GitHub 帐户的任何人都可以登录。
- 保存您的更改并关闭该文件。
启动 OpenShift Container Platform API 服务器,指定您刚才修改的配置文件:
openshift start master --config=<path/to/modified/config>/master-config.yaml
$ openshift start master --config=<path/to/modified/config>/master-config.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
配置后,任何登录 OpenShift Container Platform Web 控制台的用户都将提示使用其 GitHub 凭证登录。首次登录时,用户必须点击 授权应用程序 来允许 GitHub 使用其用户名、密码和机构成员资格。然后,用户会被重新重定向到 Web 控制台。