K8s集群已有Dapr实例时在另一命名空间安装Dapr Helm Chart失败如何解决
Dapr 同一Kubernetes集群多实例部署冲突解决方案
问题根因
默认配置下Dapr Helm Chart会创建集群作用域资源(包括ClusterRole、ClusterRoleBinding、CRD、准入Webhook配置等,不属于任何命名空间),且这类资源名称固定。你在dev命名空间部署的第一套Dapr实例已经占用了这些名称,test命名空间部署第二套实例时就会触发资源所有权校验冲突,和你指定的Dapr版本无关。
Dapr官方原生支持同一集群部署多套实例,只需通过Helm参数修改资源前缀避免重名即可,解决方案如下:
解决步骤
1. 执行自定义配置的安装命令
安装第二套Dapr实例时增加名称覆盖、作用域限制参数,命令如下:
helm upgrade -i --namespace test \ dapr-uat dapr/dapr \ --version 1.4.2 \ --set global.fullnameOverride=dapr-uat \ --set global.nameOverride=dapr-uat \ --set global.scope.namespace=test
2. 参数说明
global.fullnameOverride、global.nameOverride:给所有资源添加自定义名称前缀,集群级资源会自动带上dapr-uat标识,和dev环境的dapr前缀资源完全隔离,不会出现重名冲突global.scope.namespace=test:配置当前Dapr实例仅管理test命名空间下的应用,两套实例互不干扰,隔离性更高。如果你需要Dapr实例管理整个集群的所有命名空间资源,去掉该参数即可
注意事项
- 多套Dapr实例版本尽量保持一致,避免CRD版本不兼容问题,不要出现一套是1.4.2、另一套是1.4.0的混用情况
- 若后续需要卸载特定环境的Dapr,直接执行对应release的helm uninstall命令即可,不会影响其他环境的实例
内容的提问来源于stack exchange,提问作者Reda E.
相关产品推荐
相关产品推荐

