本文基于ACK、微服务引擎MSE、云原生API网关实现全链路灰度场景,ACK部署服务,MSE nacos做为服务的注册配置中心,云原生API网关做流量的统一入口,结合微服务治理实现全链路灰度。
有应用A、B、C,3个应用都有基线版本,其中A、C有灰度版本,实践全链路灰度应用的情况。

前提条件
- 已经创建ACK集群
- 已经创建MSE nacos实例
- 已经创建云原生API网关实例
- 已经开通微服务治理
操作步骤
1. 部署spring cloud服务
- 创建命名空间
mse-demo
,服务部署在此命名空间下。
kubectl create ns mse-demo
- 复制如下YAML文件内容,部署A、B、C三个应用的基线版本。
代码中的{nacos server address}需要替换成您创建的MSE Nacos的内网域名,同时需要去掉大括号{}。
# 应用A的基线版本
apiVersion: apps/v1
kind: Deployment
metadata:
name: spring-cloud-a
namespace: mse-demo
spec:
selector:
matchLabels:
app: spring-cloud-a
template:
metadata:
labels:
app: spring-cloud-a
msePilotCreateAppName: spring-cloud-a
msePilotAutoEnable: 'on'
spec:
containers:
- name: spring-cloud-a
image: registry.cn-hangzhou.aliyuncs.com/mse-governance-demo/spring-cloud-a:3.0.1
imagePullPolicy: Always
ports:
- containerPort: 20001
livenessProbe:
tcpSocket:
port: 20001
initialDelaySeconds: 30
periodSeconds: 60
env:
- name: spring.cloud.nacos.discovery.server-addr
value: {nacos server address}
- name: dubbo.registry.address
value: 'nacos://{nacos server address}:8848'
---
# 应用B的基线版本
apiVersion: apps/v1
kind: Deployment
metadata:
name: spring-cloud-b
namespace: mse-demo
spec:
selector:
matchLabels:
app: spring-cl