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

Consul Helm安装报错:rbac.authorization.k8s.io/v1beta1无ClusterRole匹配

问题:Kubernetes 1.23部署Bitnami Consul Helm Chart 10.12.6时RBAC版本错误

执行terraform apply时触发以下错误:

Error: unable to build kubernetes objects from release manifest: [resource mapping not found for name: "devt2-d1-***-consul-tls-init-cleanup" namespace: "devt2-d1" from "": no matches for kind "ClusterRole" in version "rbac.authorization.k8s.io/v1beta1"

环境版本信息

  • Kubernetes EKS集群版本:1.23
  • kubectl版本:
Client Version: version.Info{Major:"1", Minor:"24+", GitVersion:"v1.24.13-eks-0a21954", GitCommit:"6305d65c340554ad8b4d7a5f21391c9fa34932cb", GitTreeState:"clean", BuildDate:"2023-04-15T00:37:31Z", GoVersion:"go1.19.8", Compiler:"gc", Platform:"linux/amd64"}
Kustomize Version: v4.5.4
Server Version: version.Info{Major:"1", Minor:"23+", GitVersion:"v1.23.17-eks-a5565ad", GitCommit:"23f44c7dd4e8e23856387345e7cb80bf0f93ced6", GitTreeState:"clean", BuildDate:"2023-06-15T21:19:39Z", GoVersion:"go1.19.6", Compiler:"gc", Platform:"linux/amd64"}
  • helm版本:
version.BuildInfo{Version:"v3.11.3", GitCommit:"323249351482b3bbfc9f5004f65d400aa70f9ae7", GitTreeState:"clean", GoVersion:"go1.20.3"}
  • terraform版本:
Terraform v1.5.3

问题根因

查看Consul Chart目录下的consul/charts/common/templates/_capabilities.tpl文件,发现RBAC版本判断逻辑:

{{/*
Return the appropriate apiVersion for RBAC resources.
*/}}
{{- define "common.capabilities.rbac.apiVersion" -}}
{{- if semverCompare "<1.17-0" (include "common.capabilities.kubeVersion" .) -}}
{{- print "rbac.authorization.k8s.io/v1beta1" -}}
{{- else -}}
{{- print "rbac.authorization.k8s.io/v1" -}}
{{- end -}}
{{- end -}}

由于EKS集群的版本号带有-eks-a5565ad后缀,semverCompare无法正确解析版本,错误触发了<1.17-0的判断,导致生成了已被Kubernetes 1.23废弃的rbac.authorization.k8s.io/v1beta1版本API。

解决方案

方案1:直接修改Chart模板

编辑consul/charts/common/templates/_capabilities.tpl,修改RBAC版本判断逻辑,强制使用v1版本:

{{/*
Return the appropriate apiVersion for RBAC resources.
*/}}
{{- define "common.capabilities.rbac.apiVersion" -}}
{{- print "rbac.authorization.k8s.io/v1" -}}
{{- end -}}

或者修正版本解析逻辑,去掉EKS后缀后再比较:

{{/*
Return the appropriate apiVersion for RBAC resources.
*/}}
{{- define "common.capabilities.rbac.apiVersion" -}}
{{- $rawKubeVersion := include "common.capabilities.kubeVersion" . -}}
{{- $cleanKubeVersion := regexReplaceAll "-.*" $rawKubeVersion "" -}}
{{- if semverCompare "<1.17" $cleanKubeVersion -}}
{{- print "rbac.authorization.k8s.io/v1beta1" -}}
{{- else -}}
{{- print "rbac.authorization.k8s.io/v1" -}}
{{- end -}}
{{- end -}}

方案2:通过Terraform强制设置RBAC版本

在Terraform的helm_release资源中添加set参数,直接指定RBAC API版本:

resource "helm_release" "consul" {
  name       = "consul"
  repository = "https://charts.bitnami.com/bitnami"
  chart      = "consul"
  version    = "10.12.6"
  namespace  = "devt2-d1"

  set {
    name  = "common.capabilities.rbac.apiVersion"
    value = "rbac.authorization.k8s.io/v1"
  }

  # 其他配置...
}

方案3:升级Consul Chart版本

该版本号解析问题大概率在后续Chart版本中已修复,可尝试升级到更高版本的Bitnami Consul Chart,避免手动修改模板。

内容的提问来源于stack exchange,提问作者swapnil

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 10:51:35