k8s創建集群只讀service account

k8s創建集群只讀service account

k8s 集群上給比如開發人員創建一個只讀的service account,在這里記錄一下創建方法, viewonly.yaml

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: oms-viewonly
rules:
- apiGroups:
  - ""
  resources:
  - configmaps
  - endpoints
  - persistentvolumeclaims
  - pods
  - replicationcontrollers
  - replicationcontrollers/scale
  - serviceaccounts
  - services
  - nodes
  - persistentvolumeclaims
  - persistentvolumes
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - ""
  resources:
  - bindings
  - events
  - limitranges
  - namespaces/status
  - pods/log
  - pods/status
  - replicationcontrollers/status
  - resourcequotas
  - resourcequotas/status
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - ""
  resources:
  - namespaces
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - apps
  resources:
  - daemonsets
  - deployments
  - deployments/scale
  - replicasets
  - replicasets/scale
  - statefulsets
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - autoscaling
  resources:
  - horizontalpodautoscalers
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - batch
  resources:
  - cronjobs
  - jobs
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - extensions
  resources:
  - daemonsets
  - deployments
  - deployments/scale
  - ingresses
  - networkpolicies
  - replicasets
  - replicasets/scale
  - replicationcontrollers/scale
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - policy
  resources:
  - poddisruptionbudgets
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - networking.k8s.io
  resources:
  - networkpolicies
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - storage.k8s.io
  resources:
  - storageclasses
  - volumeattachments
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - rbac.authorization.k8s.io
  resources:
  - clusterrolebindings
  - clusterroles
  - roles
  - rolebindings
  verbs:
  - get
  - list
  - watch

---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: oms-read 
  namespace: kube-system

---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: oms-read
  labels: 
    k8s-app: oms-read
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: oms-viewonly
subjects:
- kind: ServiceAccount
  name: oms-read
  namespace: kube-system

然后創建:
kubectl apply -f viewonly.yaml
最后就可以使用以下命令查找剛剛創建SA的token:
kubectl -n kube-system describe secret (kubectl -n kube-system get secret | grep oms-read | awk '{print1}')
復制一個 ~/.kube/config 文件的副本,使用新生成的token 替換 kube-view.config 的最后一段

user:
  token: eyJhbGciOiJSUzI1NiIsImtpZCI6ImNETzRHYzY0Mkt3R3FPSWhJSDdLWGV0cElHamtxWWd1aWdvTXVQZ2VPb0UifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJvbXMtcmVhZC10b2tlbi1kZGRjcSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJvbXMtcmVhZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjNhNDgzZjQ3LTViZWItNDhkYi1hYTRmLTA4N2VlMDlhZTFmNyIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlLXN5c3RlbTpvbXMtcmVhZCJ9.GMoyunXW1o4_xQXiJEjz1Z9yPBEjgAjv-eDs9vU3IevAajh8Zy4797wstLeFfCr21AxECyOfccIRtqr5i-UYk9-qTJ15m2rg_8RLV8Ovrc5zBrL9jrvdMwl0NeWG7XpvW8RoLgAXFFY6bXrwH2NpJaBGEPz76HdiEyS_r50ZPeUG_arFfKA7FeCiRW-dzd__YM4GdFcs5BEVPMWj4qDmDC3EAML6juXJ8XhDoyq-X-OOA1bceco7zc-ZLmxhCMZPAMxR-SLuMNo_KbuY-eFUGiWDEMLo8e860-hSYITGjiKXV04Ke-cG9B7VcHwCo3nVB2y7WBhH_zFM6A2IEj_SEg

驗證權限

kubectl --kubeconfig=/root/kube-view.config get ns   可以執行成功kubectl --kubeconfig=/root/kube-view.config delete ns kube-node-lease 沒有執行權限
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容