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

使用Kustomize渲染CockroachDB Helm Chart时API版本错误问询

问题

使用kubectl kustomize渲染CockroachDB Helm Chart时,部分资源生成了不兼容的Kubernetes API版本。

我的kustomization配置:

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: apps

generators:
  - cockroachdbChart.yaml

Helm Chart Inflator配置:

apiVersion: builtin
kind: HelmChartInflationGenerator
metadata:
  name: crdb
name: cockroachdb
repo: https://charts.cockroachdb.com/
version: 10.0.3
releaseName: crdb
namespace: apps
IncludeCRDs: true

执行kubectl kustomize --enable-helm后,部分资源被渲染为v1beta1版本,但我的Kubernetes集群(Server Version: v1.25.4)仅支持v1版本:

» kubectl kustomize --enable-helm crdb-test | grep -A 5 -B 1 v1beta
---
apiVersion: batch/v1beta1
kind: CronJob
metadata:
  labels:
    app.kubernetes.io/instance: crdb
    app.kubernetes.io/managed-by: Helm
--
---
apiVersion: batch/v1beta1
kind: CronJob
metadata:
  labels:
    app.kubernetes.io/instance: crdb
    app.kubernetes.io/managed-by: Helm
--
---
apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
  labels:
    app.kubernetes.io/instance: crdb
    app.kubernetes.io/managed-by: Helm

本地工具版本:

» kubectl version --short 
Client Version: v1.24.3
Kustomize Version: v4.5.4
Server Version: v1.25.4
» helm version --short
v3.10.3+gd506314

请问这是Kustomize的问题吗?能否在kustomization文件中指定使用的API版本?

解决方案

这不是Kustomize的问题,根源在于你使用的CockroachDB Helm Chart(10.0.3版本)本身还在生成旧的API版本资源。

具体解决办法:

  1. 升级CockroachDB Chart版本
    检查CockroachDB官方Chart仓库,更新到支持batch/v1(CronJob)和policy/v1(PodDisruptionBudget)的新版本。较新的Chart会适配Kubernetes 1.21+的API版本要求(这两个beta版本在1.21被弃用,1.25移除)。

  2. 用Kustomize的patches字段修改API版本
    如果暂时无法升级Chart,可以在kustomization.yaml中添加patches,批量替换旧API版本:

    apiVersion: kustomize.config.k8s.io/v1beta1
    kind: Kustomization
    namespace: apps
    
    generators:
      - cockroachdbChart.yaml
    
    patches:
      - target:
          kind: CronJob
          version: v1beta1
          group: batch
        patch: |-
          - op: replace
            path: /apiVersion
            value: batch/v1
      - target:
          kind: PodDisruptionBudget
          version: v1beta1
          group: policy
        patch: |-
          - op: replace
            path: /apiVersion
            value: policy/v1
    

    这个配置会把所有batch/v1beta1 CronJob替换为batch/v1,policy/v1beta1 PodDisruptionBudget替换为policy/v1。

  3. 通过Helm参数强制生成兼容API版本
    部分Chart支持通过设置Helm Values来切换API版本。查看CockroachDB Chart的values.yaml,是否有类似cronJob.apiVersion或者pdb.apiVersion的配置项,在HelmChartInflationGenerator中添加values:

    apiVersion: builtin
    kind: HelmChartInflationGenerator
    metadata:
      name: crdb
    name: cockroachdb
    repo: https://charts.cockroachdb.com/
    version: 10.0.3
    releaseName: crdb
    namespace: apps
    IncludeCRDs: true
    values: |
      cronJob:
        apiVersion: batch/v1
      pdb:
        apiVersion: policy/v1
    

    注意:这个方法需要Chart本身支持对应的values配置,你需要先确认Chart的values.yaml是否有相关项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 05:50:26