今天要學習牧場的「分區管理」!Rancher 的預設角色其實已經很完善,重點是如何善用 Project 功能來組織團隊和管理權限。就像一個大牧場會劃分成不同區域:開發牧場、測試牧場、生產牧場,每個區域有不同的管理員和使用規則。我們要建立 Project、邀請使用者,並且透過實際的權限分配來體驗多租戶管理的精髓!
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 是 Rancher 特有的概念,原生 Kubernetes 並沒有這個層級:
重要提醒:如果之後選擇離開 Rancher 改用其他 Kubernetes 管理工具,Project 這層抽象就會失效,需要直接面對 Namespace 和 RBAC 的複雜性。
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 (數據部門)
透過 Rancher UI 建立 Project:
Project Name: data
Description: 負責數據分析和機器學習服務
# 可選設定
Resource Quotas: 先不設定(之後會詳細介紹)
在剛建立的 Project 中建立 Namespace:
data
Project# 機器學習專案
Name: ml-project
Description: 機器學習模型訓練與推論
# 數據分析專案
Name: analytics-project
Description: 數據分析與報表生成
由於這是個人內網環境,我們需要建立 Local User 來測試權限功能:
建立 Local User 步驟:
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
- 可以查看所有資源
- 可以查看日誌和事件
- 不能修改任何資源
將 Local User 新增到 Project:
data
ProjectAdd Member to Project: data
Principal: john-analyst (選擇剛建立的 Local User)
Role: Project Member
部門成員通常全開權限:
由於同部門的成員需要協作,通常會給予所有 Namespace 的存取權限:
Namespace Access:
✓ All Namespaces in Project
- ml-project (機器學習專案)
- analytics-project (數據分析專案)
基本權限驗證:
data
Projectml-project
和 analytics-project
權限分配原則:
環境隔離策略:
快速檢查清單:
✓ 所有 Project 都有明確的負責人
✓ 沒有過度授權的使用者(避免太多 Project Owner)
✓ 新成員都經過適當的權限分配
✓ 定期檢查並移除離職人員的存取權限
✓ 重要 namespace 有適當的存取限制
透過 Rancher UI 監控:
使用者抱怨無法存取資源:
權限過度或不足:
💡 牧場主小提示:權限設計就像牧場的圍欄規劃,太鬆散牛會亂跑,太嚴格又影響工作效率!記住「信任但驗證」的原則,給予必要權限但保留監控機制。另外,Rancher 的 Projects 功能是多租戶管理的神器,明天我們就要正式進入多租戶的世界了!