OpenShift 4.x HOL教程汇总
说明:本文已经在OpenShift 4.12环境中验证

说明和环境准备

  1. 本文主要适用于使用HTPasswd Identity Provider机制验证用户名和密码。
  2. 检查OpenShift 4是否已有HTPasswd Identity Provider(IDP)。
$ oc get identity
NAME                      IDP NAME            IDP USER NAME   USER NAME   USER UID
htpasswd_provider:admin   htpasswd_provider   admin           admin       e26157a0-1903-11ea-a73b-0a580a8000c9
  1. 如果OpenShift 4的OAuth中还没有 HTPasswd Identity Provider,可以参考《OpenShift 4之增加 HTPasswd方式的身份认证》创建HTPasswd Identity Provider和添加用户。
  2. 安装基于htpasswd的密码管理工具httpd-tools和YAML查询工具yq。
$ sudo yum -y install httpd-tools
$ sudo pip3 install yq

增加管理员用户

在OpenShift 4装好后只有一个kubeadmin集群管理员用户。我们可以通过以下方法增加其他用户,并赋予管理员权限。

  1. 用OpenShift集群管理员登录,然后执行命令,获取Identity Providers的htpasswd的name(即下面中的htpasswd-secret,也有可能是其他名称)。
$ oc get oauth cluster -oyaml | yq -y .spec
identityProviders:
  - htpasswd:
      fileData:
        name: htpasswd-secret
    mappingMethod: claim
    name: htpasswd_provider
    type: HTPasswd
$ HTPASSWD_SECRET=$(oc get oauth cluster -ojsonpath={.spec.identityProviders[0].htpasswd.fileData.name})
  1. 将现有OpenShift环境中的htpasswd-secret包括的用户和密码导出来。
$ oc get secret ${HTPASSWD_SECRET} -ojsonpath={.data.htpasswd} -n openshift-config | base64 -d | tee htpasswd.txt
  1. 执行命令,向文件追加用户(admin/admin)。注意:在确认文件内容的时候每个用户是单独一行!我遇到在追加第一个用户的时候出现没有换行的情况,可以手动换行解决。
$ htpasswd -b htpasswd.txt admin admin
Adding password for user admin
$ cat htpasswd.txt 
。。。//其他已有用户
admin:$apr1$.0WVZfUa$jxi3vJFfqqWdnOgZrNYLF1
  1. 将用户文件密码文件导入到OpenShift。
$ oc create secret generic ${HTPASSWD_SECRET} --from-file=htpasswd=htpasswd.txt --dry-run=client -o yaml -n openshift-config | oc replace -f -
  1. 此时也可以在OpenShift Console进入openshift-config项目,然后从Workloads->Secrets找到htpasswd-secret,然后在Data区域点击Reveal Values查看用户名和加密密码。
    在这里插入图片描述
  2. 使用新建用户登录即可。注意:刚刚创建完用户马上登录有可能出现登录失败(401 Unauthorized),稍等几分钟再执行就会好了(这是因为OpenShift将htpasswd-secret的用户转换成OpenShift的User对象)。
$ oc login -u admin -p admin
  1. 用OpenShift集群管理员执行命令,查看当前已有的OpenShift User对象(并非现有有效用户。“用户”和“User对象”的区别是如果用户从未登录过OpenShift,则不会有User对象。如果用户登录过然后又被删除了,User对象不会自动删除)。
$ oc get users
NAME        UID                                    FULL NAME   IDENTITIES
admin       125c9da9-e84a-4cd3-9bc8-330f57d7960a               htpasswd_provider:admin
。。。//其他User
  1. (可选)如果需要给予用户更高权限,可以用OpenShift集群管理员给新建的用户赋“集群管理员”权限。
$ oc adm policy add-cluster-role-to-user cluster-admin admin
Logo

开源、云原生的融合云平台

更多推荐