云原生服务中心 OSC-创建API和Controller
创建API和Controller
根据以上设计的CR,在项目工程中创建对应的CRD类型:
$ kubebuilder create api --group osctest --version v1 --kind HwfkaCreate Resource [y/n]yCreate Controller [y/n]yWriting kustomize manifests for you to edit...Writing scaffold for you to edit...api/v1/hwfka_types.gocontrollers/hwfka_controller.goUpdate dependencies:go mod tidyRunning make:make generatego: creating new go.mod: module tmpDownloading sigs.k8s.io/controller-tools/cmd/controller-gen@v0.7.0go get: added sigs.k8s.io/controller-tools v0.7.0/mnt/d/repository/Go/GOPATH/src/hwfka-operator/bin/controller-gen object:headerFile="hack/boilerplate.go.txt" paths="./..."Next: implement your new API and generate the manifests (e.g. CRDs,CRs) with:make manifests
通过kubebuilder create api命令,可以发现在重复下载controller-gen的二进制文件,包括后续使用Makefile去编译operator的二进制文件及打包镜像时,都可能会重复下载使用controller-gen二进制文件,建议提前安装controller-gen二进制,并修改Makefile中有关这个命令为使用系统命令,而非每次通过go get下载并编译后使用。
该命令主要执行以下动作:
- 在PROJECT文件中增加API资源声明。
domain: huawei.comlayout:- go.kubebuilder.io/v3projectName: hwfka-operatorrepo: hwfka-operatorresources:- api: crdVersion: v1 namespaced: true controller: true domain: huawei.com group: osctest kind: Hwfka path: hwfka-operator/api/v1 version: v1version: "3"
- 新增CRD及CR的描述文件。
hwfka-operator└── config ├── crd │ ├── kustomization.yaml │ ├── kustomizeconfig.yaml │ └── patches │ ├── cainjection_in_hwfkas.yaml │ └── webhook_in_hwfkas.yaml ├── rbac # 增加文件 │ ├── hwfka_editor_role.yaml │ └── hwfka_viewer_role.yaml └── samples └── osctest_v1_hwfka.yaml
- 新增api目录,包含CRD的类型定义。
hwfka-operator└── api └── v1 ├── groupversion_info.go ├── hwfka_types.go └── zz_generated.deepcopy.go
- 新增controllers目录,包含控制器的业务逻辑。
hwfka-operator└── controllers ├── hwfka_controller.go └── suite_test.go
- 在main.go的Manager启动时,创建Controller。
if err = (&controllers.HwfkaReconciler{ Client: mgr.GetClient(), Scheme: mgr.GetScheme(),}).SetupWithManager(mgr); err != nil { setupLog.Error(err, "unable to create controller", "controller", "Hwfka") os.Exit(1)}
- API网关权限管理_授权使用API网关_APIG权限策略和授权项
- 华为云CodeArts API_API质量_API规范_API审核
- 分布式云原生服务中心_华为云分布式云原生_华为云UCS服务中心
- 华为云CodeArts API_什么是API_APIFirst_API设计
- 调用API_API调用流程_API网关APIG-华为云
- 华为云CodeArts API_APIFirst_API设计_API设计规范_API全生命周期
- 华为云CodeArts API_API测试_API托管-华为云
- 开放API_API开放流程_调用API-华为云
- 华为云CodeArts API_API调试
- 分布式云原生分发应用实例_华为云分布式云原生_华为云UCS分发应用实例