Integrate EventMesh with K8S

1. Dependencies

  1. docker
  2. golang (version 1.19)
  3. kubernetes (kubectl)
  4. 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.

2. Start

Go to the eventmesh-operator directory.

  1. cd eventmesh-operator

Install CRD into the specified k8s cluster.

  1. make install
  2. # Uninstall CRDs from the K8s cluster
  3. make uninstall

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

  1. # download controller-gen locally if necessary.
  2. make controller-gen
  3. # download kustomize locally if necessary.
  4. make kustomize

View crds information:

  1. # run the following command to view crds information:
  2. kubectl get crds
  3. NAME CREATED AT
  4. connectors.eventmesh-operator.eventmesh 2023-11-28T01:35:21Z
  5. runtimes.eventmesh-operator.eventmesh 2023-11-28T01:35:21Z

Create and delete CRs:

Custom resource objects are located at: /config/samples

When deleting CR, simply replace create with delete.

  1. # Create CR for eventmesh-runtime、eventmesh-connector-rocketmq,Creating a clusterIP lets eventmesh-runtime communicate with other components.
  2. make create
  3. #success:
  4. configmap/runtime-config created
  5. runtime.eventmesh-operator.eventmesh/eventmesh-runtime created
  6. service/runtime-cluster-service created
  7. configmap/connector-rocketmq-config created
  8. connectors.eventmesh-operator.eventmesh/connector-rocketmq created
  9. # View the created Service.
  10. kubectl get service
  11. NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
  12. runtime-cluster-service ClusterIP 10.109.209.72 <none> 10000/TCP 17s
  13. # Delete CR
  14. make delete

Run eventmesh-operator create pods.

  1. # run controller
  2. make run
  3. # log
  4. go fmt ./...
  5. go vet ./...
  6. go run ./main.go
  7. INFO controller-runtime.metrics Metrics server is starting to listen {"addr": ":9020"}
  8. INFO setup starting manager
  9. INFO Starting server {"kind": "health probe", "addr": "[::]:8081"}
  10. INFO Starting server {"path": "/metrics", "kind": "metrics", "addr": "[::]:9020"}
  11. INFO runtime Creating a new eventMeshRuntime StatefulSet. {"StatefulSet.Namespace": "default", "StatefulSet.Name": "eventmesh-runtime-0-a"}
  12. INFO connector Creating a new Connector StatefulSet. {"StatefulSet.Namespace": "default", "StatefulSet.Name": "connector-rocketmq"}
  13. INFO runtime Successful reconciliation!
  14. INFO connector Successful reconciliation!
  15. # After the pods are successfully started, run the following command to view pods.
  16. kubectl get pods
  17. NAME READY STATUS RESTARTS AGE
  18. connector-rocketmq-0 1/1 Running 0 12m
  19. eventmesh-runtime-0-a-0 1/1 Running 0 12m