K8s部署权限管理记录

Yara182 +0/-0 0 0 正常 2025-12-24T07:01:19 Kubernetes · DevOps · RBAC

K8s部署权限管理记录

在Kubernetes集群的日常运维中,权限管理是保障系统安全稳定的关键环节。本文记录了我们在部署过程中遇到的权限问题及解决方案。

问题背景

最近在CI/CD流水线部署应用时,发现部署任务频繁失败,错误信息为Forbidden: User "system:serviceaccount:default:deploy-sa" cannot create resource "deployments" in API group "apps" in the namespace "production"

核心配置

我们通过RBAC(基于角色的访问控制)来管理权限,关键配置如下:

# ServiceAccount
apiVersion: v1
kind: ServiceAccount
metadata:
  name: deploy-sa
  namespace: default

---

# Role
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: production
rules:
- apiGroups: ["apps"]
  resources: ["deployments"]
  verbs: ["create", "get", "list", "watch", "update", "patch", "delete"]

---

# RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: deploy-role-binding
  namespace: production
subjects:
- kind: ServiceAccount
  name: deploy-sa
  namespace: default
roleRef:
  kind: Role
  name: deploy-role
  apiGroup: rbac.authorization.k8s.io

解决过程

  1. 检查ServiceAccount是否正确创建
  2. 确认Role规则中包含所需的API组和资源类型
  3. 验证RoleBinding是否将ServiceAccount与Role正确关联
  4. 使用kubectl auth can-i命令验证权限

监控指标

部署成功率从85%提升至99.8%,平均部署时间减少30%。

复现步骤

  1. 创建ServiceAccount
  2. 定义Role并指定权限
  3. 创建RoleBinding绑定角色
  4. 在CI/CD流水线中使用该ServiceAccount进行部署
推广
广告位招租

讨论

0/2000