Skip to main content
Version: Next

Integrate EventMesh with K8S

1. Local Deployment

1.1 Dependencies

docker
golang (version 1.19)
kubernetes (kubectl)
There is some compatibility between kubernetes an docker, please check the version compatibility between them and download the corresponding version to ensure that they work properly together.

1.2 Start Operator

Go to the eventmesh-operator directory.

$ cd eventmesh-operator

Install CRD into the specified k8s cluster.

$ make install

# Uninstall CRDs from the K8s cluster
$ make uninstall

If you get error eventmesh-operator/bin/controller-gen: No such file or directory, Run the following command:

# download controller-gen locally if necessary.
$ make controller-gen
# download kustomize locally if necessary.
$ make kustomize

View crds information:

# run the following command to view crds information:
$ kubectl get crd | grep eventmesh-operator.eventmesh
NAME CREATED AT
connectors.eventmesh-operator.eventmesh 2023-11-28T01:35:21Z
runtimes.eventmesh-operator.eventmesh 2023-11-28T01:35:21Z

Run EventMesh-Operator.

# run controller
$ make run

1.3 Create and delete CRs:

Custom resource objects are located at: /config/samples, When deleting CR, simply replace create with delete.

You can also use the command kubectl create -f for a step-by-step deployment.

# Create CR for eventmesh-runtime、eventmesh-connector-rocketmq,Creating a clusterIP lets eventmesh-runtime communicate with other components.
$ make create

#success:
configmap/runtime-config created
runtime.eventmesh-operator.eventmesh/eventmesh-runtime created
service/runtime-cluster-service created
configmap/connector-rocketmq-config created
connectors.eventmesh-operator.eventmesh/connector-rocketmq created

# View the created Service.
$ kubectl get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
runtime-cluster-service ClusterIP 10.109.209.72 <none> 10000/TCP 17s

# After the pods are successfully started, run the following command to view pods.
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
connector-rocketmq-0 1/1 Running 0 12m
eventmesh-runtime-0-a-0 1/1 Running 0 12m

# Delete CR
$ make delete

2. Deploy EventMesh Runtime in Kubernetes

2.1 Deploy EventMesh-Operator

Deploy EventMesh-Operator using the following command (to delete a deployment, simply replace deploy with undeploy):

$ cd eventmesh-operator && make deploy

You can also deploy EventMesh-Operator using the following command:

# install CRDs
$ make install

# ServiceAccount
kubectl create -f config/rbac/service_account.yaml
# ClusterRole
kubectl create -f config/rbac/role.yaml
# ClusterRoleBinding
kubectl create -f config/rbac/role_binding.yaml
# eventmesh_operator Deployment
kubectl create -f config/samples/eventmesh_operator.yaml

Use the commands kubectl get pods, kubectl get crd | grep eventmesh-operator.eventmesh to view EventMesh-Operator deployment status and CRD information.

$ kubectl get pods
NAME READY STATUS RESTARTS AGE
eventmesh-operator-59c59f4f7b-nmmlm 1/1 Running 0 20s

$ kubectl get crd | grep eventmesh-operator.eventmesh
connectors.eventmesh-operator.eventmesh 2024-01-10T02:40:27Z
runtimes.eventmesh-operator.eventmesh 2024-01-10T02:40:27Z

2.2 Deploy EventMesh Runtime

Deploy runtime, connector-rocketmq with the following command:

$ make create

Custom resource objects are located in: /config/samples or can be deployed separately using the kubectl create -f command:

# runtime
kubectl create -f config/samples/eventmesh_v1_runtime.yaml
# runtime service
kubectl create -f config/samples/eventmesh_v1_runtime_cluster.yaml
# connector-rocketmq
kubectl create -f config/samples/eventmesh_v1_connectors_rocketmq.yaml

Use the command kubectl get pods to see if the deployment is successful.

NAME                                  READY   STATUS    RESTARTS   AGE
connector-rocketmq-0 1/1 Running 0 9s
eventmesh-operator-59c59f4f7b-nmmlm 1/1 Running 0 3m12s
eventmesh-runtime-0-a-0 1/1 Running 0 15s