今天要為我們的數位牧場建立身分驗證系統!身為現代牧場主,總不能每次進牧場都要記一堆密碼吧?就像現實中的牧場會有門禁卡系統,我們的 Rancher 牧場也需要整合 GitHub 這個「萬用身分證」,讓工程師們能用熟悉的 GitHub 帳號直接登入。這樣不僅方便,還能延續既有的權限管理體系。
在企業環境中,單一登入(SSO)已經是標準配備。Rancher 支援多種身分驗證提供商,包括 GitHub、GitLab、Azure AD、LDAP 等。今天我們選擇 GitHub 作為起手式,原因有幾個:
為什麼選擇 GitHub 認證?
認證流程原理
這個過程遵循標準的 OAuth 2.0 授權碼流程,確保密碼不會經過 Rancher 伺服器。
首先登入 Rancher 管理介面:
# 確認 Rancher 服務正常運行
curl -k https://ithome-rancher.duckdns.org/ping
在 Rancher UI 中導覽到認證設定:
你會看到各種認證提供商的選項,包括 GitHub、GitLab、Azure AD 等。
點選 GitHub 認證提供商的設定:
在 GitHub 中建立 OAuth 應用程式:
Application name: ithome-rancher.duckdns.org
Homepage URL: https://ithome-rancher.duckdns.org
Application description: N/A
Authorization callback URL: https://ithome-rancher.duckdns.org
重要提醒:Authorization callback URL 就填寫主域名即可,Rancher 會自動處理回調路徑。
建立 OAuth App 後,GitHub 會提供 Client ID 和 Client Secret:
回到 Rancher 認證設定頁面:
# Rancher GitHub 認證設定
Client ID: <你的GitHub Client ID>
Client Secret: <你的GitHub Client Secret>
回到 Rancher 認證設定頁面,填入 GitHub 提供的資訊後,你會看到存取控制選項:
Configure who should be able to login and use Rancher
範例設定畫面會顯示:
Authentication Provider: GitHub
Active: ✓
Server: https://github.com
Client ID: Ov23liXXXXXXXXXXX359T (已遮罩)
完成 Client ID 和 Client Secret 設定後,GitHub 認證就會自動啟用。
對個人帳號來說:
# 在瀏覽器中登出 Rancher
# 或開啟無痕視窗
# 在 Rancher UI 中檢查使用者設定
# Users & Authentication → Users
# 應該會看到從 GitHub 匯入的使用者資訊
測試不同權限等級的使用者:
問題 1:Callback URL 不匹配
# 錯誤訊息:redirect_uri_mismatch
# 解決方案:檢查 GitHub OAuth App 的 Authorization callback URL
# 確認是:https://ithome-rancher.duckdns.org
# 與 Rancher 設定中的 Server URL 保持一致
問題 2:Client Secret 輸入錯誤
# GitHub Client Secret 只會顯示一次
# 如果複製錯誤需要重新產生
# 檢查是否有多餘的空格或換行
問題 3:瀏覽器快取問題
# 清除瀏覽器快取和 Cookie
# 或使用無痕視窗測試登入
設定認證前,請確保有備用登入方式:
# 記住本地管理員密碼
# 或設定多個認證提供商
# 避免被鎖在門外
# 建議的安全設定
Default Site Access: User
Default Cluster Access: None
Default Project Access: None
只給予使用者最小必要權限,再透過 Rancher 的角色繫結機制細化權限。
今天我們成功為 Rancher 牧場建立了 GitHub 身分驗證系統!透過 OAuth 2.0 整合,工程師們現在可以用熟悉的 GitHub 帳號直接存取 Rancher,大幅提升了使用體驗和安全性。
重點回顧:
明天我們要學習牧場的「分區管理」!透過 Rancher 的 Project 功能來組織團隊和管理權限,建立多租戶環境的基礎架構。我們會實際建立 Project、新增使用者,體驗真正的多租戶權限分配。準備好進入多租戶管理的世界了嗎?
💡 牧場主小提示:記住你的本地管理員密碼!雖然 GitHub 登入很方便,但萬一 GitHub 服務中斷或 OAuth 設定出問題,還是需要本地 admin 帳號作為備用方案。就像牧場主除了電子門禁卡,還會留一把實體鑰匙一樣!