Add new API
This article is a checklist. When you add an API, you need to check whether the following items are updated simultaneously.
After modifying any of the following check items, or waiting for all modification items to be modified, you can execute the make update
command to automatically generate the files, then submit these files to the Karmada repo.
Update codegen
Codegen contains many automatic code generation tools, including deepcopy-gen
, register-gen
, conversion-gen
, client-gen
, lister-gen
, informer-gen
, openapi-gen
. You can set the above code generation configuration for the newly added API in the file hack/update-codegen.sh
.
Update crdgen
To generate CRD Yaml files for the added APIs using the controller-gen, set the configuration in the file hack/update-crdgen.sh
.
Update import aliases
To unify the format when importing APIs package name, Karmada defines the import aliases of different API packages in file .import-aliases
. You can check whether you need to modify it.
CRD install
To ensure that the new API can be installed correctly, you can modify the configuration of the following files:
- charts/karmada/_crds/kustomization.yaml
Helm install
If the new API is located in a new group, you can modify the following files and add corresponding configurations for the new API to ensure that helm is installed correctly:
- charts/karmada/templates/post-delete-job.yaml
- charts/karmada/templates/post-install-job.yaml
- charts/karmada/templates/pre-install-job.yaml
Update Karmada schema
To correctly discover the new API during the client call, you can check whether you need to modify the configuration of the following files:
- pkg/util/gclient/gclient.go
Update swagger json
To include the new API in Karmada’s API, you need to modify the hack/tools/swagger/generateswagger.go
file so that the new API can be generated in the api/openapi-spec/swagger.json
file.
Update SkippedResourceConfig
In the process of resource propagation, Karmada will filter out Karmada’s own CRD resources. The code logic is here:
You can check if the code needs to be updated.