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

如何在Go项目vendor目录安装依赖以运行k8s code-generator脚本

一、generate-groups.sh脚本参数详解

先把命令重新对齐以便对应参数理解:

vendor/k8s.io/code-generator/generate-groups.sh all \
  github.com/programming-kubernetes/cnat/cnat-client-go/pkg/generated \
  github.com/programming-kubernetes/cnat/cnat-client-go/pkg/apis \
  cnat:v1alpha1 \
  --output-base "${GOPATH}/src" \
  --go-header-file "hack/boilerplate.go.txt"

各参数作用:

  • all:指定生成的代码范围,all表示生成全套客户端代码,包含ClientSet、Lister、Informer三类核心组件
  • 第一个路径参数:生成代码的目标根目录,最终各类客户端代码会放在该路径的子目录(比如generated/clientset、generated/listers)
  • 第二个路径参数:自定义CRD API定义文件的根目录,脚本会从这里读取cnat/v1alpha1下的API类型定义
  • cnat:v1alpha1:指定要处理的API组和版本,格式为<组名>:<版本号>,脚本仅处理该组对应版本的API
  • --output-base "${GOPATH}/src":代码输出的基础路径,脚本会把前面的目标根目录拼接到该路径下,最终代码实际位置为${GOPATH}/src/github.com/programming-kubernetes/cnat/cnat-client-go/pkg/generated
  • --go-header-file "hack/boilerplate.go.txt":指定生成代码时自动添加的头部模板文件,通常用于放置版权声明、许可证信息这类通用头部内容
二、Go Modules下生成vendor目录的步骤

你已经用go mod init <module_path>初始化了模块,按以下步骤操作即可:

  1. 对齐依赖版本:执行go get k8s.io/code-generator@<对应版本>,版本要和项目中其他Kubernetes依赖版本保持一致(比如书中案例使用的K8s版本),这会将code-generator添加到go.mod的依赖列表
  2. 生成vendor目录:在项目根目录执行go mod vendor,该命令会自动下载go.mod中声明的所有依赖包,并复制到项目根目录的vendor文件夹
  3. 验证并运行脚本:检查项目根目录下是否出现vendor文件夹且包含k8s.io/code-generator目录,之后即可正常运行目标脚本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 12:40:31