k8s建立普通使用者訪問dashboard

蓝易云發表於2024-11-22

在Kubernetes中建立普通使用者並訪問Dashboard的詳細步驟 🛠️🔐

Kubernetes中,為普通使用者建立訪問Dashboard的許可權涉及多個步驟,包括建立使用者證書、配置檔案、授權訪問許可權等。本文將詳細介紹每一步驟,確保您能夠安全、有效地配置使用者訪問Dashboard。

目錄

  1. 建立使用者證書和私鑰
  2. 建立Kubernetes配置檔案
  3. 授權使用者訪問Dashboard
  4. 建立RoleBinding或ClusterRoleBinding
  5. 獲取Dashboard的Token
  6. 訪問Dashboard
  7. 注意事項
  8. 總結
  9. 關鍵點概覽

建立使用者證書和私鑰 🔑

首先,需要為普通使用者建立證書私鑰,以便使用者透過證書進行身份驗證。

步驟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,允許使用者執行getlistwatch操作,適用於所有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

解釋:此ClusterRoleBindingregular-userdashboard-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 🌐

  1. 啟動Dashboard服務

    確保Dashboard已部署並執行:

    kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.0/aio/deploy/recommended.yaml
  2. 訪問Dashboard

    使用kubectl proxy啟動代理:

    kubectl proxy

    然後在瀏覽器中訪問:

    http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/
  3. 登入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訪問許可權,提升叢集管理的效率與安全性。

相關文章