在Kubernetes中建立普通使用者並訪問Dashboard的詳細步驟 🛠️🔐
在Kubernetes中,為普通使用者建立訪問Dashboard的許可權涉及多個步驟,包括建立使用者證書、配置檔案、授權訪問許可權等。本文將詳細介紹每一步驟,確保您能夠安全、有效地配置使用者訪問Dashboard。
目錄
- 建立使用者證書和私鑰
- 建立Kubernetes配置檔案
- 授權使用者訪問Dashboard
- 建立RoleBinding或ClusterRoleBinding
- 獲取Dashboard的Token
- 訪問Dashboard
- 注意事項
- 總結
- 關鍵點概覽
建立使用者證書和私鑰 🔑
首先,需要為普通使用者建立證書和私鑰,以便使用者透過證書進行身份驗證。
步驟1:生成私鑰
使用openssl
生成使用者的私鑰:
openssl genrsa -out user.key 2048
解釋:上述命令生成一個2048位的RSA私鑰,儲存為user.key
檔案。
步驟2:建立證書籤名請求(CSR)
openssl req -new -key user.key -out user.csr -subj "/CN=regular-user/O=developers"
解釋:此命令基於私鑰user.key
建立一個CSR檔案user.csr
,其中CN
代表使用者名稱,O
代表組織(組)。
步驟3:使用Kubernetes的證書頒發機構(CA)簽署CSR
假設Kubernetes CA的證書和私鑰分別位於/etc/kubernetes/pki/ca.crt
和/etc/kubernetes/pki/ca.key
。
openssl x509 -req -in user.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out user.crt -days 365
解釋:該命令使用CA簽署CSR,生成使用者的證書user.crt
,有效期為365天。
建立Kubernetes配置檔案 📝
接下來,需要為使用者建立一個Kubeconfig檔案,包含叢集資訊、證書和上下文配置。
步驟1:設定叢集資訊
kubectl config set-cluster kubernetes-dashboard \
--server=https://<kubernetes-master>:6443 \
--certificate-authority=/etc/kubernetes/pki/ca.crt \
--kubeconfig=user.kubeconfig
解釋:此命令定義一個名為kubernetes-dashboard
的叢集,指定Kubernetes API伺服器地址和CA證書,儲存到user.kubeconfig
檔案中。
步驟2:設定使用者憑證
kubectl config set-credentials regular-user \
--client-certificate=user.crt \
--client-key=user.key \
--kubeconfig=user.kubeconfig
解釋:將使用者的證書user.crt
和私鑰user.key
配置到user.kubeconfig
中,使用者名稱為regular-user
。
步驟3:設定上下文
kubectl config set-context regular-user@kubernetes-dashboard \
--cluster=kubernetes-dashboard \
--user=regular-user \
--kubeconfig=user.kubeconfig
解釋:建立一個上下文regular-user@kubernetes-dashboard
,關聯到之前配置的叢集和使用者。
步驟4:選擇上下文
kubectl config use-context regular-user@kubernetes-dashboard --kubeconfig=user.kubeconfig
解釋:將當前上下文設定為regular-user@kubernetes-dashboard
,確保後續操作使用該配置。
授權使用者訪問Dashboard 🛡️
為確保使用者能夠訪問Dashboard,需要定義角色(Role)或叢集角色(ClusterRole),並授予相應許可權。
建立ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: dashboard-access
rules:
- apiGroups: ["*"]
resources: ["*"]
verbs: ["get", "list", "watch"]
解釋:此ClusterRole
名為dashboard-access
,允許使用者執行get
、list
、watch
操作,適用於所有API組和資源。
建立RoleBinding或ClusterRoleBinding 🔗
將使用者與上述角色繫結,確保其擁有訪問許可權。
建立ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: dashboard-access-binding
subjects:
- kind: User
name: regular-user
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: ClusterRole
name: dashboard-access
apiGroup: rbac.authorization.k8s.io
解釋:此ClusterRoleBinding
將regular-user
與dashboard-access
角色繫結,授予其相應許可權。
應用配置
將上述YAML內容儲存為dashboard-access.yaml
,然後應用到叢集中:
kubectl apply -f dashboard-access.yaml
解釋:透過kubectl apply
命令將許可權配置應用到Kubernetes叢集。
獲取Dashboard的Token 🗝️
使用者需要一個訪問令牌來登入Dashboard。
建立ServiceAccount
apiVersion: v1
kind: ServiceAccount
metadata:
name: dashboard-user
namespace: kubernetes-dashboard
解釋:建立一個名為dashboard-user
的ServiceAccount,位於kubernetes-dashboard
名稱空間。
建立RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: dashboard-user-binding
subjects:
- kind: ServiceAccount
name: dashboard-user
namespace: kubernetes-dashboard
roleRef:
kind: ClusterRole
name: dashboard-access
apiGroup: rbac.authorization.k8s.io
解釋:將dashboard-user
ServiceAccount與dashboard-access
角色繫結。
應用配置
將上述YAML內容儲存為dashboard-user.yaml
,然後應用:
kubectl apply -f dashboard-user.yaml
獲取Token
kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep dashboard-user | awk '{print $1}')
解釋:該命令提取並顯示dashboard-user
ServiceAccount的Token,用於登入Dashboard。
訪問Dashboard 🌐
啟動Dashboard服務:
確保Dashboard已部署並執行:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.0/aio/deploy/recommended.yaml
訪問Dashboard:
使用
kubectl proxy
啟動代理:kubectl proxy
然後在瀏覽器中訪問:
http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/
登入Dashboard:
在登入頁面選擇Token方式,輸入之前獲取的Token,完成登入。
注意事項 ⚠️
- 最小許可權原則:僅授予使用者所需的最小許可權,避免過度授權,提升安全性。
- Token管理:妥善保管訪問Token,防止洩露,定期更換。
- 版本相容:不同版本的Dashboard可能有不同的配置要求,建議參考官方文件。
- 許可權審計:定期審查使用者許可權,確保符合組織安全策略。
總結 📌
透過以上步驟,您可以在Kubernetes中為普通使用者建立證書和私鑰,配置Kubeconfig檔案,授權訪問Dashboard,並獲取訪問Token,實現安全、有效的Dashboard訪問。關鍵在於合理配置許可權,確保使用者僅能訪問必要的資源,從而保障叢集的安全性和穩定性。
建立普通使用者並訪問Dashboard的關鍵步驟概覽
步驟 | 描述 |
---|---|
建立使用者證書和私鑰 | 使用openssl 生成使用者的證書和私鑰,確保身份驗證安全 |
建立Kubernetes配置檔案 | 配置Kubeconfig檔案,包含叢集資訊和使用者憑證 |
授權使用者訪問Dashboard | 定義ClusterRole ,指定使用者可執行的操作和訪問的資源 |
建立RoleBinding | 將使用者與角色繫結,授予其訪問許可權 |
獲取Dashboard Token | 建立ServiceAccount並獲取其Token,用於登入Dashboard |
訪問Dashboard | 使用Token透過瀏覽器安全登入Kubernetes Dashboard |
注意事項 | 遵循最小許可權原則,妥善管理Token,確保配置安全 |
透過系統化的配置流程,您能夠為普通使用者安全地配置Kubernetes Dashboard訪問許可權,提升叢集管理的效率與安全性。