Merge pull request #260 from sjmshsh/feat_gc

Fix memory leak
diff --git a/api/mesh/v1alpha1/dataplane.pb.go b/api/mesh/v1alpha1/dataplane.pb.go
index ac772cc..65febd5 100644
--- a/api/mesh/v1alpha1/dataplane.pb.go
+++ b/api/mesh/v1alpha1/dataplane.pb.go
@@ -809,7 +809,7 @@
 	0x70, 0x68, 0x61, 0x31, 0x2f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e,
 	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65,
 	0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22,
-	0x91, 0x11, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x12, 0x49, 0x0a,
+	0x86, 0x11, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x12, 0x49, 0x0a,
 	0x0a, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28,
 	0x0b, 0x32, 0x29, 0x2e, 0x64, 0x75, 0x62, 0x62, 0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x2e, 0x76,
 	0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e,
@@ -938,19 +938,18 @@
 	0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
 	0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
 	0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a,
-	0x81, 0x01, 0xaa, 0x8c, 0x89, 0xa6, 0x01, 0x13, 0x0a, 0x11, 0x44, 0x61, 0x74, 0x61, 0x70, 0x6c,
-	0x61, 0x6e, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0xaa, 0x8c, 0x89, 0xa6, 0x01,
-	0x0b, 0x12, 0x09, 0x44, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0xaa, 0x8c, 0x89, 0xa6,
-	0x01, 0x06, 0x22, 0x04, 0x6d, 0x65, 0x73, 0x68, 0xaa, 0x8c, 0x89, 0xa6, 0x01, 0x04, 0x52, 0x02,
-	0x10, 0x01, 0xaa, 0x8c, 0x89, 0xa6, 0x01, 0x04, 0x52, 0x02, 0x08, 0x01, 0xaa, 0x8c, 0x89, 0xa6,
-	0x01, 0x0d, 0x3a, 0x0b, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0xaa,
-	0x8c, 0x89, 0xa6, 0x01, 0x0e, 0x3a, 0x0c, 0x12, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61,
-	0x6e, 0x65, 0x73, 0xaa, 0x8c, 0x89, 0xa6, 0x01, 0x02, 0x58, 0x01, 0xaa, 0x8c, 0x89, 0xa6, 0x01,
-	0x02, 0x68, 0x01, 0x42, 0x36, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f,
-	0x6d, 0x2f, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2f, 0x64, 0x75, 0x62, 0x62, 0x6f, 0x2d, 0x6b,
-	0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x65,
-	0x73, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x33,
+	0x77, 0xaa, 0x8c, 0x89, 0xa6, 0x01, 0x13, 0x0a, 0x11, 0x44, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61,
+	0x6e, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0xaa, 0x8c, 0x89, 0xa6, 0x01, 0x0b,
+	0x12, 0x09, 0x44, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0xaa, 0x8c, 0x89, 0xa6, 0x01,
+	0x06, 0x22, 0x04, 0x6d, 0x65, 0x73, 0x68, 0xaa, 0x8c, 0x89, 0xa6, 0x01, 0x04, 0x52, 0x02, 0x08,
+	0x01, 0xaa, 0x8c, 0x89, 0xa6, 0x01, 0x0d, 0x3a, 0x0b, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x70,
+	0x6c, 0x61, 0x6e, 0x65, 0xaa, 0x8c, 0x89, 0xa6, 0x01, 0x0e, 0x3a, 0x0c, 0x12, 0x0a, 0x64, 0x61,
+	0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x73, 0xaa, 0x8c, 0x89, 0xa6, 0x01, 0x02, 0x58, 0x01,
+	0xaa, 0x8c, 0x89, 0xa6, 0x01, 0x02, 0x68, 0x01, 0x42, 0x36, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68,
+	0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2f, 0x64, 0x75,
+	0x62, 0x62, 0x6f, 0x2d, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x2f, 0x61,
+	0x70, 0x69, 0x2f, 0x6d, 0x65, 0x73, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
+	0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
 var (
diff --git a/api/mesh/v1alpha1/dataplane.proto b/api/mesh/v1alpha1/dataplane.proto
index 382ec20..04a4a0d 100644
--- a/api/mesh/v1alpha1/dataplane.proto
+++ b/api/mesh/v1alpha1/dataplane.proto
@@ -16,7 +16,6 @@
   option (dubbo.mesh.resource).name = "DataplaneResource";
   option (dubbo.mesh.resource).type = "Dataplane";
   option (dubbo.mesh.resource).package = "mesh";
-  option (dubbo.mesh.resource).dds.send_to_zone = true;
   option (dubbo.mesh.resource).dds.send_to_global = true;
   option (dubbo.mesh.resource).ws.name = "dataplane";
   option (dubbo.mesh.resource).ws.plural = "dataplanes";
diff --git a/api/mesh/v1alpha1/mapping.pb.go b/api/mesh/v1alpha1/mapping.pb.go
index 93a5bf2..cd06b1b 100644
--- a/api/mesh/v1alpha1/mapping.pb.go
+++ b/api/mesh/v1alpha1/mapping.pb.go
@@ -36,6 +36,7 @@
 	Namespace       string   `protobuf:"bytes,1,opt,name=namespace,proto3" json:"namespace,omitempty"`
 	ApplicationName string   `protobuf:"bytes,2,opt,name=applicationName,proto3" json:"applicationName,omitempty"`
 	InterfaceNames  []string `protobuf:"bytes,3,rep,name=interfaceNames,proto3" json:"interfaceNames,omitempty"`
+	PodName         string   `protobuf:"bytes,4,opt,name=podName,proto3" json:"podName,omitempty"`
 }
 
 func (x *MappingRegisterRequest) Reset() {
@@ -91,6 +92,13 @@
 	return nil
 }
 
+func (x *MappingRegisterRequest) GetPodName() string {
+	if x != nil {
+		return x.PodName
+	}
+	return ""
+}
+
 type MappingRegisterResponse struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -342,7 +350,7 @@
 	0x68, 0x61, 0x31, 0x2f, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74,
 	0x6f, 0x12, 0x13, 0x64, 0x75, 0x62, 0x62, 0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x2e, 0x76, 0x31,
 	0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x1a, 0x16, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x65, 0x73, 0x68,
-	0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x88,
+	0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa2,
 	0x01, 0x0a, 0x16, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74,
 	0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d,
 	0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61,
@@ -351,61 +359,63 @@
 	0x52, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d,
 	0x65, 0x12, 0x26, 0x0a, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x4e, 0x61,
 	0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x72,
-	0x66, 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x4d, 0x0a, 0x17, 0x4d, 0x61, 0x70,
-	0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70,
-	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x18,
-	0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x6e, 0x0a, 0x12, 0x4d, 0x61, 0x70, 0x70,
-	0x69, 0x6e, 0x67, 0x53, 0x79, 0x6e, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c,
-	0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05,
-	0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x6f, 0x6e,
-	0x63, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x4e,
-	0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x72,
-	0x66, 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x81, 0x01, 0x0a, 0x13, 0x4d, 0x61, 0x70,
-	0x70, 0x69, 0x6e, 0x67, 0x53, 0x79, 0x6e, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
-	0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69,
-	0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69,
-	0x6f, 0x6e, 0x12, 0x38, 0x0a, 0x08, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x03,
-	0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x64, 0x75, 0x62, 0x62, 0x6f, 0x2e, 0x6d, 0x65, 0x73,
-	0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4d, 0x61, 0x70, 0x70, 0x69,
-	0x6e, 0x67, 0x52, 0x08, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x22, 0xea, 0x01, 0x0a,
-	0x07, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x7a, 0x6f, 0x6e, 0x65,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x7a, 0x6f, 0x6e, 0x65, 0x12, 0x24, 0x0a, 0x0d,
-	0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20,
+	0x66, 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x6f, 0x64,
+	0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x6f, 0x64, 0x4e,
+	0x61, 0x6d, 0x65, 0x22, 0x4d, 0x0a, 0x17, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65,
+	0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18,
+	0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52,
+	0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73,
+	0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x22, 0x6e, 0x0a, 0x12, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x79, 0x6e,
+	0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65,
+	0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d,
+	0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18,
+	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x24, 0x0a, 0x0d,
+	0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20,
 	0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x4e, 0x61,
-	0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
-	0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x61, 0x70,
-	0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x3a, 0x79,
-	0xaa, 0x8c, 0x89, 0xa6, 0x01, 0x11, 0x0a, 0x0f, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52,
-	0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0xaa, 0x8c, 0x89, 0xa6, 0x01, 0x09, 0x12, 0x07, 0x4d,
-	0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0xaa, 0x8c, 0x89, 0xa6, 0x01, 0x06, 0x22, 0x04, 0x6d, 0x65,
-	0x73, 0x68, 0xaa, 0x8c, 0x89, 0xa6, 0x01, 0x04, 0x52, 0x02, 0x08, 0x01, 0xaa, 0x8c, 0x89, 0xa6,
-	0x01, 0x04, 0x52, 0x02, 0x10, 0x01, 0xaa, 0x8c, 0x89, 0xa6, 0x01, 0x0b, 0x3a, 0x09, 0x0a, 0x07,
-	0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0xaa, 0x8c, 0x89, 0xa6, 0x01, 0x0c, 0x3a, 0x0a, 0x12,
-	0x08, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0xaa, 0x8c, 0x89, 0xa6, 0x01, 0x02, 0x58,
-	0x01, 0xaa, 0x8c, 0x89, 0xa6, 0x01, 0x02, 0x68, 0x01, 0x32, 0xef, 0x01, 0x0a, 0x19, 0x53, 0x65,
-	0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67,
-	0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x6c, 0x0a, 0x0f, 0x4d, 0x61, 0x70, 0x70, 0x69,
-	0x6e, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x2b, 0x2e, 0x64, 0x75, 0x62,
-	0x62, 0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
-	0x2e, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72,
-	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, 0x75, 0x62, 0x62, 0x6f, 0x2e,
-	0x6d, 0x65, 0x73, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4d, 0x61,
-	0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73,
-	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x64, 0x0a, 0x0b, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67,
-	0x53, 0x79, 0x6e, 0x63, 0x12, 0x27, 0x2e, 0x64, 0x75, 0x62, 0x62, 0x6f, 0x2e, 0x6d, 0x65, 0x73,
+	0x6d, 0x65, 0x22, 0x81, 0x01, 0x0a, 0x13, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x79,
+	0x6e, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f,
+	0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65,
+	0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x03, 0x52, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, 0x08,
+	0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c,
+	0x2e, 0x64, 0x75, 0x62, 0x62, 0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c,
+	0x70, 0x68, 0x61, 0x31, 0x2e, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x6d, 0x61,
+	0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x22, 0xea, 0x01, 0x0a, 0x07, 0x4d, 0x61, 0x70, 0x70, 0x69,
+	0x6e, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x04, 0x7a, 0x6f, 0x6e, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66,
+	0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69,
+	0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10,
+	0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73,
+	0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74,
+	0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x3a, 0x79, 0xaa, 0x8c, 0x89, 0xa6, 0x01, 0x11,
+	0x0a, 0x0f, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
+	0x65, 0xaa, 0x8c, 0x89, 0xa6, 0x01, 0x09, 0x12, 0x07, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67,
+	0xaa, 0x8c, 0x89, 0xa6, 0x01, 0x06, 0x22, 0x04, 0x6d, 0x65, 0x73, 0x68, 0xaa, 0x8c, 0x89, 0xa6,
+	0x01, 0x04, 0x52, 0x02, 0x08, 0x01, 0xaa, 0x8c, 0x89, 0xa6, 0x01, 0x04, 0x52, 0x02, 0x10, 0x01,
+	0xaa, 0x8c, 0x89, 0xa6, 0x01, 0x0b, 0x3a, 0x09, 0x0a, 0x07, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e,
+	0x67, 0xaa, 0x8c, 0x89, 0xa6, 0x01, 0x0c, 0x3a, 0x0a, 0x12, 0x08, 0x6d, 0x61, 0x70, 0x70, 0x69,
+	0x6e, 0x67, 0x73, 0xaa, 0x8c, 0x89, 0xa6, 0x01, 0x02, 0x58, 0x01, 0xaa, 0x8c, 0x89, 0xa6, 0x01,
+	0x02, 0x68, 0x01, 0x32, 0xef, 0x01, 0x0a, 0x19, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e,
+	0x61, 0x6d, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63,
+	0x65, 0x12, 0x6c, 0x0a, 0x0f, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x67, 0x69,
+	0x73, 0x74, 0x65, 0x72, 0x12, 0x2b, 0x2e, 0x64, 0x75, 0x62, 0x62, 0x6f, 0x2e, 0x6d, 0x65, 0x73,
 	0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4d, 0x61, 0x70, 0x70, 0x69,
-	0x6e, 0x67, 0x53, 0x79, 0x6e, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e,
-	0x64, 0x75, 0x62, 0x62, 0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
-	0x68, 0x61, 0x31, 0x2e, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x79, 0x6e, 0x63, 0x52,
-	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x42, 0x36, 0x5a, 0x34, 0x67,
-	0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65,
-	0x2f, 0x64, 0x75, 0x62, 0x62, 0x6f, 0x2d, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65,
-	0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x65, 0x73, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70,
-	0x68, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+	0x6e, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+	0x74, 0x1a, 0x2c, 0x2e, 0x64, 0x75, 0x62, 0x62, 0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x2e, 0x76,
+	0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52,
+	0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+	0x64, 0x0a, 0x0b, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x79, 0x6e, 0x63, 0x12, 0x27,
+	0x2e, 0x64, 0x75, 0x62, 0x62, 0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c,
+	0x70, 0x68, 0x61, 0x31, 0x2e, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x79, 0x6e, 0x63,
+	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x64, 0x75, 0x62, 0x62, 0x6f, 0x2e,
+	0x6d, 0x65, 0x73, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4d, 0x61,
+	0x70, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x79, 0x6e, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
+	0x65, 0x28, 0x01, 0x30, 0x01, 0x42, 0x36, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e,
+	0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2f, 0x64, 0x75, 0x62, 0x62, 0x6f,
+	0x2d, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f,
+	0x6d, 0x65, 0x73, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x62, 0x06, 0x70,
+	0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
 var (
diff --git a/api/mesh/v1alpha1/mapping.proto b/api/mesh/v1alpha1/mapping.proto
index 8faf3c6..ae61673 100644
--- a/api/mesh/v1alpha1/mapping.proto
+++ b/api/mesh/v1alpha1/mapping.proto
@@ -27,6 +27,7 @@
   string namespace = 1;
   string applicationName = 2;
   repeated string interfaceNames = 3;
+  string podName = 4;
 }
 
 message MappingRegisterResponse {
diff --git a/api/mesh/v1alpha1/metadata.pb.go b/api/mesh/v1alpha1/metadata.pb.go
index 838b0fb..755a69e 100644
--- a/api/mesh/v1alpha1/metadata.pb.go
+++ b/api/mesh/v1alpha1/metadata.pb.go
@@ -487,7 +487,7 @@
 	0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d,
 	0x2e, 0x64, 0x75, 0x62, 0x62, 0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c,
 	0x70, 0x68, 0x61, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, 0x6d,
-	0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x75, 0x6d, 0x22, 0xf3, 0x02, 0x0a, 0x08, 0x4d, 0x65, 0x74,
+	0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x75, 0x6d, 0x22, 0xe9, 0x02, 0x0a, 0x08, 0x4d, 0x65, 0x74,
 	0x61, 0x44, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x7a, 0x6f, 0x6e, 0x65, 0x18, 0x01, 0x20,
 	0x01, 0x28, 0x09, 0x52, 0x04, 0x7a, 0x6f, 0x6e, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x70, 0x70,
 	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x70, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x72,
@@ -503,51 +503,50 @@
 	0x28, 0x0b, 0x32, 0x20, 0x2e, 0x64, 0x75, 0x62, 0x62, 0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x2e,
 	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
 	0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x3a,
-	0x7d, 0xaa, 0x8c, 0x89, 0xa6, 0x01, 0x12, 0x0a, 0x10, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74,
+	0x73, 0xaa, 0x8c, 0x89, 0xa6, 0x01, 0x12, 0x0a, 0x10, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74,
 	0x61, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0xaa, 0x8c, 0x89, 0xa6, 0x01, 0x0a, 0x12,
 	0x08, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0xaa, 0x8c, 0x89, 0xa6, 0x01, 0x06, 0x22,
 	0x04, 0x6d, 0x65, 0x73, 0x68, 0xaa, 0x8c, 0x89, 0xa6, 0x01, 0x04, 0x52, 0x02, 0x08, 0x01, 0xaa,
-	0x8c, 0x89, 0xa6, 0x01, 0x04, 0x52, 0x02, 0x10, 0x01, 0xaa, 0x8c, 0x89, 0xa6, 0x01, 0x0c, 0x3a,
-	0x0a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xaa, 0x8c, 0x89, 0xa6, 0x01,
-	0x02, 0x58, 0x01, 0xaa, 0x8c, 0x89, 0xa6, 0x01, 0x0d, 0x3a, 0x0b, 0x12, 0x09, 0x6d, 0x65, 0x74,
-	0x61, 0x64, 0x61, 0x74, 0x61, 0x73, 0xaa, 0x8c, 0x89, 0xa6, 0x01, 0x02, 0x68, 0x01, 0x22, 0x96,
-	0x02, 0x0a, 0x0b, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12,
-	0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
-	0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73,
-	0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69,
-	0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x04,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x12,
-	0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x70, 0x6f,
-	0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x44, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73,
-	0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x64, 0x75, 0x62, 0x62, 0x6f, 0x2e, 0x6d,
-	0x65, 0x73, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x53, 0x65, 0x72,
-	0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45,
-	0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x39, 0x0a, 0x0b,
-	0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
-	0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a,
-	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61,
-	0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x32, 0xeb, 0x01, 0x0a, 0x0f, 0x4d, 0x65, 0x74, 0x61,
-	0x64, 0x61, 0x74, 0x61, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x6f, 0x0a, 0x10, 0x4d,
-	0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12,
-	0x2c, 0x2e, 0x64, 0x75, 0x62, 0x62, 0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x2e, 0x76, 0x31, 0x61,
-	0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65,
-	0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e,
-	0x64, 0x75, 0x62, 0x62, 0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
-	0x68, 0x61, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x67, 0x69,
-	0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x67, 0x0a, 0x0c,
-	0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x53, 0x79, 0x6e, 0x63, 0x12, 0x28, 0x2e, 0x64,
+	0x8c, 0x89, 0xa6, 0x01, 0x0c, 0x3a, 0x0a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
+	0x61, 0xaa, 0x8c, 0x89, 0xa6, 0x01, 0x02, 0x58, 0x01, 0xaa, 0x8c, 0x89, 0xa6, 0x01, 0x0d, 0x3a,
+	0x0b, 0x12, 0x09, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x73, 0xaa, 0x8c, 0x89, 0xa6,
+	0x01, 0x02, 0x68, 0x01, 0x22, 0x96, 0x02, 0x0a, 0x0b, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
+	0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75,
+	0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x18,
+	0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01,
+	0x28, 0x03, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68,
+	0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x44, 0x0a, 0x06,
+	0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x64,
+	0x75, 0x62, 0x62, 0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
+	0x61, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x50,
+	0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61,
+	0x6d, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72,
+	0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
+	0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x32, 0xeb, 0x01,
+	0x0a, 0x0f, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63,
+	0x65, 0x12, 0x6f, 0x0a, 0x10, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x67,
+	0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x2c, 0x2e, 0x64, 0x75, 0x62, 0x62, 0x6f, 0x2e, 0x6d, 0x65,
+	0x73, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61,
+	0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75,
+	0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x64, 0x75, 0x62, 0x62, 0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x68,
+	0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61,
+	0x74, 0x61, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+	0x73, 0x65, 0x12, 0x67, 0x0a, 0x0c, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x53, 0x79,
+	0x6e, 0x63, 0x12, 0x28, 0x2e, 0x64, 0x75, 0x62, 0x62, 0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x2e,
+	0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
+	0x61, 0x53, 0x79, 0x6e, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x64,
 	0x75, 0x62, 0x62, 0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
 	0x61, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x53, 0x79, 0x6e, 0x63, 0x52,
-	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x64, 0x75, 0x62, 0x62, 0x6f, 0x2e, 0x6d,
-	0x65, 0x73, 0x68, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4d, 0x65, 0x74,
-	0x61, 0x64, 0x61, 0x74, 0x61, 0x53, 0x79, 0x6e, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
-	0x65, 0x28, 0x01, 0x30, 0x01, 0x42, 0x36, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e,
-	0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2f, 0x64, 0x75, 0x62, 0x62, 0x6f,
-	0x2d, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65, 0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f,
-	0x6d, 0x65, 0x73, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x62, 0x06, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x33,
+	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x42, 0x36, 0x5a, 0x34, 0x67,
+	0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65,
+	0x2f, 0x64, 0x75, 0x62, 0x62, 0x6f, 0x2d, 0x6b, 0x75, 0x62, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x65,
+	0x73, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x65, 0x73, 0x68, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70,
+	0x68, 0x61, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
 var (
diff --git a/api/mesh/v1alpha1/metadata.proto b/api/mesh/v1alpha1/metadata.proto
index 0688317..7629d5d 100644
--- a/api/mesh/v1alpha1/metadata.proto
+++ b/api/mesh/v1alpha1/metadata.proto
@@ -43,7 +43,6 @@
   option (dubbo.mesh.resource).type = "MetaData";
   option (dubbo.mesh.resource).package = "mesh";
   option (dubbo.mesh.resource).dds.send_to_global = true;
-  option (dubbo.mesh.resource).dds.send_to_zone = true;
   option (dubbo.mesh.resource).ws.name = "metadata";
   option (dubbo.mesh.resource).scope_namespace = true;
   option (dubbo.mesh.resource).ws.plural = "metadatas";
diff --git a/app/dubboctl/cmd/proxy_test.go b/app/dubboctl/cmd/proxy_test.go
index a5d7eb1..c6eb9f4 100644
--- a/app/dubboctl/cmd/proxy_test.go
+++ b/app/dubboctl/cmd/proxy_test.go
@@ -123,7 +123,6 @@
 				// we expect Envoy process to get killed by now
 				return err != nil
 			}, "5s", "100ms").Should(BeTrue())
-
 		},
 		Entry("can be launched with env vars", func() testCase {
 			return testCase{
@@ -240,7 +239,6 @@
 			}
 		}),
 	)
-
 })
 
 func verifyComponentProcess(processDescription, pidfile string, cmdlinefile string, argsVerifier func(expectedArgs []string)) int64 {
diff --git a/pkg/config/app/dubbo-cp/config.go b/pkg/config/app/dubbo-cp/config.go
index fdc3b9b..80c3a4d 100644
--- a/pkg/config/app/dubbo-cp/config.go
+++ b/pkg/config/app/dubbo-cp/config.go
@@ -37,7 +37,6 @@
 	dp_server "github.com/apache/dubbo-kubernetes/pkg/config/dp-server"
 	"github.com/apache/dubbo-kubernetes/pkg/config/dubbo"
 	"github.com/apache/dubbo-kubernetes/pkg/config/eventbus"
-	"github.com/apache/dubbo-kubernetes/pkg/config/intercp"
 	"github.com/apache/dubbo-kubernetes/pkg/config/multizone"
 	"github.com/apache/dubbo-kubernetes/pkg/config/plugins/runtime"
 	config_types "github.com/apache/dubbo-kubernetes/pkg/config/types"
@@ -106,8 +105,6 @@
 	DpServer *dp_server.DpServerConfig `json:"dpServer"`
 	// EventBus is a configuration of the event bus which is local to one instance of CP.
 	EventBus eventbus.Config `json:"eventBus"`
-	// Intercommunication CP configuration
-	InterCp intercp.InterCpConfig `json:"interCp"`
 	// SNP configuration
 	DubboConfig           dubbo.DubboConfig     `json:"dubbo_config"`
 	Bufman                bufman.Bufman         `json:"bufman"`
@@ -172,7 +169,6 @@
 		Diagnostics:           diagnostics.DefaultDiagnosticsConfig(),
 		DpServer:              dp_server.DefaultDpServerConfig(),
 		Admin:                 admin.DefaultAdminConfig(),
-		InterCp:               intercp.DefaultInterCpConfig(),
 		DubboConfig:           dubbo.DefaultServiceNameMappingConfig(),
 		EventBus:              eventbus.Default(),
 		DDSEventBasedWatchdog: DefaultEventBasedWatchdog(),
diff --git a/pkg/config/intercp/config.go b/pkg/config/intercp/config.go
deleted file mode 100644
index 5d556de..0000000
--- a/pkg/config/intercp/config.go
+++ /dev/null
@@ -1,111 +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 intercp
-
-import (
-	"time"
-)
-
-import (
-	"github.com/asaskevich/govalidator"
-
-	"github.com/pkg/errors"
-
-	"go.uber.org/multierr"
-)
-
-import (
-	config_types "github.com/apache/dubbo-kubernetes/pkg/config/types"
-)
-
-func DefaultInterCpConfig() InterCpConfig {
-	return InterCpConfig{
-		Catalog: CatalogConfig{
-			InstanceAddress:   "", // autoconfigured
-			HeartbeatInterval: config_types.Duration{Duration: 5 * time.Second},
-			WriterInterval:    config_types.Duration{Duration: 15 * time.Second},
-		},
-		Server: InterCpServerConfig{
-			Port:            5683,
-			TlsMinVersion:   "TLSv1_2",
-			TlsCipherSuites: []string{},
-		},
-	}
-}
-
-type InterCpConfig struct {
-	// Catalog configuration. Catalog keeps a record of all live CP instances in the zone.
-	Catalog CatalogConfig `json:"catalog"`
-	// Intercommunication CP server configuration
-	Server InterCpServerConfig `json:"server"`
-}
-
-func (i *InterCpConfig) Validate() error {
-	if err := i.Server.Validate(); err != nil {
-		return errors.Wrap(err, ".Server validation failed")
-	}
-	if err := i.Catalog.Validate(); err != nil {
-		return errors.Wrap(err, ".Catalog validation failed")
-	}
-	return nil
-}
-
-type CatalogConfig struct {
-	// InstanceAddress indicates an address on which other control planes can communicate with this CP
-	// If empty then it's autoconfigured by taking the first IP of the nonloopback network interface.
-	InstanceAddress string `json:"instanceAddress" envconfig:"dubbo_inter_cp_catalog_instance_address"`
-	// Interval on which CP will send heartbeat to a leader.
-	HeartbeatInterval config_types.Duration `json:"heartbeatInterval" envconfig:"dubbo_inter_cp_catalog_heartbeat_interval"`
-	// Interval on which CP will write all instances to a catalog.
-	WriterInterval config_types.Duration `json:"writerInterval" envconfig:"dubbo_inter_cp_catalog_writer_interval"`
-}
-
-func (i *CatalogConfig) Validate() error {
-	if i.InstanceAddress != "" && !govalidator.IsDNSName(i.InstanceAddress) && !govalidator.IsIP(i.InstanceAddress) {
-		return errors.New(".InstanceAddress has to be valid IP or DNS address")
-	}
-	return nil
-}
-
-type InterCpServerConfig struct {
-	// Port on which Intercommunication CP server will listen
-	Port uint16 `json:"port" envconfig:"dubbo_inter_cp_server_port"`
-	// TlsMinVersion defines the minimum TLS version to be used
-	TlsMinVersion string `json:"tlsMinVersion" envconfig:"dubbo_inter_cp_server_tls_min_version"`
-	// TlsMaxVersion defines the maximum TLS version to be used
-	TlsMaxVersion string `json:"tlsMaxVersion" envconfig:"dubbo_inter_cp_server_tls_max_version"`
-	// TlsCipherSuites defines the list of ciphers to use
-	TlsCipherSuites []string `json:"tlsCipherSuites" envconfig:"dubbo_inter_cp_server_tls_cipher_suites"`
-}
-
-func (i *InterCpServerConfig) Validate() error {
-	var errs error
-	if i.Port == 0 {
-		errs = multierr.Append(errs, errors.New(".Port cannot be zero"))
-	}
-	if _, err := config_types.TLSVersion(i.TlsMinVersion); err != nil {
-		errs = multierr.Append(errs, errors.New(".TlsMinVersion "+err.Error()))
-	}
-	if _, err := config_types.TLSVersion(i.TlsMaxVersion); err != nil {
-		errs = multierr.Append(errs, errors.New(".TlsMaxVersion "+err.Error()))
-	}
-	if _, err := config_types.TLSCiphers(i.TlsCipherSuites); err != nil {
-		errs = multierr.Append(errs, errors.New(".TlsCipherSuites "+err.Error()))
-	}
-	return errs
-}
diff --git a/pkg/core/registry/mapping.go b/pkg/core/registry/mapping.go
index 3b251b1..8510d70 100644
--- a/pkg/core/registry/mapping.go
+++ b/pkg/core/registry/mapping.go
@@ -18,6 +18,11 @@
 package registry
 
 import (
+	"dubbo.apache.org/dubbo-go/v3/common"
+	"github.com/apache/dubbo-kubernetes/pkg/core/resources/apis/mesh"
+	core_model "github.com/apache/dubbo-kubernetes/pkg/core/resources/model"
+	"github.com/apache/dubbo-kubernetes/pkg/events"
+	"github.com/apache/dubbo-kubernetes/pkg/util/rmkey"
 	"sync"
 )
 
@@ -32,15 +37,24 @@
 	oldServiceNames *gxset.HashSet
 	listener        registry.NotifyListener
 	interfaceKey    string
+	systemNamespace string
 
 	mux           sync.Mutex
 	delSDRegistry registry.ServiceDiscovery
+	eventWriter   events.Emitter
 }
 
-func NewMappingListener(oldServiceNames *gxset.HashSet, listener registry.NotifyListener) *ServiceMappingChangedListenerImpl {
+func NewMappingListener(
+	oldServiceNames *gxset.HashSet,
+	listener registry.NotifyListener,
+	writer events.Emitter,
+	systemNamespace string,
+) *ServiceMappingChangedListenerImpl {
 	return &ServiceMappingChangedListenerImpl{
 		listener:        listener,
 		oldServiceNames: oldServiceNames,
+		eventWriter:     writer,
+		systemNamespace: systemNamespace,
 	}
 }
 
@@ -59,6 +73,18 @@
 		return nil
 	}
 
+	interfaceName, _, _ := common.ParseServiceKey(sm.GetServiceKey())
+	if lstn.eventWriter != nil {
+		go func() {
+			lstn.eventWriter.Send(events.ResourceChangedEvent{
+				Operation: events.Delete,
+				Type:      mesh.DataplaneType,
+				Key: core_model.ResourceKey{
+					Name: rmkey.GenerateMappingResourceKey(interfaceName, ""),
+				},
+			})
+		}()
+	}
 	err := lstn.updateListener(lstn.interfaceKey, newServiceNames)
 	if err != nil {
 		return err
diff --git a/pkg/core/registry/registry.go b/pkg/core/registry/registry.go
index 297ab83..1719924 100644
--- a/pkg/core/registry/registry.go
+++ b/pkg/core/registry/registry.go
@@ -63,6 +63,7 @@
 	cache *sync.Map,
 	discovery dubboRegistry.ServiceDiscovery,
 	out events.Emitter,
+	systemNamespace string,
 ) error {
 	queryParams := url.Values{
 		consts.InterfaceKey:  {consts.AnyValue},
@@ -113,7 +114,7 @@
 			logger.Error("Failed to get mapping")
 		}
 		for interfaceKey, oldApps := range mappings {
-			mappingListener := NewMappingListener(oldApps, listener)
+			mappingListener := NewMappingListener(oldApps, listener, out, systemNamespace)
 			apps, _ := metadataReport.GetServiceAppMapping(interfaceKey, "mapping", mappingListener)
 			delSDListener := NewDubboSDNotifyListener(apps)
 			for appTmp := range apps.Items {
diff --git a/pkg/core/resources/apis/mesh/zz_generated.resources.go b/pkg/core/resources/apis/mesh/zz_generated.resources.go
index d7b8765..dcdbc1e 100644
--- a/pkg/core/resources/apis/mesh/zz_generated.resources.go
+++ b/pkg/core/resources/apis/mesh/zz_generated.resources.go
@@ -217,7 +217,7 @@
 	ReadOnly:            false,
 	AdminOnly:           false,
 	Scope:               model.ScopeMesh,
-	DDSFlags:            model.ZoneToGlobalFlag | model.GlobalToAllButOriginalZoneFlag,
+	DDSFlags:            model.ZoneToGlobalFlag,
 	WsPath:              "dataplanes",
 	DubboctlArg:         "dataplane",
 	DubboctlListArg:     "dataplanes",
@@ -870,7 +870,7 @@
 	ReadOnly:            false,
 	AdminOnly:           false,
 	Scope:               model.ScopeMesh,
-	DDSFlags:            model.ZoneToGlobalFlag | model.GlobalToAllButOriginalZoneFlag,
+	DDSFlags:            model.ZoneToGlobalFlag,
 	WsPath:              "metadatas",
 	DubboctlArg:         "metadata",
 	DubboctlListArg:     "metadatas",
diff --git a/pkg/dubbo/components.go b/pkg/dubbo/components.go
index 7d39d16..debe4d7 100644
--- a/pkg/dubbo/components.go
+++ b/pkg/dubbo/components.go
@@ -22,6 +22,10 @@
 )
 
 import (
+	"github.com/pkg/errors"
+)
+
+import (
 	mesh_proto "github.com/apache/dubbo-kubernetes/api/mesh/v1alpha1"
 	core_env "github.com/apache/dubbo-kubernetes/pkg/config/core"
 	"github.com/apache/dubbo-kubernetes/pkg/core"
@@ -31,6 +35,7 @@
 	dubbo_metadata "github.com/apache/dubbo-kubernetes/pkg/dubbo/metadata"
 	"github.com/apache/dubbo-kubernetes/pkg/dubbo/pusher"
 	dubbo_mapping "github.com/apache/dubbo-kubernetes/pkg/dubbo/servicemapping"
+	k8s_extensions "github.com/apache/dubbo-kubernetes/pkg/plugins/extensions/k8s"
 )
 
 var log = core.Log.WithName("dubbo")
@@ -41,6 +46,16 @@
 	}
 	cfg := rt.Config().DubboConfig
 
+	mgr, ok := k8s_extensions.FromManagerContext(rt.Extensions())
+	if !ok {
+		return errors.Errorf("k8s controller runtime Manager hasn't been configured")
+	}
+
+	converter, ok := k8s_extensions.FromResourceConverterContext(rt.Extensions())
+	if !ok {
+		return errors.Errorf("k8s resource converter hasn't been configured")
+	}
+
 	dubboPusher := pusher.NewPusher(rt.ResourceManager(), rt.EventBus(), func() *time.Ticker {
 		// todo: should configured by config in the future
 		return time.NewTicker(time.Minute * 10)
@@ -54,9 +69,12 @@
 		rt.AppContext(),
 		cfg,
 		dubboPusher,
+		mgr,
+		converter,
 		rt.ResourceManager(),
 		rt.Transactions(),
 		rt.Config().Multizone.Zone.Name,
+		rt.Config().Store.Kubernetes.SystemNamespace,
 	)
 	mesh_proto.RegisterServiceNameMappingServiceServer(rt.DpServer().GrpcServer(), serviceMapping)
 
@@ -65,9 +83,12 @@
 		rt.AppContext(),
 		cfg,
 		dubboPusher,
+		mgr,
+		converter,
 		rt.ResourceManager(),
 		rt.Transactions(),
 		rt.Config().Multizone.Zone.Name,
+		rt.Config().Store.Kubernetes.SystemNamespace,
 	)
 	mesh_proto.RegisterMetadataServiceServer(rt.DpServer().GrpcServer(), metadata)
 	return rt.Add(dubboPusher, serviceMapping, metadata)
diff --git a/pkg/dubbo/metadata/resource_meta.go b/pkg/dubbo/metadata/resource_meta.go
new file mode 100644
index 0000000..31bb344
--- /dev/null
+++ b/pkg/dubbo/metadata/resource_meta.go
@@ -0,0 +1,65 @@
+/*
+ * 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 metadata
+
+import (
+	"time"
+)
+
+import (
+	core_model "github.com/apache/dubbo-kubernetes/pkg/core/resources/model"
+)
+
+type resourceMetaObject struct {
+	Name             string
+	Version          string
+	Mesh             string
+	CreationTime     time.Time
+	ModificationTime time.Time
+	Labels           map[string]string
+}
+
+var _ core_model.ResourceMeta = &resourceMetaObject{}
+
+func (r *resourceMetaObject) GetName() string {
+	return r.Name
+}
+
+func (r *resourceMetaObject) GetNameExtensions() core_model.ResourceNameExtensions {
+	return core_model.ResourceNameExtensionsUnsupported
+}
+
+func (r *resourceMetaObject) GetVersion() string {
+	return r.Version
+}
+
+func (r *resourceMetaObject) GetMesh() string {
+	return r.Mesh
+}
+
+func (r *resourceMetaObject) GetCreationTime() time.Time {
+	return r.CreationTime
+}
+
+func (r *resourceMetaObject) GetModificationTime() time.Time {
+	return r.ModificationTime
+}
+
+func (r *resourceMetaObject) GetLabels() map[string]string {
+	return r.Labels
+}
diff --git a/pkg/dubbo/metadata/server.go b/pkg/dubbo/metadata/server.go
index 60a8b4f..2234ee8 100644
--- a/pkg/dubbo/metadata/server.go
+++ b/pkg/dubbo/metadata/server.go
@@ -32,6 +32,13 @@
 	"google.golang.org/grpc/codes"
 
 	"google.golang.org/grpc/status"
+
+	kube_core "k8s.io/api/core/v1"
+
+	kube_types "k8s.io/apimachinery/pkg/types"
+
+	kube_ctrl "sigs.k8s.io/controller-runtime"
+	kube_controllerutil "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
 )
 
 import (
@@ -44,6 +51,7 @@
 	core_store "github.com/apache/dubbo-kubernetes/pkg/core/resources/store"
 	"github.com/apache/dubbo-kubernetes/pkg/dubbo/client"
 	"github.com/apache/dubbo-kubernetes/pkg/dubbo/pusher"
+	k8s_common "github.com/apache/dubbo-kubernetes/pkg/plugins/common/k8s"
 	"github.com/apache/dubbo-kubernetes/pkg/util/rmkey"
 )
 
@@ -54,12 +62,15 @@
 type MetadataServer struct {
 	mesh_proto.MetadataServiceServer
 
-	localZone string
-	config    dubbo.DubboConfig
-	queue     chan *RegisterRequest
-	pusher    pusher.Pusher
+	localZone       string
+	config          dubbo.DubboConfig
+	queue           chan *RegisterRequest
+	pusher          pusher.Pusher
+	converter       k8s_common.Converter
+	SystemNamespace string
 
 	ctx             context.Context
+	manager         kube_ctrl.Manager
 	resourceManager manager.ResourceManager
 	transactions    core_store.Transactions
 }
@@ -79,18 +90,24 @@
 	ctx context.Context,
 	config dubbo.DubboConfig,
 	pusher pusher.Pusher,
+	manager kube_ctrl.Manager,
+	converter k8s_common.Converter,
 	resourceManager manager.ResourceManager,
 	transactions core_store.Transactions,
 	localZone string,
+	systemNamespace string,
 ) *MetadataServer {
 	return &MetadataServer{
 		config:          config,
 		pusher:          pusher,
 		queue:           make(chan *RegisterRequest, queueSize),
 		ctx:             ctx,
-		resourceManager: resourceManager,
+		manager:         manager,
 		transactions:    transactions,
+		resourceManager: resourceManager,
+		converter:       converter,
 		localZone:       localZone,
+		SystemNamespace: systemNamespace,
 	}
 }
 
@@ -336,44 +353,42 @@
 
 func (m *MetadataServer) tryRegister(key core_model.ResourceReq, newMetadata *mesh_proto.MetaData) error {
 	err := core_store.InTx(m.ctx, m.transactions, func(ctx context.Context) error {
-		// get Metadata Resource first,
-		// if Metadata is not found, create it,
-		// else update it.
-		metadata := core_mesh.NewMetaDataResource()
-		err := m.resourceManager.Get(m.ctx, metadata, core_store.GetBy(core_model.ResourceKey{
-			Mesh: key.Mesh,
-			Name: key.Name,
-		}))
-		if err != nil && !core_store.IsResourceNotFound(err) {
-			log.Error(err, "get Metadata Resource")
+		// 先获取到对应Name和Namespace的Pod
+		kubeClient := m.manager.GetClient()
+		pod := &kube_core.Pod{}
+		if err := kubeClient.Get(ctx, kube_types.NamespacedName{
+			Name:      key.PodName,
+			Namespace: key.Namespace,
+		}, pod); err != nil {
+			return errors.Wrap(err, "unable to get Namespace for Pod")
+		}
+		newMetadata.Zone = m.localZone
+		metaDataResource := core_mesh.NewMetaDataResource()
+		metaDataResource.SetMeta(&resourceMetaObject{
+			Name: rmkey.GenerateMetadataResourceKey(metaDataResource.Spec.App, metaDataResource.Spec.Revision, m.SystemNamespace),
+			Mesh: core_model.DefaultMesh,
+		})
+		err := metaDataResource.SetSpec(newMetadata)
+		if err != nil {
+			return err
+		}
+		medataObject, err := m.converter.ToKubernetesObject(metaDataResource)
+		if err != nil {
 			return err
 		}
 
-		if core_store.IsResourceNotFound(err) {
-			// create if not found
-			metadata.Spec = newMetadata
-			metadata.Spec.Zone = m.localZone
-			err = m.resourceManager.Create(m.ctx, metadata, core_store.CreateBy(core_model.ResourceKey{
-				Mesh: key.Mesh,
-				Name: key.Name,
-			}), core_store.CreatedAt(time.Now()))
-			if err != nil {
-				log.Error(err, "create Metadata Resource failed")
-				return err
+		operationResult, err := kube_controllerutil.CreateOrUpdate(ctx, kubeClient, medataObject, func() error {
+			if err := kube_controllerutil.SetControllerReference(pod, medataObject, m.manager.GetScheme()); err != nil {
+				return errors.Wrap(err, "unable to set Metadata's controller reference to Pod")
+			}
+			return nil
+		})
+		if err != nil {
+			if !errors.Is(err, context.Canceled) {
+				log.Error(err, "unable to create/update Metadata", "operationResult", operationResult)
 			}
 
-			log.Info("create Metadata Resource success", "key", key, "metadata", newMetadata)
-		} else {
-			// if found, update it
-			metadata.Spec = newMetadata
-
-			err = m.resourceManager.Update(m.ctx, metadata, core_store.ModifiedAt(time.Now()))
-			if err != nil {
-				log.Error(err, "update Metadata Resource failed")
-				return err
-			}
-
-			log.Info("update Metadata Resource success", "key", key, "metadata", newMetadata)
+			return err
 		}
 
 		// 更新dataplane资源
@@ -390,8 +405,8 @@
 			dataplane.Spec.Extensions = make(map[string]string)
 		}
 		// 拿到dataplane, 添加extensions, 设置revision
-		dataplane.Spec.Extensions[mesh_proto.Revision] = metadata.Spec.Revision
-		dataplane.Spec.Extensions[mesh_proto.Application] = metadata.Spec.App
+		dataplane.Spec.Extensions[mesh_proto.Revision] = metaDataResource.Spec.Revision
+		dataplane.Spec.Extensions[mesh_proto.Application] = metaDataResource.Spec.App
 
 		// 更新dataplane
 		err = m.resourceManager.Update(m.ctx, dataplane)
diff --git a/pkg/dubbo/servicemapping/resource_meta.go b/pkg/dubbo/servicemapping/resource_meta.go
new file mode 100644
index 0000000..e0ecb2a
--- /dev/null
+++ b/pkg/dubbo/servicemapping/resource_meta.go
@@ -0,0 +1,65 @@
+/*
+ * 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 servicemapping
+
+import (
+	"time"
+)
+
+import (
+	core_model "github.com/apache/dubbo-kubernetes/pkg/core/resources/model"
+)
+
+type resourceMetaObject struct {
+	Name             string
+	Version          string
+	Mesh             string
+	CreationTime     time.Time
+	ModificationTime time.Time
+	Labels           map[string]string
+}
+
+var _ core_model.ResourceMeta = &resourceMetaObject{}
+
+func (r *resourceMetaObject) GetName() string {
+	return r.Name
+}
+
+func (r *resourceMetaObject) GetNameExtensions() core_model.ResourceNameExtensions {
+	return core_model.ResourceNameExtensionsUnsupported
+}
+
+func (r *resourceMetaObject) GetVersion() string {
+	return r.Version
+}
+
+func (r *resourceMetaObject) GetMesh() string {
+	return r.Mesh
+}
+
+func (r *resourceMetaObject) GetCreationTime() time.Time {
+	return r.CreationTime
+}
+
+func (r *resourceMetaObject) GetModificationTime() time.Time {
+	return r.ModificationTime
+}
+
+func (r *resourceMetaObject) GetLabels() map[string]string {
+	return r.Labels
+}
diff --git a/pkg/dubbo/servicemapping/server.go b/pkg/dubbo/servicemapping/server.go
index 22aa31f..f97d2e8 100644
--- a/pkg/dubbo/servicemapping/server.go
+++ b/pkg/dubbo/servicemapping/server.go
@@ -19,7 +19,9 @@
 
 import (
 	"context"
+	"github.com/apache/dubbo-kubernetes/pkg/util/rmkey"
 	"io"
+	kube_controllerutil "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
 	"time"
 )
 
@@ -31,6 +33,12 @@
 	"google.golang.org/grpc/codes"
 
 	"google.golang.org/grpc/status"
+
+	kube_core "k8s.io/api/core/v1"
+
+	kube_types "k8s.io/apimachinery/pkg/types"
+
+	kube_ctrl "sigs.k8s.io/controller-runtime"
 )
 
 import (
@@ -44,7 +52,7 @@
 	"github.com/apache/dubbo-kubernetes/pkg/core/runtime/component"
 	"github.com/apache/dubbo-kubernetes/pkg/dubbo/client"
 	"github.com/apache/dubbo-kubernetes/pkg/dubbo/pusher"
-	"github.com/apache/dubbo-kubernetes/pkg/util/rmkey"
+	k8s_common "github.com/apache/dubbo-kubernetes/pkg/plugins/common/k8s"
 )
 
 var log = core.Log.WithName("dubbo").WithName("server").WithName("service-name-mapping")
@@ -56,14 +64,17 @@
 type SnpServer struct {
 	mesh_proto.ServiceNameMappingServiceServer
 
-	localZone string
-	config    dubbo.DubboConfig
-	queue     chan *RegisterRequest
-	pusher    pusher.Pusher
+	localZone       string
+	config          dubbo.DubboConfig
+	queue           chan *RegisterRequest
+	pusher          pusher.Pusher
+	converter       k8s_common.Converter
+	resourceManager manager.ResourceManager
 
 	ctx             context.Context
-	resourceManager manager.ResourceManager
+	manager         kube_ctrl.Manager
 	transactions    core_store.Transactions
+	systemNamespace string
 }
 
 func (s *SnpServer) Start(stop <-chan struct{}) error {
@@ -81,9 +92,12 @@
 	ctx context.Context,
 	config dubbo.DubboConfig,
 	pusher pusher.Pusher,
+	manager kube_ctrl.Manager,
+	converter k8s_common.Converter,
 	resourceManager manager.ResourceManager,
 	transactions core_store.Transactions,
 	localZone string,
+	systemNamespace string,
 ) *SnpServer {
 	return &SnpServer{
 		localZone:       localZone,
@@ -92,7 +106,10 @@
 		queue:           make(chan *RegisterRequest, queueSize),
 		ctx:             ctx,
 		resourceManager: resourceManager,
+		manager:         manager,
+		converter:       converter,
 		transactions:    transactions,
+		systemNamespace: systemNamespace,
 	}
 }
 
@@ -316,7 +333,7 @@
 			appNames = append(appNames, app)
 		}
 		for i := 0; i < 3; i++ {
-			if err := s.tryRegister(key.Mesh, key.Name, key.Namespace, appNames); err != nil {
+			if err := s.tryRegister(key, appNames); err != nil {
 				log.Error(err, "register failed", "key", key)
 			} else {
 				break
@@ -325,11 +342,21 @@
 	}
 }
 
-func (s *SnpServer) tryRegister(mesh, interfaceName string, ns string, newApps []string) error {
+func (s *SnpServer) tryRegister(req core_model.ResourceReq, newApps []string) error {
 	err := core_store.InTx(s.ctx, s.transactions, func(ctx context.Context) error {
+		interfaceName := req.Name
+		// 先获取到对应Name和Namespace的Pod
+		kubeClient := s.manager.GetClient()
+		pod := &kube_core.Pod{}
+		if err := kubeClient.Get(ctx, kube_types.NamespacedName{
+			Name:      req.PodName,
+			Namespace: req.Namespace,
+		}, pod); err != nil {
+			return errors.Wrap(err, "unable to get Namespace for Pod")
+		}
 		key := core_model.ResourceKey{
-			Mesh: mesh,
-			Name: rmkey.GenerateMappingResourceKey(interfaceName, ns),
+			Mesh: req.Mesh,
+			Name: rmkey.GenerateMappingResourceKey(interfaceName, req.Namespace),
 		}
 
 		// get Mapping Resource first,
@@ -341,56 +368,60 @@
 			log.Error(err, "get Mapping Resource")
 			return err
 		}
-
+		var previousAppNames map[string]struct{}
+		previousLen := len(mapping.Spec.ApplicationNames)
+		// createOrUpdate
 		if core_store.IsResourceNotFound(err) {
-			// create if not found
-			mapping.Spec = &mesh_proto.Mapping{
-				Zone:             s.localZone,
-				InterfaceName:    interfaceName,
-				ApplicationNames: newApps,
-			}
-			err = s.resourceManager.Create(s.ctx, mapping, core_store.CreateBy(key), core_store.CreatedAt(time.Now()))
-			if err != nil {
-				log.Error(err, "create Mapping Resource failed")
-				return err
-			}
-
-			log.Info("create Mapping Resource success", "key", key, "applicationNames", newApps)
-			return nil
-		} else {
-			// if found, update it
-			previousLen := len(mapping.Spec.ApplicationNames)
-			previousAppNames := make(map[string]struct{}, previousLen)
 			for _, name := range mapping.Spec.ApplicationNames {
 				previousAppNames[name] = struct{}{}
 			}
-			for _, newApp := range newApps {
-				previousAppNames[newApp] = struct{}{}
-			}
-			if len(previousAppNames) == previousLen {
-				log.Info("Mapping not need to register", "interfaceName", interfaceName, "applicationNames", newApps)
-				return nil
-			}
-
-			mergedApps := make([]string, 0, len(previousAppNames))
-			for name := range previousAppNames {
-				mergedApps = append(mergedApps, name)
-			}
-			mapping.Spec = &mesh_proto.Mapping{
-				Zone:             s.localZone,
-				InterfaceName:    interfaceName,
-				ApplicationNames: mergedApps,
-			}
-
-			err = s.resourceManager.Update(s.ctx, mapping, core_store.ModifiedAt(time.Now()))
-			if err != nil {
-				log.Error(err, "update Mapping Resource failed")
-				return err
-			}
-
-			log.Info("update Mapping Resource success", "key", key, "applicationNames", newApps)
+		}
+		for _, newApp := range newApps {
+			previousAppNames[newApp] = struct{}{}
+		}
+		if len(previousAppNames) == previousLen {
+			log.Info("Mapping not need to register", "interfaceName", interfaceName, "applicationNames", newApps)
 			return nil
 		}
+
+		var mergeApps []string
+		for name := range previousAppNames {
+			mergeApps = append(mergeApps, name)
+		}
+
+		mappingResource := core_mesh.NewMappingResource()
+		mappingResource.SetMeta(&resourceMetaObject{
+			Name: rmkey.GenerateMappingResourceKey(interfaceName, s.systemNamespace),
+			Mesh: core_model.DefaultMesh,
+		})
+		err = mappingResource.SetSpec(mesh_proto.Mapping{
+			Zone:             s.localZone,
+			InterfaceName:    interfaceName,
+			ApplicationNames: mergeApps,
+		})
+		if err != nil {
+			return err
+		}
+		mappingObject, err := s.converter.ToKubernetesObject(mappingResource)
+		if err != nil {
+			return err
+		}
+
+		operationResult, err := kube_controllerutil.CreateOrUpdate(ctx, kubeClient, mappingObject, func() error {
+			if err := kube_controllerutil.SetControllerReference(pod, mappingObject, s.manager.GetScheme()); err != nil {
+				return errors.Wrap(err, "unable to set Metadata's controller reference to Pod")
+			}
+			return nil
+		})
+		if err != nil {
+			if !errors.Is(err, context.Canceled) {
+				log.Error(err, "unable to create/update Metadata", "operationResult", operationResult)
+			}
+
+			return err
+		}
+
+		return nil
 	})
 	if err != nil {
 		log.Error(err, "transactions failed")
diff --git a/pkg/plugins/runtime/universal/plugin.go b/pkg/plugins/runtime/universal/plugin.go
index 4faf05e..4cc05ff 100644
--- a/pkg/plugins/runtime/universal/plugin.go
+++ b/pkg/plugins/runtime/universal/plugin.go
@@ -45,6 +45,7 @@
 		rt.DataplaneCache(),
 		rt.ServiceDiscovery(),
 		rt.EventBus(),
+		rt.Config().Store.Kubernetes.SystemNamespace,
 	); err != nil {
 		logger.Errorf("Failed to subscribe to registry, error msg is %s.", err.Error())
 		return err
diff --git a/pkg/xds/server/components.go b/pkg/xds/server/components.go
index 166e632..87926f5 100644
--- a/pkg/xds/server/components.go
+++ b/pkg/xds/server/components.go
@@ -18,7 +18,6 @@
 package server
 
 import (
-	util_xds "github.com/apache/dubbo-kubernetes/pkg/util/xds"
 	"github.com/pkg/errors"
 )
 
@@ -27,6 +26,7 @@
 	core_model "github.com/apache/dubbo-kubernetes/pkg/core/resources/model"
 	"github.com/apache/dubbo-kubernetes/pkg/core/resources/registry"
 	core_runtime "github.com/apache/dubbo-kubernetes/pkg/core/runtime"
+	util_xds "github.com/apache/dubbo-kubernetes/pkg/util/xds"
 	"github.com/apache/dubbo-kubernetes/pkg/xds/cache/cla"
 	xds_context "github.com/apache/dubbo-kubernetes/pkg/xds/context"
 	v3 "github.com/apache/dubbo-kubernetes/pkg/xds/server/v3"