You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot在K8s中使用ConfigMap外部化配置权限报错如何解决

问题原因

报错是因为Pod使用的webapp-production命名空间下默认default服务账号,没有配置对应命名空间内ConfigMap资源的访问权限,属于标准的Kubernetes RBAC权限缺失问题,按以下步骤配置即可修复:

操作步骤
  • 第一步:创建专用服务账号(生产环境不建议直接使用default账号,避免权限溢出)
apiVersion: v1
kind: ServiceAccount
metadata:
  name: webapp-sa
  namespace: webapp-production

将上述内容保存为webapp-sa.yaml后执行kubectl apply -f webapp-sa.yaml完成创建。

  • 第二步:创建角色,授予ConfigMap资源的基础读取权限
    Spring Cloud Kubernetes启动时需要对ConfigMap执行get、list、watch三类操作,角色配置如下:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: webapp-production
  name: configmap-reader
rules:
- apiGroups: [""]
  resources: ["configmaps"]
  verbs: ["get", "list", "watch"]

保存为configmap-reader-role.yaml后执行kubectl apply -f configmap-reader-role.yaml。

  • 第三步:绑定角色与服务账号
    通过RoleBinding将刚才创建的读取权限授予webapp-sa账号:
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: webapp-configmap-binding
  namespace: webapp-production
subjects:
- kind: ServiceAccount
  name: webapp-sa
  namespace: webapp-production
roleRef:
  kind: Role
  name: configmap-reader
  apiGroup: rbac.authorization.k8s.io

保存为configmap-reader-binding.yaml后执行kubectl apply -f configmap-reader-binding.yaml。

  • 第四步:修改应用部署配置,指定使用新的服务账号
    在Spring Boot应用对应的Deployment的Pod spec段添加serviceAccountName字段,指定使用刚创建的webapp-sa:
spec:
  serviceAccountName: webapp-sa
  containers:
  - name: webapp
    image: 你的应用镜像地址
    # 其余原有容器配置保持不变

重新发布应用后权限报错就会消失。

额外注意点

你当前通过--from-file=config.yaml创建的ConfigMap,存储配置的key默认是config.yaml,Spring Cloud Kubernetes默认只会读取key为application.properties/application.yaml、或者和应用名同名key下的配置,就算权限配置正确也会读不到值。两种修复方式选其一即可:

  • 创建ConfigMap时显式指定key:执行命令改成kubectl create configmap webapp --namespace webapp-production --from-file=application.yaml=config.yaml
  • 在应用配置中指定读取的ConfigMap data key:添加配置spring.cloud.kubernetes.config.sources[0].data-key=config.yaml

内容的提问来源于stack exchange,提问作者Joaquín L. Robles

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 04:21:33