iT邦幫忙

2025 iThome 鐵人賽

DAY 13
1
DevOps

牧場主的 K8s 放牧日記系列 第 13

Day 13: 第三方登入整合 - GitHub 串接實戰

  • 分享至 

  • xImage
  •  

牧場主今日工作

今天要為我們的數位牧場建立身分驗證系統!身為現代牧場主,總不能每次進牧場都要記一堆密碼吧?就像現實中的牧場會有門禁卡系統,我們的 Rancher 牧場也需要整合 GitHub 這個「萬用身分證」,讓工程師們能用熟悉的 GitHub 帳號直接登入。這樣不僅方便,還能延續既有的權限管理體系。

技術背景與概念

在企業環境中,單一登入(SSO)已經是標準配備。Rancher 支援多種身分驗證提供商,包括 GitHub、GitLab、Azure AD、LDAP 等。今天我們選擇 GitHub 作為起手式,原因有幾個:

為什麼選擇 GitHub 認證?

  • 大部分工程師都有 GitHub 帳號,學習成本低
  • GitHub 的 OAuth 2.0 整合相對簡單
  • 可以直接利用 GitHub 的組織和團隊權限
  • 免費且穩定的服務

認證流程原理

  1. 使用者點選「使用 GitHub 登入」
  2. 瀏覽器跳轉到 GitHub OAuth 授權頁面
  3. 使用者授權後,GitHub 回傳授權碼給 Rancher
  4. Rancher 用授權碼換取存取權杖
  5. 取得使用者基本資訊,建立或更新 Rancher 使用者

這個過程遵循標準的 OAuth 2.0 授權碼流程,確保密碼不會經過 Rancher 伺服器。

https://ithelp.ithome.com.tw/upload/images/20250827/20141794sdMM0ymaPy.png

詳細實作步驟

步驟 1:進入 Rancher 認證設定

首先登入 Rancher 管理介面:

# 確認 Rancher 服務正常運行
curl -k https://ithome-rancher.duckdns.org/ping

在 Rancher UI 中導覽到認證設定:

  1. 點選左上角的「☰」選單
  2. 選擇「Users & Authentication」
  3. 點選「Auth Provider」標籤

你會看到各種認證提供商的選項,包括 GitHub、GitLab、Azure AD 等。

步驟 2:建立 GitHub OAuth Application

點選 GitHub 認證提供商的設定:

  1. 點選「GitHub」選項
  2. 會出現設定頁面,包含一個「Click here to go to GitHub application settings in a new window」的連結
  3. 點選這個連結會開啟 GitHub 的 OAuth Apps 管理頁面

在 GitHub 中建立 OAuth 應用程式:

  1. 登入你的 GitHub 帳號
  2. 前往 Settings → Developer settings → OAuth Apps
  3. 點選「New OAuth App」按鈕
  4. 填入以下資訊:
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 會自動處理回調路徑。

步驟 3:設定 Rancher GitHub 認證

建立 OAuth App 後,GitHub 會提供 Client ID 和 Client Secret:

  1. 複製 Client ID
  2. 點選「Generate a new client secret」產生 Client Secret
  3. 複製這個 Secret(注意:只會顯示一次)

回到 Rancher 認證設定頁面:

# Rancher GitHub 認證設定
Client ID: <你的GitHub Client ID>
Client Secret: <你的GitHub Client Secret>

步驟 4:配置 Rancher 存取控制

回到 Rancher 認證設定頁面,填入 GitHub 提供的資訊後,你會看到存取控制選項:

Configure who should be able to login and use Rancher

  • 預設會允許任何擁有 GitHub 帳號的使用者登入
  • 如果你有 GitHub 組織,才會出現組織限制選項
  • 對個人帳號使用通常不需要額外限制設定

範例設定畫面會顯示:

Authentication Provider: GitHub
Active: ✓
Server: https://github.com  
Client ID: Ov23liXXXXXXXXXXX359T (已遮罩)

步驟 5:認證設定完成

完成 Client ID 和 Client Secret 設定後,GitHub 認證就會自動啟用。

對個人帳號來說

  • 預設就是 Active 狀態
  • 不需要額外的啟用步驟
  • 你的個人 GitHub 帳號會自動擁有管理員權限

認證測試與驗證

測試登入流程

  1. 登出現有連線
# 在瀏覽器中登出 Rancher
# 或開啟無痕視窗
  1. 測試 GitHub 登入
  • 前往 Rancher 登入頁面
  • 你會看到「Log in with GitHub」的選項
  • 點選後會跳轉到 GitHub 授權頁面
  • 授權後應該會自動登入 Rancher

https://ithelp.ithome.com.tw/upload/images/20250827/20141794P7Zaf94APA.png

  1. 驗證使用者資訊
# 在 Rancher UI 中檢查使用者設定
# Users & Authentication → Users
# 應該會看到從 GitHub 匯入的使用者資訊

權限測試

測試不同權限等級的使用者:

  1. 組織成員測試:邀請組織內其他成員測試登入
  2. 權限繼承測試:確認 GitHub 團隊權限是否正確對應到 Rancher 角色
  3. 存取控制測試:確認非授權使用者無法登入

故障排除常見問題

認證失敗問題

問題 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,大幅提升了使用體驗和安全性。

重點回顧:

  • ✅ 理解 OAuth 2.0 認證流程
  • ✅ 設定 GitHub OAuth Application
  • ✅ 完成 Rancher GitHub 認證整合
  • ✅ 測試登入流程和權限控制
  • ✅ 建立安全性最佳實務

明天我們要學習牧場的「分區管理」!透過 Rancher 的 Project 功能來組織團隊和管理權限,建立多租戶環境的基礎架構。我們會實際建立 Project、新增使用者,體驗真正的多租戶權限分配。準備好進入多租戶管理的世界了嗎?


💡 牧場主小提示:記住你的本地管理員密碼!雖然 GitHub 登入很方便,但萬一 GitHub 服務中斷或 OAuth 設定出問題,還是需要本地 admin 帳號作為備用方案。就像牧場主除了電子門禁卡,還會留一把實體鑰匙一樣!


上一篇
Day 12: Custom Cluster 魔法召喚
下一篇
Day 14: Project 管理與使用者權限實戰
系列文
牧場主的 K8s 放牧日記17
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言