用途:在把已有资源迁移到 direct 控制器方案时,指导创建初始 KRM 类型(_types.go)与生成脚本(generate.sh),并给出必须遵守的标准。
主要能力与流程:
- 配置 generate.sh:在 apis/<service>/v1alpha1/generate.sh 中使用带版本的 proto 源路径,从 apis/git.versions 取固定 SHA 或指定覆盖值,调用 generate-proto.sh 与 generate-types,指定 --service、--api-version、--resource、--proto-source-path。
- 类型文件标准:版权须为 // Copyright 2026 Google LLC;类型定义须包含三个 CRD 标签(managed-by-kcc=true、system=true、stability-level=alpha);Spec 与 ObservedState 结构体须带 +kcc:proto 标签;status.observedGeneration 须为 *int64;引用结构须复用 apis/refs/ 中已有类型(如 ProjectRef 从 github.com/GoogleCloudPlatform/k8s-config-connector/apis/refs/v1beta1 导入),不得本地重复定义。
- 严格模式兼容:初始阶段 Go 类型须与既有 CRD 定义严格兼容,暂不添加 externalRef 或 observedState 等新字段,并用 dev/tasks/diff-crds 验证。
- 模糊测试:为 mapper 创建 fuzzer,验证 FromProto 与 ToProto 往返转换无损正确,细节参见 kcc-direct-controller-implementer 技能。
- 注册:在 apis/<service>/v1alpha1/register.go 注册新 Kind,运行 dev/tasks/generate-crds 并确认 YAML 出现在 config/crds/resources/。
适用场景:KCC 中从 Terraform/DCL 迁移到 direct 控制器的资源类型实现。
限制:资料未提供具体服务示例、完整代码、收费或平台信息;命令与标签须保持原样。