add controller
diff --git a/rocketmq-eventsource/cmd/controller/main.go b/rocketmq-eventsource/cmd/controller/main.go
index e69de29..2c85a16 100644
--- a/rocketmq-eventsource/cmd/controller/main.go
+++ b/rocketmq-eventsource/cmd/controller/main.go
@@ -0,0 +1,56 @@
+
+package main
+
+import (
+ "log"
+ "github.com/apache/rocketmq-externals/rocketmq-eventsource/pkg/apis"
+ controller "github.com/apache/rocketmq-externals/rocketmq-eventsource/pkg/reconciler"
+ "go.uber.org/zap"
+ "go.uber.org/zap/zapcore"
+ "knative.dev/pkg/logging/logkey"
+ "sigs.k8s.io/controller-runtime/pkg/client/config"
+ "sigs.k8s.io/controller-runtime/pkg/manager"
+ "sigs.k8s.io/controller-runtime/pkg/runtime/signals"
+)
+
+func main() {
+ logCfg := zap.NewProductionConfig()
+ logCfg.EncoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder
+ logger, err := logCfg.Build()
+ if err != nil {
+ log.Fatal(err)
+ }
+ logger = logger.With(zap.String(logkey.ControllerType, "alitablestore-controller"))
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ cfg, err := config.GetConfig()
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ // Create a new Cmd to provide shared dependencies and start components
+ mgr, err := manager.New(cfg, manager.Options{})
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ log.Printf("Registering Components.")
+
+ // Setup Scheme for all resources
+ if err := apis.AddToScheme(mgr.GetScheme()); err != nil {
+ log.Fatal(err)
+ }
+
+ log.Printf("Setting up Controller.")
+ // Setup MNS Controller
+ if err := controller.Add(mgr, logger.Sugar()); err != nil {
+ log.Fatal(err)
+ }
+
+ log.Printf("Starting alitablestore controller.")
+
+ // Start the Cmd
+ log.Fatal(mgr.Start(signals.SetupSignalHandler()))
+}