Merge pull request #233 from sjmshsh/master
k8s mode
diff --git a/app/dubbo-cp/cmd/run.go b/app/dubbo-cp/cmd/run.go
index f168898..d4eb467 100644
--- a/app/dubbo-cp/cmd/run.go
+++ b/app/dubbo-cp/cmd/run.go
@@ -19,6 +19,8 @@
import (
"fmt"
+ "github.com/apache/dubbo-kubernetes/pkg/config/core"
+ "github.com/apache/dubbo-kubernetes/pkg/test"
"time"
)
@@ -31,7 +33,6 @@
"github.com/apache/dubbo-kubernetes/pkg/bufman"
"github.com/apache/dubbo-kubernetes/pkg/config"
dubbo_cp "github.com/apache/dubbo-kubernetes/pkg/config/app/dubbo-cp"
- "github.com/apache/dubbo-kubernetes/pkg/config/core"
"github.com/apache/dubbo-kubernetes/pkg/core/bootstrap"
dubbo_cmd "github.com/apache/dubbo-kubernetes/pkg/core/cmd"
dds_global "github.com/apache/dubbo-kubernetes/pkg/dds/global"
@@ -42,7 +43,6 @@
"github.com/apache/dubbo-kubernetes/pkg/dubbo"
"github.com/apache/dubbo-kubernetes/pkg/hds"
"github.com/apache/dubbo-kubernetes/pkg/intercp"
- "github.com/apache/dubbo-kubernetes/pkg/test"
"github.com/apache/dubbo-kubernetes/pkg/util/os"
dubbo_version "github.com/apache/dubbo-kubernetes/pkg/version"
"github.com/apache/dubbo-kubernetes/pkg/xds"
@@ -100,13 +100,6 @@
"minimim-open-files", minOpenFileLimit)
}
- if rt.GetMode() == core.Test {
- if err := test.Setup(rt); err != nil {
- runLog.Error(err, "unable to set up test")
- return err
- }
- }
-
if err := admin.Setup(rt); err != nil {
runLog.Error(err, "unable to set up admin")
return err
@@ -151,6 +144,13 @@
return err
}
+ if rt.GetMode() == core.Test {
+ if err := test.Setup(rt); err != nil {
+ runLog.Error(err, "unable to set up test")
+ return err
+ }
+ }
+
runLog.Info("starting Control Plane", "version", dubbo_version.Build.Version)
if err := rt.Start(gracefulCtx.Done()); err != nil {
runLog.Error(err, "problem running Control Plane")
diff --git a/conf/dubbo-cp.yaml b/conf/dubbo-cp.yaml
index d61487c..7345448 100644
--- a/conf/dubbo-cp.yaml
+++ b/conf/dubbo-cp.yaml
@@ -15,7 +15,14 @@
# 可选 k8s half universal
deploy_mode: k8s
-mode: test
+# mode: test
+mode: zone
+multizone:
+ zone:
+ globalAddress: grpc://127.0.0.1:5685
+ global:
+ dds:
+ grpcPort: 5685
runtime:
kubernetes:
admissionServer:
diff --git a/pkg/admin/component.go b/pkg/admin/component.go
index abc9757..aefad4b 100644
--- a/pkg/admin/component.go
+++ b/pkg/admin/component.go
@@ -26,7 +26,8 @@
var adminServerLog = core.Log.WithName("admin")
func Setup(rt core_runtime.Runtime) error {
- adminServer := server.NewAdminServer(*rt.Config().Admin).InitHTTPRouter()
+ 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/config/app/dubbo-cp/config.go b/pkg/config/app/dubbo-cp/config.go
index 840a521..f42d02f 100644
--- a/pkg/config/app/dubbo-cp/config.go
+++ b/pkg/config/app/dubbo-cp/config.go
@@ -123,6 +123,14 @@
DelayFullResync bool `json:"delayFullResync" envconfig:"DUBBO_EXPERIMENTAL_KDS_EVENT_BASED_WATCHDOG_DELAY_FULL_RESYNC"`
}
+func DefaultEventBasedWatchdog() DDSEventBasedWatchdog {
+ return DDSEventBasedWatchdog{
+ FlushInterval: config_types.Duration{Duration: 5 * time.Second},
+ FullResyncInterval: config_types.Duration{Duration: 1 * time.Minute},
+ DelayFullResync: false,
+ }
+}
+
func (c Config) IsFederatedZoneCP() bool {
return c.Mode == core.Zone && c.Multizone.Zone.GlobalAddress != "" && c.Multizone.Zone.Name != ""
}
@@ -151,22 +159,23 @@
var DefaultConfig = func() Config {
return Config{
- BootstrapServer: bootstrap.DefaultBootstrapServerConfig(),
- DeployMode: core.UniversalMode,
- Mode: core.Zone,
- XdsServer: xds.DefaultXdsServerConfig(),
- Store: store.DefaultStoreConfig(),
- Runtime: runtime.DefaultRuntimeConfig(),
- Bufman: bufman.DefaultBufmanConfig(),
- General: DefaultGeneralConfig(),
- Defaults: DefaultDefaultsConfig(),
- Multizone: multizone.DefaultMultizoneConfig(),
- Diagnostics: diagnostics.DefaultDiagnosticsConfig(),
- DpServer: dp_server.DefaultDpServerConfig(),
- Admin: admin.DefaultAdminConfig(),
- InterCp: intercp.DefaultInterCpConfig(),
- DubboConfig: dubbo.DefaultServiceNameMappingConfig(),
- EventBus: eventbus.Default(),
+ BootstrapServer: bootstrap.DefaultBootstrapServerConfig(),
+ DeployMode: core.UniversalMode,
+ Mode: core.Zone,
+ XdsServer: xds.DefaultXdsServerConfig(),
+ Store: store.DefaultStoreConfig(),
+ Runtime: runtime.DefaultRuntimeConfig(),
+ Bufman: bufman.DefaultBufmanConfig(),
+ General: DefaultGeneralConfig(),
+ Defaults: DefaultDefaultsConfig(),
+ Multizone: multizone.DefaultMultizoneConfig(),
+ 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/multizone/multicluster.go b/pkg/config/multizone/multicluster.go
index 1ed14eb..57b243a 100644
--- a/pkg/config/multizone/multicluster.go
+++ b/pkg/config/multizone/multicluster.go
@@ -53,8 +53,16 @@
func DefaultGlobalConfig() *GlobalConfig {
return &GlobalConfig{
DDS: &DdsServerConfig{
- GrpcPort: 5685,
- RefreshInterval: config_types.Duration{Duration: 1 * time.Second},
+ GrpcPort: 5685,
+ RefreshInterval: config_types.Duration{Duration: 1 * time.Second},
+ ZoneInsightFlushInterval: config_types.Duration{Duration: 10 * time.Second},
+ TlsEnabled: false,
+ MaxMsgSize: 10 * 1024 * 1024,
+ MsgSendTimeout: config_types.Duration{Duration: 60 * time.Second},
+ TlsMinVersion: "TLSv1_2",
+ TlsCipherSuites: []string{},
+ NackBackoff: config_types.Duration{Duration: 5 * time.Second},
+ DisableSOTW: false,
},
}
}
@@ -89,6 +97,12 @@
GlobalAddress: "",
Name: "default",
DisableOriginLabelValidation: false,
+ DDS: &DdsClientConfig{
+ RefreshInterval: config_types.Duration{Duration: 1 * time.Second},
+ MaxMsgSize: 10 * 1024 * 1024,
+ MsgSendTimeout: config_types.Duration{Duration: 60 * time.Second},
+ NackBackoff: config_types.Duration{Duration: 5 * time.Second},
+ },
}
}
diff --git a/pkg/core/managers/apis/dataplane/dataplane_manager.go b/pkg/core/managers/apis/dataplane/dataplane_manager.go
index 2f4a56b..f3feb71 100644
--- a/pkg/core/managers/apis/dataplane/dataplane_manager.go
+++ b/pkg/core/managers/apis/dataplane/dataplane_manager.go
@@ -31,7 +31,6 @@
mesh_proto "github.com/apache/dubbo-kubernetes/api/mesh/v1alpha1"
config_core "github.com/apache/dubbo-kubernetes/pkg/config/core"
"github.com/apache/dubbo-kubernetes/pkg/core"
- "github.com/apache/dubbo-kubernetes/pkg/core/logger"
core_mesh "github.com/apache/dubbo-kubernetes/pkg/core/resources/apis/mesh"
core_manager "github.com/apache/dubbo-kubernetes/pkg/core/resources/manager"
core_model "github.com/apache/dubbo-kubernetes/pkg/core/resources/model"
@@ -69,11 +68,7 @@
if err != nil {
return err
}
- options := core_store.NewGetOptions(opts...)
- if options.Labels[mesh_proto.Application] == "" || options.Labels[mesh_proto.Revision] == "" {
- logger.Sugar().Error("需要携带application和revision才能查询")
- return nil
- }
+
if err := m.store.Get(ctx, dataplane, opts...); err != nil {
return err
}
diff --git a/pkg/dds/global/components.go b/pkg/dds/global/components.go
index 60f7d87..d568e4b 100644
--- a/pkg/dds/global/components.go
+++ b/pkg/dds/global/components.go
@@ -142,7 +142,7 @@
return err
}
}
- return rt.Add(component.NewResilientComponent(ddsDeltaGlobalLog.WithName("dds-mux-client"), mux.NewServer(
+ return rt.Add(mux.NewServer(
rt.DDSContext().GlobalServerFilters,
rt.DDSContext().ServerStreamInterceptors,
rt.DDSContext().ServerUnaryInterceptor,
@@ -166,7 +166,7 @@
rt.Extensions(),
rt.EventBus(),
),
- )))
+ ))
}
func createZoneIfAbsent(ctx context.Context, log logr.Logger, name string, resManager core_manager.ResourceManager) error {
diff --git a/pkg/dds/mux/client.go b/pkg/dds/mux/client.go
index 5e12d4c..4723ce5 100644
--- a/pkg/dds/mux/client.go
+++ b/pkg/dds/mux/client.go
@@ -143,7 +143,7 @@
func (c *client) startGlobalToZoneSync(ctx context.Context, log logr.Logger, conn *grpc.ClientConn, errorCh chan error) {
kdsClient := mesh_proto.NewDDSSyncServiceClient(conn)
log = log.WithValues("rpc", "global-to-zone")
- log.Info("initializing Kuma Discovery Service (KDS) stream for global to zone sync of resources with delta xDS")
+ log.Info("initializing Dubbo Discovery Service (DDS) stream for global to zone sync of resources with delta xDS")
stream, err := kdsClient.GlobalToZoneSync(ctx)
if err != nil {
errorCh <- err
@@ -157,7 +157,7 @@
func (c *client) startZoneToGlobalSync(ctx context.Context, log logr.Logger, conn *grpc.ClientConn, errorCh chan error) {
kdsClient := mesh_proto.NewDDSSyncServiceClient(conn)
log = log.WithValues("rpc", "zone-to-global")
- log.Info("initializing Kuma Discovery Service (KDS) stream for zone to global sync of resources with delta xDS")
+ log.Info("initializing Dubbo Discovery Service (DDS) stream for zone to global sync of resources with delta xDS")
stream, err := kdsClient.ZoneToGlobalSync(ctx)
if err != nil {
errorCh <- err
diff --git a/pkg/dubbo/pusher/pusher.go b/pkg/dubbo/pusher/pusher.go
index f3aa079..e8427e9 100644
--- a/pkg/dubbo/pusher/pusher.go
+++ b/pkg/dubbo/pusher/pusher.go
@@ -19,6 +19,7 @@
import (
"context"
+ "github.com/apache/dubbo-kubernetes/pkg/core/resources/registry"
"reflect"
"time"
)
@@ -72,6 +73,7 @@
eventBus: eventBus,
newFullResyncTicker: newFullResyncTicker,
resourceTypes: make(map[core_model.ResourceType]struct{}),
+ resourceLastPushed: make(map[core_model.ResourceType]core_model.ResourceList),
resourceRevisions: make(map[core_model.ResourceType]revision),
resourceChangedEventListeners: make(map[core_model.ResourceType]events.Listener),
eventsChannel: make(chan *changedEvent, eventsChannelSize),
@@ -152,8 +154,12 @@
return nil
case ce := <-p.eventsChannel:
log.Info("event received", "ResourceType", ce.resourceType)
- var resourceList core_model.ResourceList
- err := p.resourceManager.List(ctx, resourceList)
+ resourceList, err := registry.Global().NewList(ce.resourceType)
+ if err != nil {
+ log.Info("can not get resourceList")
+ continue
+ }
+ err = p.resourceManager.List(ctx, resourceList)
if err != nil {
log.Error(err, "list resource failed", "ResourceType", ce.resourceType)
continue
diff --git a/pkg/plugins/resources/k8s/store.go b/pkg/plugins/resources/k8s/store.go
index 4d09b54..c6c8e0a 100644
--- a/pkg/plugins/resources/k8s/store.go
+++ b/pkg/plugins/resources/k8s/store.go
@@ -19,6 +19,7 @@
import (
"context"
+ "github.com/apache/dubbo-kubernetes/pkg/core/logger"
"strings"
"time"
)
@@ -99,7 +100,9 @@
if err := s.Client.Create(ctx, obj); err != nil {
if kube_apierrs.IsAlreadyExists(err) {
- return store.ErrorResourceAlreadyExists(r.Descriptor().Name, opts.Name, opts.Mesh)
+ // 如果资源已经存在了就直接返回空即可
+ logger.Sugar().Warn("资源已经存在了")
+ return nil
}
return errors.Wrap(err, "failed to create k8s resource")
}
diff --git a/pkg/plugins/resources/traditional/store.go b/pkg/plugins/resources/traditional/store.go
index 56cae11..721d87e 100644
--- a/pkg/plugins/resources/traditional/store.go
+++ b/pkg/plugins/resources/traditional/store.go
@@ -20,6 +20,7 @@
import (
"context"
"fmt"
+ "github.com/dubbogo/go-zookeeper/zk"
"sync"
)
@@ -47,7 +48,6 @@
core_model "github.com/apache/dubbo-kubernetes/pkg/core/resources/model"
"github.com/apache/dubbo-kubernetes/pkg/core/resources/store"
"github.com/apache/dubbo-kubernetes/pkg/events"
- "github.com/apache/dubbo-kubernetes/pkg/plugins/util/ccache"
)
const (
@@ -555,9 +555,7 @@
switch resource.Descriptor().Name {
case mesh.DataplaneType:
- app := opts.Labels[mesh_proto.Application]
- revision := opts.Labels[mesh_proto.Revision]
- key := ccache.GetDataplaneKey(app, revision)
+ key := opts.Name
value, ok := c.dCache.Load(key)
if !ok {
return nil
@@ -649,8 +647,12 @@
key := opts.Name
set, err := c.metadataReport.GetServiceAppMapping(key, mappingGroup, nil)
if err != nil {
+ if errors.Is(err, zk.ErrNoNode) {
+ return nil
+ }
return err
}
+
meta := &resourceMetaObject{
Name: opts.Name,
Mesh: opts.Mesh,
@@ -669,9 +671,9 @@
Mesh: opts.Mesh,
})
case mesh.MetaDataType:
- labels := opts.Labels
- revision := labels[mesh_proto.Revision]
- app := labels[mesh_proto.Application]
+ name := opts.Name
+ // 拆分name得到revision和app
+ app, revision := splitAppAndRevision(name)
if revision == "" {
children, err := c.regClient.GetChildren(getMetadataPath(app))
if err != nil {
diff --git a/pkg/plugins/resources/traditional/path_util.go b/pkg/plugins/resources/traditional/utils.go
similarity index 90%
rename from pkg/plugins/resources/traditional/path_util.go
rename to pkg/plugins/resources/traditional/utils.go
index 4f9cb08..999d240 100644
--- a/pkg/plugins/resources/traditional/path_util.go
+++ b/pkg/plugins/resources/traditional/utils.go
@@ -19,6 +19,7 @@
import (
"fmt"
+ "strings"
)
func GenerateCpGroupPath(resourceName string, name string) string {
@@ -66,3 +67,10 @@
}
return rootDir
}
+
+func splitAppAndRevision(name string) (app string, revision string) {
+ split := strings.Split(name, "-")
+ n := len(split)
+ app = strings.Replace(name, "-"+split[n-1], "", -1)
+ return app, split[n-1]
+}
diff --git a/pkg/plugins/resources/traditional/utils_test.go b/pkg/plugins/resources/traditional/utils_test.go
new file mode 100644
index 0000000..c5593ca
--- /dev/null
+++ b/pkg/plugins/resources/traditional/utils_test.go
@@ -0,0 +1,28 @@
+/*
+ * 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 traditional
+
+import "testing"
+
+func TestSplitAppAndRevision(t *testing.T) {
+ name := "dubbo-springboot-demo-lixinyang-bdc0958191bba7a0f050a32709ee1111"
+ app, revision := splitAppAndRevision(name)
+ if app != "dubbo-springboot-demo-lixinyang" && revision != "bdc0958191bba7a0f050a32709ee1111" {
+ t.Error("解析错误")
+ }
+}
diff --git a/pkg/plugins/runtime/k8s/controllers/pod_controller.go b/pkg/plugins/runtime/k8s/controllers/pod_controller.go
index 66407f6..a838de1 100644
--- a/pkg/plugins/runtime/k8s/controllers/pod_controller.go
+++ b/pkg/plugins/runtime/k8s/controllers/pod_controller.go
@@ -117,6 +117,14 @@
}
func (r *PodReconciler) reconcileDataplane(ctx context.Context, pod *kube_core.Pod, log logr.Logger) error {
+ ns := kube_core.Namespace{}
+ if err := r.Client.Get(ctx, kube_types.NamespacedName{Name: pod.Namespace}, &ns); err != nil {
+ return errors.Wrap(err, "unable to get Namespace for Pod")
+ }
+ if ns.Status.Phase == kube_core.NamespaceTerminating {
+ r.Log.V(1).Info("namespace is terminating. Ignoring reconciliation")
+ return nil
+ }
dp := &mesh_k8s.Dataplane{
ObjectMeta: kube_meta.ObjectMeta{Name: pod.Name, Namespace: pod.Namespace},
}
@@ -131,11 +139,6 @@
return r.deleteObjectIfExist(ctx, dp, "pod was evicted", log)
}
- ns := kube_core.Namespace{}
- if err := r.Client.Get(ctx, kube_types.NamespacedName{Name: pod.Namespace}, &ns); err != nil {
- return errors.Wrap(err, "unable to get Namespace for Pod")
- }
-
services, err := r.findMatchingServices(ctx, pod)
if err != nil {
return err
diff --git a/pkg/test/component.go b/pkg/test/component.go
index d4317cc..466c6f5 100644
--- a/pkg/test/component.go
+++ b/pkg/test/component.go
@@ -19,65 +19,84 @@
import (
mesh_proto "github.com/apache/dubbo-kubernetes/api/mesh/v1alpha1"
- "github.com/apache/dubbo-kubernetes/pkg/config/core"
+ "github.com/apache/dubbo-kubernetes/pkg/core"
"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/core/resources/store"
core_runtime "github.com/apache/dubbo-kubernetes/pkg/core/runtime"
+ "strings"
+ "time"
)
+var testServerLog = core.Log.WithName("test")
+
func Setup(rt core_runtime.Runtime) error {
- if rt.GetDeployMode() == core.KubernetesMode {
- return nil
+ testServer := NewTestServer(rt)
+ if err := rt.Add(testServer); err != nil {
+ testServerLog.Error(err, "fail to start the test server")
}
+ return nil
+}
+
+type TestServer struct {
+ rt core_runtime.Runtime
+}
+
+func NewTestServer(rt core_runtime.Runtime) *TestServer {
+ return &TestServer{rt: rt}
+}
+
+func (t *TestServer) Start(stop <-chan struct{}) error {
// 测试mapping资源
- if err := testMapping(rt); err != nil {
+ if err := testMapping(t.rt); err != nil {
return err
}
// 测试metadata资源
- if err := testMetadata(rt); err != nil {
+ if err := testMetadata(t.rt); err != nil {
return err
}
+
+ time.Sleep(3 * time.Second)
// 测试dataplane资源
- if err := testDataplane(rt); err != nil {
+ if err := testDataplane(t.rt); err != nil {
return err
}
+
return nil
}
+func (a *TestServer) NeedLeaderElection() bool {
+ return false
+}
+
// dataplane资源只有get, list接口, 其余均不支持
func testDataplane(rt core_runtime.Runtime) error {
manager := rt.ResourceManager()
dataplaneResource := mesh.NewDataplaneResource()
- // get
- if err := manager.Get(rt.AppContext(), dataplaneResource, store.GetByApplication("dubbo-springboot-demo-provider"), store.GetByRevision("bdc0958191bba7a0f050a32709ee1262")); err != nil {
- return err
- }
// list
dataplaneList := &mesh.DataplaneResourceList{}
if err := manager.List(rt.AppContext(), dataplaneList); err != nil {
return err
}
+
+ if len(dataplaneList.Items) > 0 {
+ // get
+ if err := manager.Get(rt.AppContext(), dataplaneResource,
+ store.GetBy(core_model.ResourceKey{
+ Name: dataplaneList.Items[0].Meta.GetName(),
+ Mesh: "default",
+ })); err != nil {
+ return err
+ }
+ }
+
return nil
}
// metadata资源没有删除能力
func testMetadata(rt core_runtime.Runtime) error {
manager := rt.ResourceManager()
- metadata1 := mesh.NewMetaDataResource()
- // get
- if err := manager.Get(rt.AppContext(), metadata1, store.GetByApplication("dubbo-springboot-demo-provider")); err != nil {
- return err
- }
-
- // list
- metadataList := &mesh.MetaDataResourceList{}
-
- if err := manager.List(rt.AppContext(), metadataList); err != nil {
- return err
- }
-
// create
metadata2 := mesh.NewMetaDataResource()
err := metadata2.SetSpec(&mesh_proto.MetaData{
@@ -92,12 +111,32 @@
if err != nil {
return err
}
- if err := manager.Create(rt.AppContext(), metadata2); err != nil {
+ if err := manager.Create(rt.AppContext(), metadata2, store.CreateBy(core_model.ResourceKey{
+ Name: metadata2.Spec.App + "-" + metadata2.Spec.Revision,
+ Mesh: "default",
+ })); err != nil {
+ return err
+ }
+
+ metadata1 := mesh.NewMetaDataResource()
+ // get
+ if err := manager.Get(rt.AppContext(), metadata1, store.GetBy(core_model.ResourceKey{
+ Name: metadata2.Spec.App + "-" + metadata2.Spec.Revision,
+ Mesh: "default",
+ })); err != nil {
+ return err
+ }
+
+ // list
+ metadataList := &mesh.MetaDataResourceList{}
+
+ if err := manager.List(rt.AppContext(), metadataList); err != nil {
return err
}
// update
metadata3 := mesh.NewMetaDataResource()
+ metadata3.SetMeta(metadata1.GetMeta())
err = metadata3.SetSpec(&mesh_proto.MetaData{
App: "dubbo-springboot-demo-lixinyang",
Revision: "bdc0958191bba7a0f050a32709ee1111",
@@ -119,14 +158,6 @@
// mapping资源没有删除功能
func testMapping(rt core_runtime.Runtime) error {
manager := rt.ResourceManager()
- // mapping test
- mapping1 := mesh.NewMappingResource()
- // get
- if err := manager.Get(rt.AppContext(), mapping1, store.GetBy(core_model.ResourceKey{
- Name: "org.apache.dubbo.springboot.demo.DemoService",
- })); err != nil {
- return err
- }
mapping2 := mesh.NewMappingResource()
err := mapping2.SetSpec(&mesh_proto.Mapping{
@@ -141,7 +172,20 @@
}
// create
- if err := manager.Create(rt.AppContext(), mapping2); err != nil {
+ if err := manager.Create(rt.AppContext(), mapping2, store.CreateBy(core_model.ResourceKey{
+ Name: strings.ToLower(strings.ReplaceAll(mapping2.Spec.InterfaceName, ".", "-")),
+ Mesh: "default",
+ })); err != nil {
+ return err
+ }
+
+ // mapping test
+ mapping1 := mesh.NewMappingResource()
+ // get
+ if err := manager.Get(rt.AppContext(), mapping1, store.GetBy(core_model.ResourceKey{
+ Name: strings.ToLower(strings.ReplaceAll("org.apache.dubbo.springboot.demo.DemoService1", ".", "-")),
+ Mesh: "default",
+ })); err != nil {
return err
}
@@ -153,6 +197,7 @@
}
mapping3 := mesh.NewMappingResource()
+ mapping3.SetMeta(mapping1.GetMeta())
err = mapping3.SetSpec(&mesh_proto.Mapping{
Zone: "zone2",
InterfaceName: "org.apache.dubbo.springboot.demo.DemoService1",
diff --git a/test/app/consumer/deployment.yaml b/test/app/consumer/deployment.yaml
index ec83ebf..0cf965c 100644
--- a/test/app/consumer/deployment.yaml
+++ b/test/app/consumer/deployment.yaml
@@ -19,7 +19,7 @@
name: dubbo-samples-apiserver-consumer
namespace: dubbo-system
spec:
- replicas: 1
+ replicas: 2
selector:
matchLabels:
app: dubbo-samples-apiserver-consumer