Keywords: Create and add permission for user account RBAC on Kubernetes
Chào tất cả mọi người, lâu rồi mới ngồi viết linh ta linh tinh gì đó trên cái trang này, sau khi giải quyết xong áp lực của công việc thì cuối cùng bản thân mình cũng đã control mọi thứ ổn thỏa trở lại rồi, chính vì thế mình mới quay về viết blog cho các bạn đây, hôm nay mình sẻ hướng dẫn các bạn tạo account trên Kubernetes nhé
Giả sử một ngày đẹp trời nào đó sếp của các bạn yêu cầu các bạn cấp quyền cho Dev có thể truy cập vào hệ thống K8S của công ty nhưng phải giới hạn một số quyền cũng như trên một số namespace nhất định, vậy lúc đó các bạn sẻ làm thế nào? cùng mình thực hiện điều này nhé.- Quyền cho tất cả namespace (Cluster)
- CluserRole
- ServiceAccount
- ClusterRoleBinding
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: thanhphatit-cr
rules:
- apiGroups: [""]
resources: ["pods", "pods/log", "pods/portforward", "services"]
verbs: ["get", "watch", "list", "patch"]
- apiGroups: [""]
resources: ["namespaces"]
verbs: ["get", "list", "patch"]
- apiGroups: [""]
resources: ["pods/exec"]
verbs: ["create", "get", "list", "patch"]
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: thanhphatit
namespace: itblognote
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: thanhphatit-crb
subjects:
- kind: ServiceAccount
name: thanhphatit
namespace: itblognote
roleRef:
kind: ClusterRole
name: thanhphatit-cr
apiGroup: rbac.authorization.k8s.io
- Quyền cho một namespace được chỉ định
- Role
- ServiceAccount
- Secret
- RoleBinding
kind: Role apiVersion: rbac.authorization.k8s.io/v1 metadata: name: itblognote-developer-r namespace: itblognote-dev rules: - apiGroups: [""] resources: ["pods", "pods/log", "pods/portforward", "services"] verbs: ["create", "get", "watch", "list", "patch"] - apiGroups: [""] resources: ["namespaces"] verbs: ["get", "list", "patch"] - apiGroups: [""] resources: ["pods/exec"] verbs: ["create", "get", "list", "patch"] --- apiVersion: v1 kind: ServiceAccount metadata: name: itblognote-developer namespace: itblognote-dev --- apiVersion: v1 kind: Secret type: kubernetes.io/service-account-token metadata: name: itblognote-developer-secret namespace: itblognote-dev annotations: kubernetes.io/service-account.name: itblognote-developer --- kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: itblognote-developer-rb namespace: itblognote-dev subjects: - kind: ServiceAccount name: itblognote-developer namespace: itblognote-dev roleRef: kind: Role name: itblognote-developer-r apiGroup: rbac.authorization.k8s.ioSự khác biệt giữa 2 thằng này chính là để thực hiện cho một ns nhất định nào đó thì chúng ta phải sử dụng là Role chứ không được phép sử dụng ClusterRole, Cluster đồng nghĩa với việc chúng ta sẻ cấp toàn quyền cho cả Cluster K8S của chúng ta nên vì vậy cho dù các bạn có gán namespace vào trong trường metadata cũng vô nghĩa và chẳng có tác dụng gì nếu như các bạn muốn chỉ cho một namespace nhất định, vì vậy tốt nhất các bạn nên chọn config bên dưới nghĩa là chỉ Role thôi, sau khi thực hiện kubectl apply nó thì các bạn có thể get token bằng lệnh sau
kubectl -n namespace-of-sa describe secret $(kubectl -n namespace-of-sa get secret | grep itblognote-developer-secret | awk '{print $1}')Chú ý điều chỉnh role đúng với nhu cầu mà phía công ty bạn muốn nhé
0 Comments
Vài lời muốn nói:
* Không được nhận xét thô tục bởi mình biết các bạn là những người văn minh.
* Pass giải nén mặt định là itblognote hoặc itblognote.com nếu có Pass khác thì mình sẽ ghim trong bài viết.
* Click vào quảng cáo và chia sẻ bài viết để mình có thêm động lực viết bài nhé.