RBAC资源以允许服务账户获取default命名空间中的Pod

解决方案

按照题目要求,我们需要完成以下步骤:

  1. 创建服务账户 app-account
  2. 创建角色 app-role-cka 并设置权限只能获取default命名空间中的Pod
  3. 创建角色绑定 app-role-binding-cka 将角色绑定到服务账户

1. 创建服务账户

kubectl create serviceaccount app-account

2. 创建角色 app-role-cka

创建一个YAML文件 app-role.yaml

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: app-role-cka
  namespace: default
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get"]

应用这个角色:

kubectl apply -f app-role.yaml

3. 创建角色绑定 app-role-binding-cka

创建一个YAML文件 app-role-binding.yaml

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: app-role-binding-cka
  namespace: default
subjects:
- kind: ServiceAccount
  name: app-account
  namespace: default
roleRef:
  kind: Role
  name: app-role-cka
  apiGroup: rbac.authorization.k8s.io

应用这个角色绑定:

kubectl apply -f app-role-binding.yaml

验证配置

  1. 验证服务账户已创建:
kubectl get serviceaccount app-account -n default
  1. 验证角色已创建并具有正确权限:
kubectl get role app-role-cka -n default -o yaml
  1. 验证角色绑定已正确关联:
kubectl get rolebinding app-role-binding-cka -n default -o yaml

现在,app-account 服务账户将只能获取default命名空间中的Pod资源。

posted on 2025-05-09 08:59  Leo-Yide  阅读(12)  评论(0)    收藏  举报