iT邦幫忙

2025 iThome 鐵人賽

DAY 14
1

牧場主今日工作

今天要學習牧場的「分區管理」!Rancher 的預設角色其實已經很完善,重點是如何善用 Project 功能來組織團隊和管理權限。就像一個大牧場會劃分成不同區域:開發牧場、測試牧場、生產牧場,每個區域有不同的管理員和使用規則。我們要建立 Project、邀請使用者,並且透過實際的權限分配來體驗多租戶管理的精髓!

理解 Rancher 的預設權限體系

https://ithelp.ithome.com.tw/upload/images/20250828/20141794DpaCYFq2nl.png

Rancher 預設角色的評估

Rancher 內建的權限體系經過精心設計,在一般使用情況下暫時可以符合需求。但如果有特殊需求,可以透過客製化 Role Template 來滿足:

# Global Level 全域角色
admin: 全平台管理員
standard: 一般使用者,可以被邀請到 cluster/project  
user: 基礎使用者

# Cluster Level 叢集角色
cluster-owner: 叢集完全管理權限
cluster-member: 叢集一般使用權限
read-only: 叢集唯讀權限

# Project Level 專案角色  
project-owner: 專案完全管理權限
project-member: 專案開發者權限(最常用)
read-only: 專案唯讀權限

權限管理的關鍵:Project 組織架構

Project 是 Rancher 特有的概念,原生 Kubernetes 並沒有這個層級:

  • 一個 Project 包含多個 Namespace
  • 不同 Project 之間完全隔離
  • 可以為每個 Project 分配不同的團隊成員
  • 支援資源配額和網路隔離

重要提醒:如果之後選擇離開 Rancher 改用其他 Kubernetes 管理工具,Project 這層抽象就會失效,需要直接面對 Namespace 和 RBAC 的複雜性。

建立 Project 實戰操作

設計 Project 架構

Project 可以根據公司規模來設計,以團隊或部門作為 Project 單位,而 Namespace 以專案或服務為單位:

# 小型公司:以團隊為 Project 單位
├── frontend (前端團隊專案)
│   ├── web-app (網站應用)
│   ├── mobile-app (手機應用)
│   └── admin-panel (管理後台)
│
├── backend (後端團隊專案)  
│   ├── user-service (使用者服務)
│   ├── payment-service (付費服務)
│   └── notification-service (通知服務)
│
└── platform (平台團隊專案)
    ├── argocd (GitOps 部署)
    ├── monitoring (監控服務)
    └── logging (日誌服務)
# 大型公司:以部門為 Project 單位
├── engineering (工程部門)
├── marketing (行銷部門)  
├── operations (維運部門)
└── data (數據部門)

建立第一個 Project

透過 Rancher UI 建立 Project:

  1. 前往目標 Cluster
  2. 點選左側選單的 Projects/Namespaces
  3. 點選 Create Project 按鈕
  4. 填寫 Project 資訊:
Project Name: data
Description: 負責數據分析和機器學習服務

# 可選設定
Resource Quotas: 先不設定(之後會詳細介紹)
  1. 點選 Create 完成建立

為 Project 建立 Namespace

在剛建立的 Project 中建立 Namespace:

  1. 進入 data Project
  2. 點選 Create Namespace
  3. 建立兩個專案相關的 Namespace:
# 機器學習專案
Name: ml-project
Description: 機器學習模型訓練與推論

# 數據分析專案
Name: analytics-project
Description: 數據分析與報表生成

https://ithelp.ithome.com.tw/upload/images/20250828/2014179475CS96gZYj.png

使用者管理與權限分配

建立測試使用者

由於這是個人內網環境,我們需要建立 Local User 來測試權限功能:

建立 Local User 步驟:

  1. 前往 Users & AuthenticationUsers
  2. 點選 Create 按鈕
  3. 填寫使用者資訊:
Username: john-analyst
Password: 設定一個安全密碼
Confirm Password: 確認密碼
User-Base

建立多個測試帳號:

  • alice-manager: 數據部門主管
  • john-analyst: 數據分析師
  • bob-viewer: 觀察者角色

權限分配實戰

為 data Project 分配團隊成員:

# 部門主管  
User: alice-manager (Local User)
Role: Project Member (原則上不會給 Owner,只有 Admin 可以有建立 Namespace 權限,不然 ResourceQuotas 可以被隨意變更)
  - 可以在指定 Namespace 中開發
  - 可以建立 ConfigMap、Secret
  - 可以部署和管理應用程式

# 數據分析師
User: john-analyst (Local User)
Role: Project Member
  - 可以在指定 Namespace 中開發
  - 可以建立 ConfigMap、Secret
  - 可以部署和管理應用程式

# 觀察者
User: bob-viewer (Local User)
Role: Read Only
  - 可以查看所有資源
  - 可以查看日誌和事件
  - 不能修改任何資源

https://ithelp.ithome.com.tw/upload/images/20250828/20141794hr861pIBMo.png

實際操作步驟

將 Local User 新增到 Project:

  1. 進入 data Project
  2. 點選 MembersAdd Member
  3. 設定成員資訊:
Add Member to Project: data
Principal: john-analyst (選擇剛建立的 Local User)
Role: Project Member

部門成員通常全開權限:

由於同部門的成員需要協作,通常會給予所有 Namespace 的存取權限:

Namespace Access:
✓ All Namespaces in Project
  - ml-project (機器學習專案)
  - analytics-project (數據分析專案)

權限測試與驗證

透過 Rancher UI 測試權限

基本權限驗證:

  1. 開啟無痕瀏覽器視窗
  2. 用 john-analyst 帳號登入 Rancher
  3. 檢查可見的內容:
    • 只能看到 data Project
    • 可以看到被分配的 namespace:ml-projectanalytics-project
    • 無法看到其他 Project

https://ithelp.ithome.com.tw/upload/images/20250828/20141794HdGCqYV6Y3.png
https://ithelp.ithome.com.tw/upload/images/20250828/20141794sQ2JAOcTzM.png

權限管理實務經驗

權限分配原則:

  1. 團隊成員自行協調 Read Only、Member 角色
  2. Project Owner 權限原則上不開放,因為可以修改 Project 設定,會破壞申請制度的管控意義
  3. 同部門成員通常給予所有 Namespace 的存取權限

環境隔離策略:

  • 不同環境(開發/測試/生產)應該分開不同 Project 避免互相影響
  • 如果資源有限,可以用 Namespace 來區分不同環境
  • 生產環境絕對不應該與開發環境放在同一個 Project

叢集健康診斷重點

權限系統健康檢查

快速檢查清單:

✓ 所有 Project 都有明確的負責人
✓ 沒有過度授權的使用者(避免太多 Project Owner)
✓ 新成員都經過適當的權限分配  
✓ 定期檢查並移除離職人員的存取權限
✓ 重要 namespace 有適當的存取限制

透過 Rancher UI 監控:

  1. Users & Authentication → Users: 檢視所有使用者狀態
  2. Projects/Namespaces: 確認 Project 結構合理
  3. Events: 查看權限相關的異常事件

常見問題快速診斷

使用者抱怨無法存取資源:

  1. 確認使用者已被邀請到正確的 Project
  2. 檢查角色分配是否正確
  3. 驗證 Namespace 範圍設定
  4. 透過 Rancher UI 的 Project → Members 檢查實際權限

權限過度或不足:

  1. 檢視 Project Members 列表
  2. 調整使用者角色或 Namespace 範圍
  3. 考慮建立新的 Project 來更好地隔離
  4. 使用無痕瀏覽器測試不同使用者的實際體驗

💡 牧場主小提示:權限設計就像牧場的圍欄規劃,太鬆散牛會亂跑,太嚴格又影響工作效率!記住「信任但驗證」的原則,給予必要權限但保留監控機制。另外,Rancher 的 Projects 功能是多租戶管理的神器,明天我們就要正式進入多租戶的世界了!


上一篇
Day 13: 第三方登入整合 - GitHub 串接實戰
下一篇
Day 15: 動態儲存管理與 NFS CSI 配置
系列文
牧場主的 K8s 放牧日記18
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言