《OpenShift 4.x HOL教程彙總》
說明:本文已經在OpenShift 4.6環境中驗證
文章目錄
- 說明和環境準備
- 增加管理者使用者
說明和環境準備
- 本文主要适用于使用HTPasswd Identity Provider機制驗證使用者名和密碼。
- 檢查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
- 如果OpenShift 4的OAuth中還沒有 HTPasswd Identity Provider,可以參考《OpenShift 4之增加 HTPasswd方式的身份認證》建立HTPasswd Identity Provider和添加使用者。
- 安裝基于htpasswd的密碼管理工具httpd-tools和YAML查詢工具yq。
$ sudo yum -y install httpd-tools
$ sudo pip3 install yq
增加管理者使用者
在OpenShift 4裝好後隻有一個kubeadmin叢集管理者使用者。我們可以通過以下方法增加其他使用者,并賦予管理者權限。
- 用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})
- 将現有OpenShift環境中的htpasswd-secret包括的使用者和密碼導出來。
$ oc get secret ${HTPASSWD_SECRET} -ojsonpath={.data.htpasswd} -n openshift-config | base64 -d | tee htpasswd.txt
- 執行指令,向檔案追加使用者(admin/admin)。注意:在确認檔案内容的時候每個使用者是單獨一行!我遇到在追加第一個使用者的時候出現沒有換行的情況,可以手動換行解決。
$ htpasswd -b htpasswd.txt admin admin
Adding password for user admin
$ cat htpasswd.txt
。。。//其他已有使用者
admin:$apr1$.0WVZfUa$jxi3vJFfqqWdnOgZrNYLF1
- 将使用者檔案密碼檔案導入到OpenShift。
$ oc create secret generic ${HTPASSWD_SECRET} --from-file=htpasswd=htpasswd.txt --dry-run=client -o yaml -n openshift-config | oc replace -f -
- 此時也可以在OpenShift Console進入openshift-config項目,然後從Workloads->Secrets找到htpasswd-secret,然後在Data區域點選Reveal Values檢視使用者名和加密密碼。
- 使用建立使用者登入即可。注意:剛剛建立完使用者馬上登入有可能出現登入失敗(401 Unauthorized),稍等幾分鐘再執行就會好了(這是因為OpenShift将htpasswd-secret的使用者轉換成OpenShift的User對象)。
$ oc login -u admin -p admin
- 用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
- (可選)如果需要給予使用者更高權限,可以用OpenShift叢集管理者給建立的使用者賦“叢集管理者”權限。
$ oc adm policy add-cluster-role-to-user cluster-admin admin