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

如何调整Crossplane Provider资源生成的命名格式?

解决Upjet代码生成的资源命名拆分问题

用config.yaml强制指定资源命名

Upjet的代码生成逻辑靠资源配置文件控制命名规则,你得在对应Terraform资源的配置目录(一般是config/<你的资源组>/)里新建或修改config.yaml,通过name字段把资源名锁死成完整的loadbalancer:

比如针对provider_load_balancer,配置要这么写:

resources:
  - name: "loadbalancer"
    terraform_name: "provider_load_balancer"
    # 这里加上你原本需要的其他配置,比如schema路径之类的

这个name字段直接管控生成的CRD、目录结构还有deepcopy方法的命名,不会再把load_balancer拆成两个独立词组。

修复deepcopy方法的命名问题

如果改完上面的配置,deepcopy方法还是不对,就去config/根目录下的generator.yaml里检查命名策略:

generator:
  naming_strategy:
    kind: "exact" # 用这个策略会严格按照你指定的name生成,不会自动拆分词组

同时要确认资源配置里的kind字段设成LoadBalancer,这样生成的deepcopy方法就是DeepCopyLoadBalancer,不会只生成DeepCopyBalancer。

清缓存重新生成

改完配置别直接跑make generate,先清掉之前生成的旧文件:

make clean
make generate

不然旧文件的残留会干扰新规则生效。

排查全局命名规则冲突

要是还不行,就看看config/naming.yaml里有没有全局的命名转换规则把单个资源的配置覆盖了。有的话,要么调整全局规则,要么给这个资源加个例外:

exceptions:
  - terraform_name: "provider_load_balancer"
    name: "loadbalancer"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 03:45:59