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
ProviderConfig
type that only points to a credentialsSecret
. - A
MyType
resource type that serves as an example managed resource. - A managed resource controller that reconciles
MyType
objects and simply prints their configuration in itsObserve
method.
- Use this repository as a dummymessageservice to create a new one.
- Run
make submodules
to 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 reviewable
to run code generation, linters, and tests. Ignore linters and tests hehe - Run
make build
to 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>