一站式动态多环境建设案例
问题背景
Aliware
项目测试环境被抢占
开发联调环境不稳定
线上灰度环境的缺乏
方案调研与探索
Aliware
自研 Ribbon 实现
物理隔离(蓝绿发布)
MSE 标签路由+APPSTACK 应用编排(我们的选择)
这两款产品的说明文档见链接 云效应用交付平台 AppStack : https://help.aliyun.com/document_detail/321856.html 阿里云微服务引擎 MSE 全链路灰度 : https://help.aliyun.com/document_detail/170454.html
-
MSE 全链路灰度的重要概念
1. 应用(服务)打标
对照核心示意图,我们发现每个应用都有个(base/gray)的 tag,有了这个 tag,我们才可以根据 tag 定义流量规则。
特定 annotation : alicloud.service.tag=dev1 环境变量: spring.cl oud.nacos.discovery.metadata.version
也有额外增加一个容器环境变量的做法: spring.cloud.nacos.discovery.metadata.version
2. 流量染色/自动染色
3. 标识链路传递
-
阿里云效应用交付 APPSTACK 简述
我们把云效 APPSTACK 引入进来,主要目的是方便开发同学通过白屏的管理方式自助完成 MSE 所需要的配置工作,同时在微服务架构下,我们希望应用进行拆分之后,每个应用都有自己的 owner。
我们的解决方案
Aliware
环境定义
主要场景实施
-
场景一:项目隔离的动态多环境
通过注解 nginx.ingress.kubernetes.io/configuration-snippet 实现, 具体如下: metadata: annotations: nginx.ingress.kubernetes.io/configuration-snippet: proxy_set_header x-mse-tag dev1
-
场景二:规则流量全链路灰度的生产环境
-
场景三:自然流量全链路灰度的生产环境
相关技术原理概要介绍
借事修人