provider-dummymessageservice is a minimal Crossplane Provider
that is meant to be used as a dummymessageservice 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.
- Use this repository as a dummymessageservice 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
- Run
make reviewableto run code generation, linters, and tests. Ignore linters and tests hehe - Run
make buildto build the provider. Notice thexpkg saved to ...line - Run
make push-xpkg UPBOUND_USER=dummy XPKG_VER=v0.0.1 XPKG_PATH=/path/to/xpkg
Refer to Crossplane's CONTRIBUTING.md file for more information on how the Crossplane community prefers to work. The Provider Development guide may also be of use.
make run-example
Crossplane creates a ReplicaSet for the provider with imagePullPolicy: IfNotPresent so overwriting an already pulled version of image won't update it.
Workaround:
- Uninstall the provider
kubectl delete -f examples/provider/provider.yaml - Override finalizers of CRs managed by it
make override-finalizers - Find the node on which the pod is running:
kubectl get pod <pod-name> -n <namespace> -o wide ssh <node_ip>- Delete the image, cri-o example:
sudo crictl images; sudo crictl rmi <image_id>