Eventing Manager is a standard Kubernetes operator that observes the state of Eventing resources and reconciles their state according to the desired state. It uses Controllers, which provide a reconcile function responsible for synchronizing resources until the desired state is reached in the cluster.
This project is scaffolded using Kubebuilder.
You need a Kubernetes cluster to run against. You can use k3d to get a local cluster for testing, or run against a remote cluster.
Note
Your controller automatically uses the current context in your kubeconfig file, that is, whatever cluster kubectl cluster-info
shows.
-
To install the latest version of the Eventing Manager in your cluster, run:
kubectl apply -f https://github.com/kyma-project/eventing-manager/releases/latest/download/eventing-manager.yaml
-
To install the latest version of the default Eventing custom resource (CR) in your cluster, run:
kubectl apply -f https://github.com/kyma-project/eventing-manager/releases/latest/download/eventing-default-cr.yaml
-
Install the CRDs into the cluster:
make install
-
Run Eventing Manager. It runs in the foreground, so if you want to leave it running, switch to a new terminal.
make run
Note
You can also run this in one step with the command: make install run
.
Run the unit and integration tests:
make generate-and-test
-
Fix common lint issues:
make imports make fmt make lint
If you are editing the API definitions, generate the manifests such as CRs or CRDs:
make manifests
Note
Run make --help
for more information on all potential make
targets.
For more information, see the Kubebuilder documentation.
Build and push your image to the location specified by IMG
:
make docker-build docker-push IMG=<container-registry>/eventing-manager:<tag> # If using docker, <container-registry> is your username.
NOTE: For MacBook M1 devices, run:
make docker-buildx IMG=<container-registry>/eventing-manager:<tag>
You need a Kubernetes cluster to run against. You can use k3d to get a local cluster for testing, or run against a remote cluster.
Note
Your controller automatically uses the current context in your kubeconfig file, that is, whatever cluster kubectl cluster-info
shows.
-
Download Go packages:
go mod vendor && go mod tidy
-
Install the CRDs to the cluster:
make install
-
Build and push your image to the location specified by
IMG
:make docker-build docker-push IMG=<container-registry>/eventing-manager:<tag>
-
Deploy the
eventing-manager
controller to the cluster:make deploy IMG=<container-registry>/eventing-manager:<tag>
-
[Optional] Install
Eventing
Custom Resource:kubectl apply -f config/samples/default.yaml
-
For EventMesh backend, if the Kyma Kubernetes cluster is managed by Gardener, then the Eventing Manager reads the cluster public domain from the ConfigMap kube-system/shoot-info. Otherwise, set the spec.backend.config.domain to the cluster public domain in the
eventing
custom resource; for example:spec: backend: type: "EventMesh" config: domain: "example.domain.com" eventMeshSecret: "kyma-system/eventing-backend" eventTypePrefix: "sap.kyma.custom"
Undeploy Eventing Manager from the cluster:
make undeploy
To delete the CRDs from the cluster:
make uninstall
See CONTRIBUTING.md
See the License file