GitHub - crossplane/provider-template: A template for building @crossplane providers. (original) (raw)
provider-template is a minimal Crossplane Provider that is meant to be used as a template for implementing new Providers. It comes with the following features that are meant to be refactored:
- A
ProviderConfigtype that only points to a credentialsSecret. - A
MyTyperesource type that serves as an example managed resource. - A managed resource controller that reconciles
MyTypeobjects and simply prints their configuration in itsObservemethod.
Developing
- Use this repository as a template to create a new one.
- Run
make submodulesto initialize the "build" Make submodule we use for CI/CD. - Rename the provider by running the following command:
export provider_name=MyProvider # Camel case, e.g. GitHub make provider.prepare provider=${provider_name}
- Add your new type by running the following command:
export group=sample # lower case e.g. core, cache, database, storage, etc. export type=MyType # Camel casee.g. Bucket, Database, CacheCluster, etc. make provider.addtype provider=${provider_name} group=${group} kind=${type}
- Replace the sample group with your new group in apis/{provider}.go
- Replace the mytype type with your new type in internal/controller/{provider}.go
- Replace the default controller and ProviderConfig implementations with your own
- Register your new type into
SetupGatedfunction ininternal/controller/register.go - Run
make reviewableto run code generation, linters, and tests. - Run
make buildto build the provider.
Refer to Crossplane's CONTRIBUTING.md file for more information on how the Crossplane community prefers to work. The Provider Developmentguide may also be of use.