多协议管理
更新时间:2025-05-28
概述
本节介绍服务网格CSM支持Dubbo、bRPC等私有协议的相关操作。
使用前提
创建独立网格实例,并且开启支持兼容三方协议按钮。
创建实例
按以下步骤在控制台上创建独立网格实例并且开启多协议支持:
- 登录百度智能云控制台,选择“产品服务 > 云计算 > 容器 > 服务网格 CSM”;
- 在全局概览页面通过“创建实例”按钮进入实例创建页面;
- 在创建服务网格页面,完成基础配置;
- 查看网络列表,如下所示:
部署应用
按以下步骤在CCE集群部署应用:
- 在CSM/注入配置处,给default命名空间开启自动注入;
- 通过CSM页面跳转到CCE集群,部署应用;
- 在工作负载/无状态部署新建测试应用。
测试应用的Yaml文件如下所示:
Plain Text
1apiVersion: v1
2kind: ConfigMap
3metadata:
4 name: dubbo-resolve-config
5data:
6 dubbo-resolve.properties: |-
7 org.apache.dubbo.samples.basic.api.DemoService=dubbo://dubbo-sample-provider:20880
8 org.apache.dubbo.samples.basic.api.TestService=dubbo://dubbo-sample-provider:20880
9 org.apache.dubbo.samples.basic.api.ComplexService=dubbo://dubbo-sample-provider:20880
10 org.apache.dubbo.samples.basic.api.SecondService=dubbo://dubbo-sample-second-provider:20880
11---
12apiVersion: apps/v1
13kind: Deployment
14metadata:
15 name: dubbo-sample-provider-v1
16 labels:
17 app: dubbo-sample-provider
18spec:
19 selector:
20 matchLabels:
21 app: dubbo-sample-provider
22 replicas: 1
23 template:
24 metadata:
25 annotations:
26 sidecar.istio.io/bootstrapOverride: aeraki-bootstrap-config
27 labels:
28 app: dubbo-sample-provider
29 version: v1
30 service_group: user
31 spec:
32 containers:
33 - name: dubbo-sample-provider
34 image: registry.baidubce.com/csm/dubbo-sample-provider:latest
35 ports:
36 - containerPort: 20880
37 volumeMounts:
38 - name: dubbo-resolve-config
39 mountPath: /dubbo-resolve.properties
40 subPath: dubbo-resolve.properties
41 readOnly: true
42 volumes:
43 - name: dubbo-resolve-config
44 configMap:
45 name: dubbo-resolve-config
46---
47apiVersion: apps/v1
48kind: Deployment
49metadata:
50 name: dubbo-sample-provider-v2
51 labels:
52 app: dubbo-sample-provider
53spec:
54 selector:
55 matchLabels:
56 app: dubbo-sample-provider
57 replicas: 1
58 template:
59 metadata:
60 annotations:
61 sidecar.istio.io/bootstrapOverride: aeraki-bootstrap-config
62 labels:
63 app: dubbo-sample-provider
64 version: v2
65 service_group: batchjob
66 spec:
67 containers:
68 - name: dubbo-sample-provider
69 image: registry.baidubce.com/csm/dubbo-sample-provider:latest
70 ports:
71 - containerPort: 20880
72 volumeMounts:
73 - name: dubbo-resolve-config
74 mountPath: /dubbo-resolve.properties
75 subPath: dubbo-resolve.properties
76 readOnly: true
77 volumes:
78 - name: dubbo-resolve-config
79 configMap:
80 name: dubbo-resolve-config
81---
82apiVersion: apps/v1
83kind: Deployment
84metadata:
85 name: dubbo-sample-second-provider
86 labels:
87 app: dubbo-sample-second-provider
88spec:
89 selector:
90 matchLabels:
91 app: dubbo-sample-second-provider
92 replicas: 1
93 template:
94 metadata:
95 annotations:
96 sidecar.istio.io/bootstrapOverride: aeraki-bootstrap-config
97 labels:
98 app: dubbo-sample-second-provider
99 version: v2
100 service_group: batchjob
101 spec:
102 containers:
103 - name: dubbo-sample-second-provider
104 image: registry.baidubce.com/csm/dubbo-sample-second-provider
105 ports:
106 - containerPort: 20880
107---
108apiVersion: apps/v1
109kind: Deployment
110metadata:
111 name: dubbo-sample-consumer
112 labels:
113 app: dubbo-sample-consumer
114spec:
115 selector:
116 matchLabels:
117 app: dubbo-sample-consumer
118 replicas: 1
119 template:
120 metadata:
121 annotations:
122 sidecar.istio.io/bootstrapOverride: aeraki-bootstrap-config
123 labels:
124 app: dubbo-sample-consumer
125 spec:
126 containers:
127 - name: dubbo-sample-consumer
128 image: registry.baidubce.com/csm/dubbo-sample-consumer:latest
129 env:
130 - name: mode
131 value: demo
132 ports:
133 - containerPort: 9009
134 volumeMounts:
135 - name: dubbo-resolve-config
136 mountPath: /dubbo-resolve.properties
137 subPath: dubbo-resolve.properties
138 readOnly: true
139 volumes:
140 - name: dubbo-resolve-config
141 configMap:
142 name: dubbo-resolve-config
143---
144apiVersion: v1
145kind: Service
146metadata:
147 name: dubbo-sample-provider
148spec:
149 selector:
150 app: dubbo-sample-provider
151 ports:
152 - name: tcp-metaprotocol-dubbo
153 protocol: TCP
154 port: 20880
155 targetPort: 20880
- 工作负载如下所示:
- 在CSM/Istio资源管理处下发destinationrule规则。 destinationrule的Yaml文件如下所示:
Plain Text
1apiVersion: networking.istio.io/v1alpha3
2kind: DestinationRule
3metadata:
4 name: dubbo-sample-provider
5spec:
6 host: dubbo-sample-provider.default.svc.cluster.local
7 subsets:
8 - name: v1
9 labels:
10 version: v1
11 - name: v2
12 labels:
13 version: v2
流量验证
- 通过CCE集群中的工作负载查看业务容器中的日志:
从日志中可以得知,consumer请求provider-demo,轮询调用v1与v2版本,符合预期。
- 从CSM/Istio资源管理处下发流量治理策略,全部访问v1版本。
Plain Text
1apiVersion: metaprotocol.aeraki.io/v1alpha1
2kind: MetaRouter
3metadata:
4 name: test-metaprotocol-dubbo-route
5spec:
6 hosts:
7 - dubbo-sample-provider.default.svc.cluster.local
8 routes:
9 - name: v1
10 match:
11 attributes:
12 interface:
13 exact: org.apache.dubbo.samples.basic.api.DemoService
14 method:
15 exact: sayHello
16 foo:
17 exact: bar
18 route:
19 - destination:
20 host: dubbo-sample-provider.default.svc.cluster.local
21 subset: v1
- 通过CCE集群中的工作负载在此查看业务容器中的日志:
从日志中可以得知,consumer请求provider-demo,全部调用v1版本,符合预期。