天天看點

Hands-on Lab (10) - 增加管理者使用者說明和環境準備增加管理者使用者

《OpenShift 4.x HOL教程彙總》

說明:本文已經在OpenShift 4.6環境中驗證

文章目錄

  • 說明和環境準備
  • 增加管理者使用者

說明和環境準備

  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
$ export 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檢視使用者名和加密密碼。
    Hands-on Lab (10) - 增加管理者使用者說明和環境準備增加管理者使用者
  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
           

繼續閱讀