在大规模微服务场景下,为了建立稳定可靠的业务服务,服务治理能力至关重要。MSE微服务治理中心提供了在大规模场景下的服务治理能力,包含服务查询、标签路由等功能。本文介绍如何通过MSE完成微服务的服务治理。
背景信息
以下以Bookinfo应用为示例,展示MSE微服务的服务治理功能。Bookinfo应用包括ProductPage客户端、Ratings、Reviews V1和Reviews
V2微服务。当ProductPage客户端接受到请求时,将调用Reviews V1和Reviews V2微服务,并在页面的不同区域显示调用Reviews V1和Reviews
V2微服务的结果:
- 调用Reviews V1微服务时,将在Bookinfo页面Review1区域不显示星星。
- 调用Reviews V2微服务时,将在Bookinfo页面Review2区域显示黑白星星。
步骤一:在ASM安装MSE微服务治理组件
- 登录ASM控制台。
- 在左侧导航栏,选择。
- 在网格管理页面,找到待配置的实例,单击实例的名称或在操作列中单击管理。
- 在网关管理详情页面右上方单击功能设置。
- 在功能设置更新面板单击展开高级选项,选中启用MSE微服务治理组件,然后单击确定。
步骤二:为ACK授予MSE治理中心的访问权限
- 使用阿里云账号登录容器服务管理控制台。
- 在控制台左侧导航栏中,单击集群。
- 在集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情。
- 在集群信息页面单击集群资源页签,然后单击Worker RAM角色右侧的链接。
- 在权限管理页签下单击目标权限策略名称。
- 在策略内容页签下单击修改策略内容,并在右侧的修改策略内容面板中将以下内容添加到策略内容中,单击确定。
说明 为保证YAML代码格式的正确性,需在这段代码前添加英文逗号。
{
"Action":"mse:*",
"Resource": "*",
"Effect": "Allow"
}

步骤三:部署演示应用Bookinfo
- 在ACK集群中部署Reviews V1。
- 使用以下内容,创建名为reviews1.yaml的文件。
apiVersion: v1
kind: Service
metadata:
name: reviews
labels:
app: reviews
service: reviews
spec:
ports:
- port: 9080
name: http
selector:
app: reviews
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: bookinfo-reviews
labels:
account: reviews
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: reviews-v1
labels:
app: reviews
version: v1
spec:
replicas: 1
selector:
matchLabels:
app: reviews
version: v1
template:
metadata:
labels:
app: reviews
version: v1
spec:
serviceAccountName: bookinfo-reviews
containers:
- name: reviews
image: docker.io/istio/examples-bookinfo-reviews-v1:1.16.2
imagePullPolicy: IfNotPresent
env:
- name: LOG_DIR
value: "/tmp/logs"
ports:
- containerPort: 9080
volumeMounts:
- name: tmp
mountPath: /tmp
- name: wlp-output
mountPath: /opt/ibm/wlp/output
volumes:
- name: wlp-output
emptyDir: {}
- name: tmp
emptyDir: {}
- 执行以下命令,部署Reviews V1。
kubectl apply -f reviews1.yaml
- 在ACK集群中部署Reviews V2。
- 使用以下内容,创建名为reviews2.yaml的文件。
apiVersion: apps/v1
kind: Deployment
metadata:
name: reviews-v2
labels:
app: reviews
version: v2
spec:
replicas: 1
selector:
matchLabels:
app: reviews
version: v2
template:
metadata:
labels:
app: reviews
version: v2
spec:
serviceAccountName: bookinfo-reviews
containers:
- name: reviews
image: docker.io/istio/examples-bookinfo-reviews-v2:1.16.2
imagePullPolicy: IfNotPresent
env:
- name: LOG_DIR
value: "/tmp/logs"
ports:
- containerPort: 9080
volumeMounts:
- name: tmp
mountPath: /tmp
- name: wlp-output
mountPath: /opt/ibm/wlp/output
volumes:
- name: wlp-output
emptyDir: {}
- name: tmp
emptyDir: {}
- 执行以下命令,部署Reviews V2。
kubectl apply -f reviews2.yaml
- 在ACK集群中部署ProductPage。
- 使用以下内容,创建名为ProductPage.yaml的文件。
apiVersion: v1
kind: Service
metadata:
name: productpage
labels:
app: productpage
service: productpage
spec:
ports:
- port: 9080
name: http
selector:
app: productpage
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: bookinfo-productpage
labels:
account: productpage
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: productpage-v1
labels:
app: productpage
version: v1
spec:
replicas: 1
selector:
matchLabels:
app: productpage
version: v1
template:
metadata:
labels:
app: productpage
version: v1
spec:
serviceAccountName: bookinfo-productpage
containers:
- name: productpage
image: docker.io/istio/examples-bookinfo-productpage-v1:1.16.2
imagePullPolicy: IfNotPresent
ports:
- containerPort: 9080
volumeMounts:
- name: tmp
mountPath: /tmp
volumes:
- name: tmp
emptyDir: {}
- 执行以下命令,部署ProductPage。
kubectl apply -f ProductPage.yaml
- 在ACK集群中部署Ratings。
- 使用以下内容,创建名为ratings.yaml的文件。
apiVersion: v1
kind: Service
metadata:
name: ratings
labels:
app: ratings
service: ratings
spec:
ports:
- port: 9080
name: http
selector:
app: ratings
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: bookinfo-ratings
labels:
account: ratings
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: ratings-v1
labels:
app: ratings
version: v1
spec:
replicas: 1
selector:
matchLabels:
app: ratings
version: v1
template:
metadata:
labels:
app: ratings
version: v1
spec:
serviceAccountName: bookinfo-ratings
containers:
- name: ratings
image: docker.io/istio/examples-bookinfo-ratings-v1:1.16.2
imagePullPolicy: IfNotPresent
ports:
- containerPort: 9080
- 执行以下命令,部署Ratings。
kubectl apply -f ratings.yaml
- 创建Booklinfo外部访问地址。
- 登录容器服务管理控制台。
- 在控制台左侧导航栏中,单击集群。
- 在集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情。
- 在集群管理页面选择。
- 在服务页面单击创建。
- 在创建服务对话框中配置参数,然后单击创建。
以下为重点参数描述,其他参数请参见
管理服务。
- 类型:选择服务访问的方式,本例选择负载均衡和公网访问。
- 关联:选择服务要绑定的后端应用,本例为productpage。
- 端口映射:添加服务端口和容器端口,容器端口需要与后端Pod暴露的容器端口一致,本例为9080。
在服务页面单击目标服务右侧外部端点列下的地址,即可跳转到Bookinfo页面。
步骤四:使用微服务治理功能
查看应用详情
- 登录MSE治理中心控制台。
- 在控制台左侧导航栏选择。
- 在应用列表页面单击应用名称列下的ProductPage。
- 在应用详情页面您可以查看目标应用的应用信息和服务治理信息。
查询服务列表
- 登录MSE治理中心控制台。
- 在控制台左侧导航栏选择。
- 在请选择文本框中选择框架:Istio,然后在服务列表中单击reviews。
- 在服务详情页面查看服务的详细信息。
配置标签路由
- 登录MSE治理中心控制台。
- 在控制台左侧导航栏选择。
- 在标签路由页面单击创建标签路由。
- 在创建标签路由页面设置参数,然后单击确定。

参数 |
描述 |
路由名称 |
标签路由规则名称,例如test-Istio 。
|
描述 |
规则描述。 |
应用 |
选择您的应用名称。 |
流量类型 |
支持按内容路由和按比例路由。
|
框架类型 |
默认为服务网格。
|
流量比例 |
支持手动配置流量比例。本例设置v1流量比例为100%,设置v2流量比例为0。
|
- 查看Bookinfo页面。
多次刷新Bookinfo页面,可以看到Bookinfo应用的Review1区域显示无星星,Review2区域显示无星星。说明访问Bookinfo应用时,只调用了Review1服务,没有调用Review2服务。

在文档使用中是否遇到以下问题
更多建议
匿名提交