feat: admin
diff --git a/pkg/admin/component.go b/pkg/admin/component.go
index 2617e8b..abc9757 100644
--- a/pkg/admin/component.go
+++ b/pkg/admin/component.go
@@ -26,7 +26,7 @@
 var adminServerLog = core.Log.WithName("admin")
 
 func Setup(rt core_runtime.Runtime) error {
-	adminServer := server.NewAdminServer()
+	adminServer := server.NewAdminServer(*rt.Config().Admin).InitHTTPRouter()
 	if err := rt.Add(adminServer); err != nil {
 		adminServerLog.Error(err, "fail to start the admin server")
 		return err
diff --git a/pkg/admin/model/dubbo.go b/pkg/admin/model/dubbo.go
index a4a9794..24abe29 100644
--- a/pkg/admin/model/dubbo.go
+++ b/pkg/admin/model/dubbo.go
@@ -16,3 +16,15 @@
  */
 
 package model
+
+// Application dubbo 应用
+type Application struct{}
+
+// Workload dubbo 工作负载
+type Workload struct{}
+
+// Instance dubbo 实例
+type Instance struct{}
+
+// Service dubbo 服务
+type Service struct{}
diff --git a/pkg/admin/routing/routes.go b/pkg/admin/routing/routes.go
deleted file mode 100644
index e7a99c1..0000000
--- a/pkg/admin/routing/routes.go
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package routing
diff --git a/pkg/admin/server/server.go b/pkg/admin/server/server.go
index 954e851..a2bd219 100644
--- a/pkg/admin/server/server.go
+++ b/pkg/admin/server/server.go
@@ -17,16 +17,75 @@
 
 package server
 
-type AdminServer struct{}
+import (
+	"context"
+	"github.com/apache/dubbo-kubernetes/pkg/config/admin"
+	"github.com/apache/dubbo-kubernetes/pkg/core/logger"
+	"github.com/gin-gonic/gin"
+	"net/http"
+	"strconv"
+)
 
-func NewAdminServer() *AdminServer {
-	return &AdminServer{}
+type AdminServer struct {
+	Engine   *gin.Engine
+	adminCfg admin.Admin
+}
+
+func NewAdminServer(adminCfg admin.Admin) *AdminServer {
+	return &AdminServer{
+		adminCfg: adminCfg,
+	}
+}
+
+func (a *AdminServer) InitHTTPRouter() *AdminServer {
+	r := gin.Default()
+
+	router := r.Group("/api/v1")
+	router.Group("/")
+
+	a.Engine = r
+	return a
 }
 
 func (a *AdminServer) Start(stop <-chan struct{}) error {
+	errChan := make(chan error)
+
+	var httpServer *http.Server
+	httpServer = a.startHttpServer(errChan)
+	select {
+	case <-stop:
+		logger.Sugar().Info("stopping bufman")
+		if httpServer != nil {
+			return httpServer.Shutdown(context.Background())
+		}
+	case err := <-errChan:
+		return err
+	}
 	return nil
 }
 
+func (a *AdminServer) startHttpServer(errChan chan error) *http.Server {
+	server := &http.Server{
+		Addr:    ":" + strconv.Itoa(a.adminCfg.Port),
+		Handler: a.Engine,
+	}
+
+	go func() {
+		err := server.ListenAndServe()
+		if err != nil {
+			switch err {
+			case http.ErrServerClosed:
+				logger.Sugar().Info("shutting down bufman HTTP Server")
+			default:
+				logger.Sugar().Error(err, "could not start bufman HTTP Server")
+				errChan <- err
+			}
+		}
+	}()
+
+	return server
+}
+
 func (a *AdminServer) NeedLeaderElection() bool {
 	return false
 }
diff --git a/pkg/core/bootstrap/bootstrap.go b/pkg/core/bootstrap/bootstrap.go
index 6e8ce9c..9ead6a1 100644
--- a/pkg/core/bootstrap/bootstrap.go
+++ b/pkg/core/bootstrap/bootstrap.go
@@ -19,8 +19,10 @@
 
 import (
 	"context"
+	k8s_extensions "github.com/apache/dubbo-kubernetes/pkg/plugins/extensions/k8s"
 	"net/http"
 	"net/url"
+	kube_ctrl "sigs.k8s.io/controller-runtime"
 	"strings"
 	"sync"
 )
@@ -378,41 +380,64 @@
 	defaultManager := core_manager.NewResourceManager(builder.ResourceStore())
 	customizableManager := core_manager.NewCustomizableResourceManager(defaultManager, nil)
 
+	var (
+		manager kube_ctrl.Manager
+		ok      bool
+	)
+	deployMode := builder.GetDeployMode()
+	if deployMode != config_core.UniversalMode {
+		manager, ok = k8s_extensions.FromManagerContext(builder.Extensions())
+		if !ok {
+			return errors.New("get kube manager err")
+		}
+	}
 	customizableManager.Customize(
 		mesh.DataplaneType,
 		dataplane_managers.NewDataplaneManager(
 			builder.ResourceStore(),
 			cfg.Multizone.Zone.Name,
+			manager,
+			deployMode,
 		))
 
 	customizableManager.Customize(
 		mesh.MappingType,
 		mapping_managers.NewMappingManager(
 			builder.ResourceStore(),
+			manager,
+			deployMode,
 		))
 
 	customizableManager.Customize(
 		mesh.MetaDataType,
 		metadata_managers.NewMetadataManager(
 			builder.ResourceStore(),
+			manager,
+			deployMode,
 		))
 
 	customizableManager.Customize(
 		mesh.ConditionRouteType,
 		condition_route.NewConditionRouteManager(
 			builder.ResourceStore(),
+			manager,
+			deployMode,
 		))
 
 	customizableManager.Customize(
 		mesh.TagRouteType,
 		tag_route.NewTagRouteManager(
 			builder.ResourceStore(),
+			manager,
+			deployMode,
 		))
 
 	customizableManager.Customize(
 		mesh.DynamicConfigType,
 		dynamic_config.NewDynamicConfigManager(
 			builder.ResourceStore(),
+			manager,
+			deployMode,
 		))
 
 	customizableManager.Customize(
@@ -424,6 +449,8 @@
 			builder.ResourceValidators().Mesh,
 			builder.Extensions(),
 			cfg,
+			manager,
+			deployMode,
 		),
 	)
 
diff --git a/pkg/core/managers/apis/condition_route/condition_route_manager.go b/pkg/core/managers/apis/condition_route/condition_route_manager.go
index a176457..9b13095 100644
--- a/pkg/core/managers/apis/condition_route/condition_route_manager.go
+++ b/pkg/core/managers/apis/condition_route/condition_route_manager.go
@@ -18,18 +18,24 @@
 package condition_route
 
 import (
+	config_core "github.com/apache/dubbo-kubernetes/pkg/config/core"
 	core_manager "github.com/apache/dubbo-kubernetes/pkg/core/resources/manager"
 	core_store "github.com/apache/dubbo-kubernetes/pkg/core/resources/store"
+	kube_ctrl "sigs.k8s.io/controller-runtime"
 )
 
 type conditionRouteManager struct {
 	core_manager.ResourceManager
-	store core_store.ResourceStore
+	store      core_store.ResourceStore
+	manager    kube_ctrl.Manager
+	deployMode config_core.DeployMode
 }
 
-func NewConditionRouteManager(store core_store.ResourceStore) core_manager.ResourceManager {
+func NewConditionRouteManager(store core_store.ResourceStore, manager kube_ctrl.Manager, mode config_core.DeployMode) core_manager.ResourceManager {
 	return &conditionRouteManager{
 		ResourceManager: core_manager.NewResourceManager(store),
 		store:           store,
+		manager:         manager,
+		deployMode:      mode,
 	}
 }
diff --git a/pkg/core/managers/apis/dataplane/dataplane_manager.go b/pkg/core/managers/apis/dataplane/dataplane_manager.go
index 8027dfc..7ec8cba 100644
--- a/pkg/core/managers/apis/dataplane/dataplane_manager.go
+++ b/pkg/core/managers/apis/dataplane/dataplane_manager.go
@@ -19,6 +19,8 @@
 
 import (
 	"context"
+	config_core "github.com/apache/dubbo-kubernetes/pkg/config/core"
+	kube_ctrl "sigs.k8s.io/controller-runtime"
 )
 
 import (
@@ -37,15 +39,19 @@
 
 type dataplaneManager struct {
 	core_manager.ResourceManager
-	store core_store.ResourceStore
-	zone  string
+	store      core_store.ResourceStore
+	zone       string
+	manager    kube_ctrl.Manager
+	deployMode config_core.DeployMode
 }
 
-func NewDataplaneManager(store core_store.ResourceStore, zone string) core_manager.ResourceManager {
+func NewDataplaneManager(store core_store.ResourceStore, zone string, manager kube_ctrl.Manager, mode config_core.DeployMode) core_manager.ResourceManager {
 	return &dataplaneManager{
 		ResourceManager: core_manager.NewResourceManager(store),
 		store:           store,
 		zone:            zone,
+		manager:         manager,
+		deployMode:      mode,
 	}
 }
 
@@ -72,6 +78,9 @@
 	}
 	m.setInboundsClusterTag(dataplane)
 	m.setHealth(dataplane)
+	if m.deployMode != config_core.UniversalMode {
+		m.setExtensions(dataplane)
+	}
 	return nil
 }
 
@@ -86,6 +95,9 @@
 	for _, item := range dataplanes.Items {
 		m.setHealth(item)
 		m.setInboundsClusterTag(item)
+		if m.deployMode != config_core.UniversalMode {
+			m.setExtensions(item)
+		}
 	}
 	return nil
 }
@@ -130,3 +142,5 @@
 		}
 	}
 }
+
+func (m *dataplaneManager) setExtensions(dp *core_mesh.DataplaneResource) {}
diff --git a/pkg/core/managers/apis/dynamic_config/dynamic_config.go b/pkg/core/managers/apis/dynamic_config/dynamic_config.go
index 9e15efb..2f4e71d 100644
--- a/pkg/core/managers/apis/dynamic_config/dynamic_config.go
+++ b/pkg/core/managers/apis/dynamic_config/dynamic_config.go
@@ -18,18 +18,24 @@
 package dynamic_config
 
 import (
+	config_core "github.com/apache/dubbo-kubernetes/pkg/config/core"
 	core_manager "github.com/apache/dubbo-kubernetes/pkg/core/resources/manager"
 	core_store "github.com/apache/dubbo-kubernetes/pkg/core/resources/store"
+	kube_ctrl "sigs.k8s.io/controller-runtime"
 )
 
 type dynamicConfigManager struct {
 	core_manager.ResourceManager
-	store core_store.ResourceStore
+	store      core_store.ResourceStore
+	manager    kube_ctrl.Manager
+	deployMode config_core.DeployMode
 }
 
-func NewDynamicConfigManager(store core_store.ResourceStore) core_manager.ResourceManager {
+func NewDynamicConfigManager(store core_store.ResourceStore, manager kube_ctrl.Manager, mode config_core.DeployMode) core_manager.ResourceManager {
 	return &dynamicConfigManager{
 		ResourceManager: core_manager.NewResourceManager(store),
 		store:           store,
+		manager:         manager,
+		deployMode:      mode,
 	}
 }
diff --git a/pkg/core/managers/apis/mapping/mapping_manager.go b/pkg/core/managers/apis/mapping/mapping_manager.go
index 83d7df2..96b5d1c 100644
--- a/pkg/core/managers/apis/mapping/mapping_manager.go
+++ b/pkg/core/managers/apis/mapping/mapping_manager.go
@@ -19,6 +19,8 @@
 
 import (
 	"context"
+	config_core "github.com/apache/dubbo-kubernetes/pkg/config/core"
+	kube_ctrl "sigs.k8s.io/controller-runtime"
 )
 
 import (
@@ -30,13 +32,17 @@
 
 type mappingManager struct {
 	core_manager.ResourceManager
-	store core_store.ResourceStore
+	store      core_store.ResourceStore
+	manager    kube_ctrl.Manager
+	deployMode config_core.DeployMode
 }
 
-func NewMappingManager(store core_store.ResourceStore) core_manager.ResourceManager {
+func NewMappingManager(store core_store.ResourceStore, manager kube_ctrl.Manager, mode config_core.DeployMode) core_manager.ResourceManager {
 	return &mappingManager{
 		ResourceManager: core_manager.NewResourceManager(store),
 		store:           store,
+		manager:         manager,
+		deployMode:      mode,
 	}
 }
 
diff --git a/pkg/core/managers/apis/mesh/mesh_manager.go b/pkg/core/managers/apis/mesh/mesh_manager.go
index 9960dbb..a90c029 100644
--- a/pkg/core/managers/apis/mesh/mesh_manager.go
+++ b/pkg/core/managers/apis/mesh/mesh_manager.go
@@ -19,6 +19,8 @@
 
 import (
 	"context"
+	config_core "github.com/apache/dubbo-kubernetes/pkg/config/core"
+	kube_ctrl "sigs.k8s.io/controller-runtime"
 	"time"
 )
 
@@ -43,6 +45,8 @@
 	validator MeshValidator,
 	extensions context.Context,
 	config dubbo_cp.Config,
+	manager kube_ctrl.Manager,
+	mode config_core.DeployMode,
 ) core_manager.ResourceManager {
 	meshManager := &meshManager{
 		store:         store,
@@ -51,6 +55,8 @@
 		meshValidator: validator,
 		unsafeDelete:  config.Store.UnsafeDelete,
 		extensions:    extensions,
+		manager:       manager,
+		deployMode:    mode,
 	}
 	if config.Store.Type == config_store.KubernetesStore {
 		meshManager.k8sStore = true
@@ -68,6 +74,8 @@
 	extensions      context.Context
 	k8sStore        bool
 	systemNamespace string
+	manager         kube_ctrl.Manager
+	deployMode      config_core.DeployMode
 }
 
 func (m *meshManager) Get(ctx context.Context, resource core_model.Resource, fs ...core_store.GetOptionsFunc) error {
diff --git a/pkg/core/managers/apis/metadata/metadata_manager.go b/pkg/core/managers/apis/metadata/metadata_manager.go
index 8e0a48d..c3df46c 100644
--- a/pkg/core/managers/apis/metadata/metadata_manager.go
+++ b/pkg/core/managers/apis/metadata/metadata_manager.go
@@ -19,6 +19,8 @@
 
 import (
 	"context"
+	config_core "github.com/apache/dubbo-kubernetes/pkg/config/core"
+	kube_ctrl "sigs.k8s.io/controller-runtime"
 )
 
 import (
@@ -37,13 +39,17 @@
 
 type metadataManager struct {
 	core_manager.ResourceManager
-	store core_store.ResourceStore
+	store      core_store.ResourceStore
+	manager    kube_ctrl.Manager
+	deployMode config_core.DeployMode
 }
 
-func NewMetadataManager(store core_store.ResourceStore) core_manager.ResourceManager {
+func NewMetadataManager(store core_store.ResourceStore, manage kube_ctrl.Manager, mode config_core.DeployMode) core_manager.ResourceManager {
 	return &metadataManager{
 		ResourceManager: core_manager.NewResourceManager(store),
 		store:           store,
+		deployMode:      mode,
+		manager:         manage,
 	}
 }
 
diff --git a/pkg/core/managers/apis/tag_route/tag_route.go b/pkg/core/managers/apis/tag_route/tag_route.go
index 51229d6..b30ed47 100644
--- a/pkg/core/managers/apis/tag_route/tag_route.go
+++ b/pkg/core/managers/apis/tag_route/tag_route.go
@@ -18,18 +18,24 @@
 package tag_route
 
 import (
+	config_core "github.com/apache/dubbo-kubernetes/pkg/config/core"
 	core_manager "github.com/apache/dubbo-kubernetes/pkg/core/resources/manager"
 	core_store "github.com/apache/dubbo-kubernetes/pkg/core/resources/store"
+	kube_ctrl "sigs.k8s.io/controller-runtime"
 )
 
 type tagRouteManager struct {
 	core_manager.ResourceManager
-	store core_store.ResourceStore
+	store      core_store.ResourceStore
+	manager    kube_ctrl.Manager
+	deployMode config_core.DeployMode
 }
 
-func NewTagRouteManager(store core_store.ResourceStore) core_manager.ResourceManager {
+func NewTagRouteManager(store core_store.ResourceStore, manager kube_ctrl.Manager, mode config_core.DeployMode) core_manager.ResourceManager {
 	return &tagRouteManager{
 		ResourceManager: core_manager.NewResourceManager(store),
 		store:           store,
+		manager:         manager,
+		deployMode:      mode,
 	}
 }