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()))
+}