因工作需求,最近在研究如何使用 Rancher[1] 來管理 Kubernetes[2] 叢集,於是打算在 Homelab 上也建一組,想說前幾個禮拜還在研究 FreeIPA[3] 乾脆把他們湊一堆好了 XD
準備 Service Account
在開始將 FreeIPA 驗證接進 Rancher 之前,Rancher 要求先在 IPA 裡面建立一個 Service Account 來提供 Rancher 查詢 Domain 下的使用者與群組,但這個建立 Service Account 的步驟無法從 FreeIPA Web 界面執行,必須手動將這個 Account 加入 LDAP 中[4],首先到 IPA master 上執行下列步驟:(假設 IPA domain 為 example.com
)
$ cat - <<-EOF > add-srvacct-rancher.ldif
dn: uid=rancher,cn=sysaccounts,cn=etc,dc=example,dc=com
changetype: add
objectclass: account
objectclass: simplesecurityobject
uid: rancher
userPassword: 2Brq/Ux4rs:2Dnt3#%Rx
nsIdleTimeout: 0
EOF
$ ldapmodify -x -D 'cn=Directory Manager' -W < add-srvacct-rancher.ldif
Enter LDAP Password: # Enter Dircetory Manager password
adding new entry "uid=rancher,cn=sysaccounts,cn=etc,dc=example,dc=com"
$
其中 dc=example,dc=com
記得換成自己的 IPA domain,以及自己產生 userPassword
(筆者是使用密碼產生器產生)後記下,待會會在 Rancher 設定用到。
設定 Rancher
首先登入有 administrator 權限的帳號,並依照以下步驟設定 FreeIPA Authenticate:
- 在 Global 域中選擇 Security -> Authentication
- 選擇 FreeIPA
- 填入 FreeIPA 伺服器資訊
- 在 Service Account 相關資訊中填入剛剛建立的 Service Account
- Service Account Distinguished Name(記得換成 IPA domain)
uid=rancher,cn=sysaccounts,cn=etc,dc=example,dc=com
- Service Account Password
- 剛剛建立的
userPassword
值
- 剛剛建立的
- Service Account Distinguished Name(記得換成 IPA domain)
- 填入使用者資料庫相關資訊
- User Search Base(記得換成 IPA domain)
cn=users,cn=accounts,dc=example,dc=com
- Group Search Base(記得換成 IPA domain)
cn=groups,cn=accounts,dc=example,dc=com
- User Search Base(記得換成 IPA domain)
- Customize Schema 的部分我會選擇調整使用者的帳號資訊對應
- Username Attribute(使用者顯示名稱)
displayName
- Login Attribute(使用者帳號)
uid
- Search Attribute(搜尋欄位,在搜尋使用者時會去尋找的欄位,預設是姓名跟帳號)
uid
- Username Attribute(使用者顯示名稱)
- 在 Test and enable authentication 中填入要與目前帳號綁定的 FreeIPA 帳號資訊
- 根據 Rancher 的說明[5],在這裡填入的 FreeIPA 帳號(external principal)會自動對應到目前用來設定的管理員帳號(local principal),並會在設定成功之後自動改用 external principal 登入 Rancher
- 在設定完成後點擊 Authenticate with FreeIPA 即可完成設定
設定完成後發現會被 Rancher 自動以剛剛 test authentication 的帳號登入,並且同時又是剛剛設定時使用的管理員帳號,從 Preference 頁面可以看到這個現象,但不要緊張,只是因為 Rancher 把這兩個帳號綁定了,共用 local ID。
後記
這次的篇幅稍短,介紹的內容也是偏簡單,僅對於 FreeIPA 如何建立 Service Account 的部分有特別需要撰寫 ldif 來手動加入 LDAP。 不知道大家對於這種篇幅及類型的文章接受度如何,就先當作是嘗試看看,同時也是在回應筆者朋友兼大神 小飛機 提出的看法[6]「資訊太多,透過文字消化資訊和整理思緒」並為自己而寫,因此打算開始嘗試這種廢文體短篇筆記型的內容,同時用比較輕鬆的態度來發文看看 XD
管理 Kubernetes 叢集的工具,提供多叢集、ACL、自動部署、Web 界面等特點,該公司還有出很多 K8s 相關的其他工具,詳見官方網站 ↩︎
Kubernetes 是用於自動部署、擴展和管理「容器化(containerized)應用程式」的開源系統,詳見其官方網站 ↩︎
FreeIPA 是免費的開源身份管理系統,IPA 分別代表 Identity、Policy、Audit,同時也是 Red Hat Identity Manager 的上游開源專案,詳見其官方網站 ↩︎
FreeIPA 的 HowTo/LDAP 頁面亦有提及如何新增 Service Account/System Account ↩︎
https://rancher.com/docs/rancher/v2.x/en/admin-settings/authentication/#external-authentication-configuration-and-principal-users ↩︎