diff --git a/mse-simple-demo/A/Dockerfile b/mse-simple-demo/A/Dockerfile
index 032abfb8..e5ffcb08 100644
--- a/mse-simple-demo/A/Dockerfile
+++ b/mse-simple-demo/A/Dockerfile
@@ -1,6 +1,6 @@
# syntax=docker/dockerfile:1.4
-FROM maven:3-eclipse-temurin-8 as build
+FROM maven:3-eclipse-temurin-17 as build
# copy arthas
COPY --from=hengyunabc/arthas:latest /opt/arthas /opt/arthas
@@ -27,10 +27,10 @@ RUN --mount=type=cache,target=/root/.m2/repository/ \
mvn clean package --batch-mode
-FROM eclipse-temurin:8-jdk
+FROM eclipse-temurin:21-jdk
RUN apt-get update && apt-get install -y \
- vim unzip netcat telnet tcpdump iproute2 lsof \
+ vim unzip netcat-openbsd telnet tcpdump iproute2 lsof \
&& rm -rf /var/lib/apt/lists/*
# copy arthas
diff --git a/mse-simple-demo/A/build.sh b/mse-simple-demo/A/build.sh
index f804335d..1652fdbe 100755
--- a/mse-simple-demo/A/build.sh
+++ b/mse-simple-demo/A/build.sh
@@ -3,7 +3,7 @@
export REGISTRY=${REGISTRY}
export appName=spring-cloud-a
-export VERSION="${VERSION:-3.0.8}"
+export VERSION="${VERSION:-3.0.8-sb3-jdk21}"
set -e
diff --git a/mse-simple-demo/A/pom.xml b/mse-simple-demo/A/pom.xml
index 68c01880..48ed3c5c 100644
--- a/mse-simple-demo/A/pom.xml
+++ b/mse-simple-demo/A/pom.xml
@@ -5,7 +5,7 @@
com.alibabacloud.mse.demo
A
- 3.0.8
+ 3.0.8-sb3-jdk21
jar
A
@@ -14,11 +14,11 @@
UTF-8
UTF-8
- 8
- 2.6.1
- 2021.0.4
- 2.1.1.RELEASE
- 2.7.18
+ 17
+ 3.2.3
+ 2023.0.0
+ 2023.0.0.0-RC1
+ 3.2.11
4.5.2
@@ -80,9 +80,9 @@
- io.springfox
- springfox-boot-starter
- 3.0.0
+ org.springdoc
+ springdoc-openapi-starter-webmvc-ui
+ 2.3.0
@@ -103,10 +103,14 @@
3.12.0
+
+ org.springframework.cloud
+ spring-cloud-loadbalancer
+
+
org.springframework.cloud
spring-cloud-starter-openfeign
- 2.2.5.RELEASE
commons-io
diff --git a/mse-simple-demo/A/src/main/java/com/alibabacloud/mse/demo/a/AApplication.java b/mse-simple-demo/A/src/main/java/com/alibabacloud/mse/demo/a/AApplication.java
index a88fa568..f6fa7650 100644
--- a/mse-simple-demo/A/src/main/java/com/alibabacloud/mse/demo/a/AApplication.java
+++ b/mse-simple-demo/A/src/main/java/com/alibabacloud/mse/demo/a/AApplication.java
@@ -2,7 +2,6 @@
package com.alibabacloud.mse.demo.a;
import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.client.RestTemplateBuilder;
@@ -11,18 +10,18 @@
import org.springframework.context.annotation.Bean;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.web.client.RestTemplate;
-import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
import java.util.Properties;
/**
* @author Jim
*/
@SpringBootApplication
-@EnableSwagger2
@EnableFeignClients
public class AApplication {
@@ -30,19 +29,23 @@ public static void main(String[] args) {
SpringApplication.run(AApplication.class, args);
}
- @Bean
+ @Bean(name = "loadBalancedRestTemplate")
@LoadBalanced
- RestTemplate restTemplate() {
+ RestTemplate loadBalancedRestTemplate() {
return new RestTemplate();
}
+ @Bean(name = "restTemplate")
+ RestTemplate restTemplate() {
+ return new RestTemplateBuilder(rt -> rt.getInterceptors().add((request, body, execution) -> {
+ request.getHeaders().add("Connection", "close");
+ return execution.execute(request, body);
+ })).build();
+ }
+
@Bean(name = "serviceTag")
String serviceTag() {
- String tag = parseServiceTag("/etc/podinfo/labels");
- if (StringUtils.isNotEmpty(tag)) {
- return tag;
- }
- return parseServiceTag("/etc/podinfo/annotations");
+ return parseServiceTag("/etc/podinfo/labels");
}
private String parseServiceTag(String path) {
diff --git a/mse-simple-demo/A/src/main/java/com/alibabacloud/mse/demo/a/AController.java b/mse-simple-demo/A/src/main/java/com/alibabacloud/mse/demo/a/AController.java
index da85a402..afe036a8 100644
--- a/mse-simple-demo/A/src/main/java/com/alibabacloud/mse/demo/a/AController.java
+++ b/mse-simple-demo/A/src/main/java/com/alibabacloud/mse/demo/a/AController.java
@@ -4,9 +4,9 @@
import com.alibabacloud.mse.demo.a.service.FeignClientTest;
import com.alibabacloud.mse.demo.b.service.HelloServiceB;
import com.alibabacloud.mse.demo.b.service.HelloServiceBTwo;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
import org.apache.dubbo.config.annotation.Reference;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
@@ -14,12 +14,11 @@
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.commons.util.InetUtils;
-import org.springframework.http.HttpStatus;
+import org.springframework.http.HttpStatusCode;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;
@@ -31,17 +30,22 @@
import java.util.Map;
import java.util.concurrent.ExecutionException;
-@Api(value = "/", tags = {"入口应用"})
+@Tag(name = "入口应用")
@RestController
class AController {
- private static final Logger log = LoggerFactory.getLogger(AController.class);
+ private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(AController.class);
@Autowired
- private RestTemplate restTemplate;
+ @Qualifier("loadBalancedRestTemplate")
+ private RestTemplate loadBalancedRestTemplate;
@Autowired
private FeignClientTest feignClient;
+ @Autowired
+ @Qualifier("restTemplate")
+ private RestTemplate restTemplate;
+
@Autowired
InetUtils inetUtils;
@@ -78,29 +82,29 @@ private void init() {
}
}
- @ApiOperation(value = "HTTP 全链路灰度入口", tags = {"入口应用"})
+ @Operation(summary = "HTTP 全链路灰度入口", tags = {"入口应用"})
@RequestMapping("/a")
public String a() throws ExecutionException, InterruptedException {
//这是rpc调用的方式
- String result = restTemplate.getForObject("http://sc-B/b", String.class);
+ String result = loadBalancedRestTemplate.getForObject("http://sc-B/b", String.class);
return "A" + serviceTag + "[" + inetUtils.findFirstNonLoopbackAddress().getHostAddress() + "]" +
"[config=" + configValue + "]" + " -> " + result;
}
- @ApiOperation(value = "HTTP 全链路灰度入口 a调用b和c", tags = {"入口应用"})
+ @Operation(summary = "HTTP 全链路灰度入口 a调用b和c", tags = {"入口应用"})
@GetMapping("/a2bc")
public String a2bc() throws ExecutionException, InterruptedException {
String resultB = "A" + serviceTag + "[" + inetUtils.findFirstNonLoopbackAddress().getHostAddress() + "]" +
- "[config=" + configValue + "]" + " -> " + restTemplate.getForObject("http://sc-B/b", String.class);
+ "[config=" + configValue + "]" + " -> " + loadBalancedRestTemplate.getForObject("http://sc-B/b", String.class);
String resultA = "A" + serviceTag + "[" + inetUtils.findFirstNonLoopbackAddress().getHostAddress() + "]" +
- "[config=" + configValue + "]" + " -> " + restTemplate.getForObject("http://sc-C/c", String.class);
+ "[config=" + configValue + "]" + " -> " + loadBalancedRestTemplate.getForObject("http://sc-C/c", String.class);
return resultA + "\n" + resultB;
}
- @ApiOperation(value = "HTTP 全链路灰度入口 feign", tags = {"入口应用"})
+ @Operation(summary = "HTTP 全链路灰度入口 feign", tags = {"入口应用"})
@GetMapping("/aByFeign")
public String aByFeign() throws ExecutionException, InterruptedException {
@@ -110,12 +114,12 @@ public String aByFeign() throws ExecutionException, InterruptedException {
"[config=" + configValue + "]" + " -> " + result;
}
- @ApiOperation(value = "测试防护规则" , tags = {"流量防护"})
+ @Operation(summary = "测试防护规则", tags = {"流量防护"})
@GetMapping("/flow")
- public String flow() throws ExecutionException, InterruptedException {
+ public String flow() {
- ResponseEntity responseEntity = restTemplate.getForEntity("http://sc-B/flow", String.class);
- HttpStatus status = responseEntity.getStatusCode();
+ ResponseEntity responseEntity = loadBalancedRestTemplate.getForEntity("http://sc-B/flow", String.class);
+ HttpStatusCode status = responseEntity.getStatusCode();
String result = responseEntity.getBody() + " code:" + status.value();
return "A" + serviceTag + "[" + inetUtils.findFirstNonLoopbackAddress().getHostAddress() + "]" +
@@ -123,30 +127,38 @@ public String flow() throws ExecutionException, InterruptedException {
}
- @ApiOperation(value = "测试热点规则", tags = {"流量防护"})
+ @Operation(summary = "测试热点规则", tags = {"流量防护"})
@GetMapping("/params/{hot}")
public String params(@PathVariable("hot") String hot) throws ExecutionException, InterruptedException {
ResponseEntity responseEntity = restTemplate.getForEntity("http://sc-B/params/" + hot, String.class);
- HttpStatus status = responseEntity.getStatusCode();
+ HttpStatusCode status = responseEntity.getStatusCode();
String result = responseEntity.getBody() + " code:" + status.value();
return "A" + serviceTag + "[" + inetUtils.findFirstNonLoopbackAddress().getHostAddress() + "]" +
"[config=" + configValue + "]" + " params:" + hot + " -> " + result;
}
- @ApiOperation(value = "测试隔离规则", tags = { "流量防护"})
+ @Operation(summary = "测试隔离规则", tags = {"流量防护"})
@GetMapping("/isolate")
public String isolate() throws ExecutionException, InterruptedException {
ResponseEntity responseEntity = restTemplate.getForEntity("http://sc-B/isolate", String.class);
- HttpStatus status = responseEntity.getStatusCode();
+ HttpStatusCode status = responseEntity.getStatusCode();
String result = responseEntity.getBody() + " code:" + status.value();
return "A" + serviceTag + "[" + inetUtils.findFirstNonLoopbackAddress().getHostAddress() + "]" +
"[config=" + configValue + "]" + " -> " + result;
}
+
+ @GetMapping("/spring_boot")
+ public String spring_boot() {
+ String result = restTemplate.getForObject("http://sc-b:20002/spring_boot", String.class);
+ return "A" + serviceTag + "[" + inetUtils.findFirstNonLoopbackAddress().getHostAddress() + "]" +
+ " -> " + result;
+ }
+
@GetMapping("/sql")
public String sql(@RequestParam Map allRequestParams) throws UnsupportedEncodingException {
StringBuilder url = new StringBuilder("http://sc-B/sql?");
@@ -162,14 +174,14 @@ public String sql(@RequestParam Map allRequestParams) throws Uns
"[config=" + configValue + "]" + " -> " + result;
}
- @ApiOperation(value = "HTTP 全链路灰度入口", tags = {"入口应用"})
+ @Operation(summary = "HTTP 全链路灰度入口", tags = {"入口应用"})
@GetMapping("/a-zone")
public String aZone() {
return "A" + serviceTag + "[" + currentZone + "]" + " -> " +
- restTemplate.getForObject("http://sc-B/b-zone", String.class);
+ loadBalancedRestTemplate.getForObject("http://sc-B/b-zone", String.class);
}
- @ApiOperation(value = "Dubbo 全链路灰度入口", tags = {"入口应用"})
+ @Operation(summary = "Dubbo 全链路灰度入口", tags = {"入口应用"})
@GetMapping("/dubbo")
public String dubbo(@RequestParam(required = false) String param) {
return "A" + serviceTag + "[" + inetUtils.findFirstNonLoopbackAddress().getHostAddress() + "]" + " -> " +
@@ -177,35 +189,35 @@ public String dubbo(@RequestParam(required = false) String param) {
}
- @ApiOperation(value = "Dubbo 全链路灰度入口", tags = {"入口应用"})
+ @Operation(summary = "Dubbo 全链路灰度入口", tags = {"入口应用"})
@GetMapping("/dubbo2")
- public String dubbo2(@RequestParam Map allRequestParams) {
+ public String dubbo2(@RequestParam Map allRequestParams) {
return "A" + serviceTag + "[" + inetUtils.findFirstNonLoopbackAddress().getHostAddress() + "]" + " -> " +
helloServiceBTwo.hello2(JSON.toJSONString(allRequestParams));
}
- @ApiOperation(value = "Dubbo 限流测试", tags = {"入口应用"})
+ @Operation(summary = "Dubbo 限流测试", tags = {"入口应用"})
@GetMapping("/dubbo-flow")
public String dubbo_flow() {
return "A" + serviceTag + "[" + inetUtils.findFirstNonLoopbackAddress().getHostAddress() + "]" + " -> " +
helloServiceB.hello("A");
}
- @ApiOperation(value = "Dubbo 热点测试", tags = {"入口应用"})
+ @Operation(summary = "Dubbo 热点测试", tags = {"入口应用"})
@GetMapping("/dubbo-params/{hot}")
public String dubbo_params(@PathVariable("hot") String hot) {
return "A" + serviceTag + "[" + inetUtils.findFirstNonLoopbackAddress().getHostAddress() + "]" + " params:" + hot + " -> " +
helloServiceB.hello(hot);
}
- @ApiOperation(value = "Dubbo 隔离测试", tags = {"入口应用"})
+ @Operation(summary = "Dubbo 隔离测试", tags = {"入口应用"})
@GetMapping("/dubbo-isolate")
public String dubbo_isolate() {
return "A" + serviceTag + "[" + inetUtils.findFirstNonLoopbackAddress().getHostAddress() + "]" + " -> " +
helloServiceB.hello("isolate");
}
- @ApiOperation(value = "熔断 rt 测试", tags = {"流量防护"})
+ @Operation(summary = "熔断 rt 测试", tags = {"流量防护"})
@GetMapping("/circuit-breaker-rt")
public String circuit_breaker_rt() throws ExecutionException, InterruptedException {
@@ -215,7 +227,7 @@ public String circuit_breaker_rt() throws ExecutionException, InterruptedExcepti
"[config=" + configValue + "]" + " -> " + result;
}
- @ApiOperation(value = "熔断异常测试" , tags = {"流量防护"})
+ @Operation(summary = "熔断异常测试", tags = {"流量防护"})
@GetMapping("/circuit-breaker-exception")
public String circuit_breaker_exception() throws ExecutionException, InterruptedException {
String result = feignClient.circuit_breaker_exception_b();
@@ -225,21 +237,23 @@ public String circuit_breaker_exception() throws ExecutionException, Interrupted
}
@GetMapping("swagger-demo")
- @ApiOperation(value = "这是一个演示swagger的接口 ", tags = {"首页操作页面"})
- public String swagger(@ApiParam(name = "name", value = "我是姓名", required = true) String name,
- @ApiParam(name = "age", value = "我是年龄", required = true) int age,
- @ApiParam(name = "aliware-products", value = "我是购买阿里云原生产品列表", required = true) List aliwareProducts) {
+ @Operation(summary = "这是一个演示swagger的接口 ", tags = {"首页操作页面"})
+ public String swagger(
+ @Parameter(name = "name", description = "我是姓名", required = true) String name,
+ @Parameter(name = "age", description = "我是年龄", required = true) int age,
+ @Parameter(name = "aliware-products", description = "我是购买阿里云原生产品列表", required = true) List aliwareProducts
+ ) {
return "hello swagger";
}
- @ApiOperation(value = "Dubbo rt 熔断测试", tags = {"入口应用"})
+ @Operation(summary = "Dubbo rt 熔断测试", tags = {"入口应用"})
@GetMapping("/dubbo-circuit-breaker-rt")
public String dubbo_circuit_breaker_rt() {
return "A" + serviceTag + "[" + inetUtils.findFirstNonLoopbackAddress().getHostAddress() + "]" + " -> " +
helloServiceB.slow();
}
- @ApiOperation(value = "Dubbo 异常熔断测试", tags = {"入口应用"})
+ @Operation(summary = "Dubbo 异常熔断测试", tags = {"入口应用"})
@GetMapping("/dubbo-circuit-breaker-exception")
public String dubbo_circuit_breaker_exception() {
String response = "";
diff --git a/mse-simple-demo/A/src/main/java/com/alibabacloud/mse/demo/a/Swagger2Config.java b/mse-simple-demo/A/src/main/java/com/alibabacloud/mse/demo/a/Swagger2Config.java
deleted file mode 100644
index 66abb359..00000000
--- a/mse-simple-demo/A/src/main/java/com/alibabacloud/mse/demo/a/Swagger2Config.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.alibabacloud.mse.demo.a;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
-import springfox.documentation.builders.PathSelectors;
-import springfox.documentation.builders.RequestHandlerSelectors;
-import springfox.documentation.spi.DocumentationType;
-import springfox.documentation.spring.web.plugins.Docket;
-
-/**
- * Swagger2API文档的配置
- */
-@Configuration
-public class Swagger2Config extends WebMvcConfigurationSupport {
-
- @Bean
- public Docket api() {
- return new Docket(DocumentationType.SWAGGER_2)
- .select()
- .apis(RequestHandlerSelectors.any())
- .paths(PathSelectors.any())
- .build();
- }
-
- @Override
- public void addResourceHandlers(ResourceHandlerRegistry registry) {
- registry
- .addResourceHandler("/swagger-ui/**")
- .addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/")
- .resourceChain(false);
- }
-}
diff --git a/mse-simple-demo/A/src/main/java/com/alibabacloud/mse/demo/a/SwaggerBeanPostProcessor.java b/mse-simple-demo/A/src/main/java/com/alibabacloud/mse/demo/a/SwaggerBeanPostProcessor.java
deleted file mode 100644
index 64459812..00000000
--- a/mse-simple-demo/A/src/main/java/com/alibabacloud/mse/demo/a/SwaggerBeanPostProcessor.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package com.alibabacloud.mse.demo.a;
-
-import org.springframework.beans.BeansException;
-import org.springframework.beans.factory.config.BeanPostProcessor;
-import org.springframework.stereotype.Component;
-import org.springframework.util.ReflectionUtils;
-import org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping;
-import springfox.documentation.spring.web.plugins.WebFluxRequestHandlerProvider;
-import springfox.documentation.spring.web.plugins.WebMvcRequestHandlerProvider;
-
-import java.lang.reflect.Field;
-import java.util.List;
-import java.util.stream.Collectors;
-
-@Component
-public class SwaggerBeanPostProcessor implements BeanPostProcessor {
- @Override
- public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
- if (bean instanceof WebMvcRequestHandlerProvider || bean instanceof WebFluxRequestHandlerProvider)
- {
- List handlerMappings = getHandlerMappings(bean);
- customizeSpringfoxHandlerMappings(handlerMappings);
- }
- return bean;
- }
-
- private void customizeSpringfoxHandlerMappings(List mappings) {
- List copy = mappings.stream()
- .filter(mapping -> mapping.getPatternParser() == null)
- .collect(Collectors.toList());
- mappings.clear();
- mappings.addAll(copy);
- }
-
- @SuppressWarnings("unchecked")
- private List getHandlerMappings(Object bean) {
- try {
- Field field = ReflectionUtils.findField(bean.getClass(), "handlerMappings");
- field.setAccessible(true);
- return (List) field.get(bean);
- }
- catch (IllegalArgumentException | IllegalAccessException e) {
- throw new IllegalStateException(e);
- }
- }
-}
\ No newline at end of file
diff --git a/mse-simple-demo/A/src/main/java/com/alibabacloud/mse/demo/a/mq/MqConsumer.java b/mse-simple-demo/A/src/main/java/com/alibabacloud/mse/demo/a/mq/MqConsumer.java
index a562a8c4..2c78c568 100644
--- a/mse-simple-demo/A/src/main/java/com/alibabacloud/mse/demo/a/mq/MqConsumer.java
+++ b/mse-simple-demo/A/src/main/java/com/alibabacloud/mse/demo/a/mq/MqConsumer.java
@@ -10,6 +10,7 @@
import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;
import org.apache.rocketmq.common.message.MessageExt;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.cloud.commons.util.InetUtils;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
@@ -24,7 +25,8 @@ public class MqConsumer implements MessageListenerConcurrently {
private String serviceTag;
- public MqConsumer(RestTemplate restTemplate, InetUtils inetUtils, String serviceTag) {
+ public MqConsumer(
+ @Qualifier("loadBalancedRestTemplate") RestTemplate restTemplate, InetUtils inetUtils, String serviceTag) {
this.restTemplate = restTemplate;
this.inetUtils = inetUtils;
this.serviceTag = serviceTag;
diff --git a/mse-simple-demo/A/src/main/java/com/alibabacloud/mse/demo/a/mq/RocketMqConfiguration.java b/mse-simple-demo/A/src/main/java/com/alibabacloud/mse/demo/a/mq/RocketMqConfiguration.java
index 24e02e6b..cb00ee9d 100644
--- a/mse-simple-demo/A/src/main/java/com/alibabacloud/mse/demo/a/mq/RocketMqConfiguration.java
+++ b/mse-simple-demo/A/src/main/java/com/alibabacloud/mse/demo/a/mq/RocketMqConfiguration.java
@@ -28,6 +28,7 @@ public class RocketMqConfiguration {
private String topic;
@Autowired
+ @Qualifier("loadBalancedRestTemplate")
private RestTemplate restTemplate;
@Autowired
diff --git a/mse-simple-demo/B/Dockerfile b/mse-simple-demo/B/Dockerfile
index fb038b22..fff0a282 100644
--- a/mse-simple-demo/B/Dockerfile
+++ b/mse-simple-demo/B/Dockerfile
@@ -1,6 +1,6 @@
# syntax=docker/dockerfile:1.4
-FROM maven:3-eclipse-temurin-8 as build
+FROM maven:3-eclipse-temurin-17 as build
COPY <
@@ -23,10 +23,10 @@ COPY ./ ./
RUN --mount=type=cache,target=/root/.m2/repository/ \
mvn clean package --batch-mode
-FROM eclipse-temurin:8-jdk
+FROM eclipse-temurin:21-jdk
RUN apt-get update && apt-get install -y \
- vim unzip netcat telnet tcpdump iproute2 lsof \
+ vim unzip netcat-openbsd telnet tcpdump iproute2 lsof \
&& rm -rf /var/lib/apt/lists/*
# copy arthas
diff --git a/mse-simple-demo/B/build.sh b/mse-simple-demo/B/build.sh
index 2c5601fa..0fa93c70 100755
--- a/mse-simple-demo/B/build.sh
+++ b/mse-simple-demo/B/build.sh
@@ -3,7 +3,7 @@
export REGISTRY=${REGISTRY}
export appName=spring-cloud-b
-export VERSION="${VERSION:-3.0.8}"
+export VERSION="${VERSION:-3.0.8-sb3-jdk21}"
set -e
diff --git a/mse-simple-demo/B/pom.xml b/mse-simple-demo/B/pom.xml
index b19f2e89..0699e96b 100644
--- a/mse-simple-demo/B/pom.xml
+++ b/mse-simple-demo/B/pom.xml
@@ -5,7 +5,7 @@
com.alibabacloud.mse.demo
B
- 3.0.8
+ 3.0.8-sb3-jdk21
jar
B
@@ -14,11 +14,11 @@
UTF-8
UTF-8
- 8
- 2.2.0.RELEASE
- Hoxton.SR1
- 2.1.1.RELEASE
- 2.7.18
+ 17
+ 3.1.9
+ 2022.0.5
+ 2022.0.0.0
+ 3.2.11
@@ -41,7 +41,6 @@
io.micrometer
micrometer-registry-prometheus
- 1.3.0
@@ -78,7 +77,7 @@
com.baomidou
mybatis-plus-boot-starter
- 3.5.3
+ 3.5.5
@@ -101,14 +100,17 @@
org.springframework.cloud
- spring-cloud-starter-openfeign
- 2.2.5.RELEASE
+ spring-cloud-loadbalancer
org.springframework.cloud
spring-cloud-starter-openfeign
- 2.2.5.RELEASE
+
+
+ com.alibaba
+ fastjson
+ 1.2.58
diff --git a/mse-simple-demo/B/src/main/java/com/alibabacloud/mse/demo/b/BApplication.java b/mse-simple-demo/B/src/main/java/com/alibabacloud/mse/demo/b/BApplication.java
index 9560be37..9abf5fa9 100644
--- a/mse-simple-demo/B/src/main/java/com/alibabacloud/mse/demo/b/BApplication.java
+++ b/mse-simple-demo/B/src/main/java/com/alibabacloud/mse/demo/b/BApplication.java
@@ -18,7 +18,9 @@
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
+import java.net.InetAddress;
import java.net.URI;
+import java.net.UnknownHostException;
import java.util.Properties;
@SpringBootApplication
@@ -30,19 +32,23 @@ public static void main(String[] args) {
SpringApplication.run(BApplication.class, args);
}
- @Bean
+ @Bean(name = "loadBalancedRestTemplate")
@LoadBalanced
- RestTemplate restTemplate() {
+ RestTemplate loadBalancedRestTemplate() {
return new RestTemplate();
}
+ @Bean(name = "restTemplate")
+ RestTemplate restTemplate() {
+ return new RestTemplateBuilder(rt -> rt.getInterceptors().add((request, body, execution) -> {
+ request.getHeaders().add("Connection", "close");
+ return execution.execute(request, body);
+ })).build();
+ }
+
@Bean(name = "serviceTag")
String serviceTag() {
- String tag = parseServiceTag("/etc/podinfo/labels");
- if (StringUtils.isNotEmpty(tag)) {
- return tag;
- }
- return parseServiceTag("/etc/podinfo/annotations");
+ return parseServiceTag("/etc/podinfo/labels");
}
private String parseServiceTag(String path) {
diff --git a/mse-simple-demo/B/src/main/java/com/alibabacloud/mse/demo/b/BController.java b/mse-simple-demo/B/src/main/java/com/alibabacloud/mse/demo/b/BController.java
index 9c2b4b8b..32955bb8 100644
--- a/mse-simple-demo/B/src/main/java/com/alibabacloud/mse/demo/b/BController.java
+++ b/mse-simple-demo/B/src/main/java/com/alibabacloud/mse/demo/b/BController.java
@@ -12,6 +12,7 @@
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.cloud.commons.util.InetUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
@@ -30,6 +31,11 @@
class BController {
@Autowired
+ @Qualifier("loadBalancedRestTemplate")
+ private RestTemplate loadBalancedRestTemplate;
+
+ @Autowired
+ @Qualifier("restTemplate")
private RestTemplate restTemplate;
@Reference(application = "${dubbo.application.id}", version = "1.2.0")
@@ -68,7 +74,7 @@ private void init() {
public String flow() throws ExecutionException, InterruptedException {
long sleepTime = 5 + RANDOM.nextInt(5);
silentSleep(sleepTime);
- String result = restTemplate.getForObject("http://sc-C/flow", String.class);
+ String result = loadBalancedRestTemplate.getForObject("http://sc-C/flow", String.class);
return "B" + serviceTag + "[" + inetUtils.findFirstNonLoopbackAddress().getHostAddress() + "]" + " sleepTime:" + sleepTime + " -> " + result;
}
@@ -76,7 +82,7 @@ public String flow() throws ExecutionException, InterruptedException {
public String params(@PathVariable("hot") String hot) throws ExecutionException, InterruptedException {
long sleepTime = 5 + RANDOM.nextInt(5);
silentSleep(sleepTime);
- String result = restTemplate.getForObject("http://sc-C/params/" + hot, String.class);
+ String result = loadBalancedRestTemplate.getForObject("http://sc-C/params/" + hot, String.class);
return "B" + serviceTag + "[" + inetUtils.findFirstNonLoopbackAddress().getHostAddress() + "]" + " sleepTime:" + sleepTime + " params:" + hot + " -> " + result;
}
@@ -84,14 +90,14 @@ public String params(@PathVariable("hot") String hot) throws ExecutionException,
public String isolate() throws ExecutionException, InterruptedException {
long sleepTime = 500 + RANDOM.nextInt(5);
silentSleep(sleepTime);
- String result = restTemplate.getForObject("http://sc-C/isolate", String.class);
+ String result = loadBalancedRestTemplate.getForObject("http://sc-C/isolate", String.class);
return "B" + serviceTag + "[" + inetUtils.findFirstNonLoopbackAddress().getHostAddress() + "]" + " sleepTime:" + sleepTime + " -> " + result;
}
@GetMapping("/b")
public String b() {
return "B" + serviceTag + "[" + inetUtils.findFirstNonLoopbackAddress().getHostAddress() + "]" + " -> " +
- restTemplate.getForObject("http://sc-C/c", String.class);
+ loadBalancedRestTemplate.getForObject("http://sc-C/c", String.class);
}
@GetMapping("/bByFeign")
@@ -128,7 +134,13 @@ public String circuit_breaker_exception_b() {
@GetMapping("/b-zone")
public String bZone() {
return "B" + serviceTag + "[" + currentZone + "]" + " -> " +
- restTemplate.getForObject("http://sc-C/c-zone", String.class);
+ loadBalancedRestTemplate.getForObject("http://sc-C/c-zone", String.class);
+ }
+
+ @GetMapping("/spring_boot")
+ public String spring_boot() {
+ return "B" + serviceTag + "[" + inetUtils.findFirstNonLoopbackAddress().getHostAddress() + "]" + " -> " +
+ restTemplate.getForObject("http://sc-c:20003/spring_boot", String.class);
}
@GetMapping("/sql")
diff --git a/mse-simple-demo/C/Dockerfile b/mse-simple-demo/C/Dockerfile
index 0687a403..b9ea16a2 100644
--- a/mse-simple-demo/C/Dockerfile
+++ b/mse-simple-demo/C/Dockerfile
@@ -1,6 +1,6 @@
# syntax=docker/dockerfile:1.4
-FROM maven:3-eclipse-temurin-8 as build
+FROM maven:3-eclipse-temurin-17 as build
COPY <
@@ -23,10 +23,10 @@ COPY ./ ./
RUN --mount=type=cache,target=/root/.m2/repository/ \
mvn clean package --batch-mode
-FROM eclipse-temurin:8-jdk
+FROM eclipse-temurin:21-jdk
RUN apt-get update && apt-get install -y \
- vim unzip netcat telnet tcpdump iproute2 lsof \
+ vim unzip netcat-openbsd telnet tcpdump iproute2 lsof \
&& rm -rf /var/lib/apt/lists/*
# copy arthas
diff --git a/mse-simple-demo/C/build.sh b/mse-simple-demo/C/build.sh
index a8735216..4ecdb9e7 100755
--- a/mse-simple-demo/C/build.sh
+++ b/mse-simple-demo/C/build.sh
@@ -3,7 +3,7 @@
export REGISTRY=${REGISTRY}
export appName=spring-cloud-c
-export VERSION="${VERSION:-3.0.8}"
+export VERSION="${VERSION:-3.0.8-sb3-jdk21}"
set -e
diff --git a/mse-simple-demo/C/pom.xml b/mse-simple-demo/C/pom.xml
index 513d8920..a93814ac 100644
--- a/mse-simple-demo/C/pom.xml
+++ b/mse-simple-demo/C/pom.xml
@@ -5,7 +5,7 @@
com.alibabacloud.mse.demo
C
- 3.0.8
+ 3.0.8-sb3-jdk21
jar
C
@@ -14,11 +14,11 @@
UTF-8
UTF-8
- 8
- 1.5.1.RELEASE
- Edgware.SR2
- 1.5.0.RELEASE
- 2.7.18
+ 17
+ 3.0.13
+ 2022.0.5
+ 2022.0.0.0
+ 3.2.11
4.5.2
@@ -40,7 +40,7 @@
org.projectlombok
lombok
- 1.18.24
+ 1.18.30
@@ -107,6 +107,10 @@
sentinel-core
1.8.7
+
+ io.micrometer
+ micrometer-registry-prometheus
+
diff --git a/mse-simple-demo/C/src/main/java/com/alibabacloud/mse/demo/c/CApplication.java b/mse-simple-demo/C/src/main/java/com/alibabacloud/mse/demo/c/CApplication.java
index 986a3b2f..38a80fa7 100644
--- a/mse-simple-demo/C/src/main/java/com/alibabacloud/mse/demo/c/CApplication.java
+++ b/mse-simple-demo/C/src/main/java/com/alibabacloud/mse/demo/c/CApplication.java
@@ -1,5 +1,6 @@
package com.alibabacloud.mse.demo.c;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.client.RestTemplateBuilder;
@@ -10,6 +11,8 @@
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
import java.util.Properties;
@SpringBootApplication
@@ -35,11 +38,7 @@ RestTemplate restTemplate() {
@Bean(name = "serviceTag")
String serviceTag() {
- String tag = parseServiceTag("/etc/podinfo/labels");
- if (tag != null && !tag.isEmpty()) {
- return tag;
- }
- return parseServiceTag("/etc/podinfo/annotations");
+ return parseServiceTag("/etc/podinfo/labels");
}
private String parseServiceTag(String path) {
diff --git a/mse-simple-demo/SpringCloudGateway/Dockerfile b/mse-simple-demo/SpringCloudGateway/Dockerfile
index c114f30a..0eb7825b 100644
--- a/mse-simple-demo/SpringCloudGateway/Dockerfile
+++ b/mse-simple-demo/SpringCloudGateway/Dockerfile
@@ -1,5 +1,5 @@
# syntax=docker/dockerfile:1.4
-FROM maven:3-eclipse-temurin-8 as build
+FROM maven:3-eclipse-temurin-17 as build
# copy arthas
COPY --from=hengyunabc/arthas:latest /opt/arthas /opt/arthas
@@ -26,10 +26,10 @@ RUN --mount=type=cache,target=/root/.m2/repository/ \
mvn clean package --batch-mode
-FROM eclipse-temurin:8-jdk
+FROM eclipse-temurin:21-jdk
RUN apt-get update && apt-get install -y \
- vim unzip netcat telnet tcpdump iproute2 lsof \
+ vim unzip netcat-openbsd telnet tcpdump iproute2 lsof \
&& rm -rf /var/lib/apt/lists/*
# copy arthas
diff --git a/mse-simple-demo/SpringCloudGateway/build.sh b/mse-simple-demo/SpringCloudGateway/build.sh
index 3a8c3cca..5eb75a77 100755
--- a/mse-simple-demo/SpringCloudGateway/build.sh
+++ b/mse-simple-demo/SpringCloudGateway/build.sh
@@ -2,7 +2,7 @@
export REGISTRY=${REGISTRY}
export appName=spring-cloud-gateway
-export VERSION="${VERSION:-3.0.8}"
+export VERSION="${VERSION:-3.0.8-sb3-jdk21}"
set -e
diff --git a/mse-simple-demo/SpringCloudGateway/pom.xml b/mse-simple-demo/SpringCloudGateway/pom.xml
index 60660cfb..8a1f4b82 100644
--- a/mse-simple-demo/SpringCloudGateway/pom.xml
+++ b/mse-simple-demo/SpringCloudGateway/pom.xml
@@ -4,16 +4,16 @@
com.alibabacloud.mse.demo
SpringCloudGateway
- 3.0.8
+ 3.0.8-sb3-jdk21
jar
UTF-8
UTF-8
- 8
- 2.1.0.RELEASE
- Greenwich.SR3
- 2.1.1.RELEASE
+ 17
+ 3.2.3
+ 2023.0.0
+ 2023.0.0.0-RC1
@@ -37,7 +37,11 @@
io.micrometer
micrometer-registry-prometheus
- 1.1.0
+
+
+
+ org.springframework.cloud
+ spring-cloud-loadbalancer
@@ -47,6 +51,13 @@
org.apache.httpcomponents
httpclient
+ 4.5.14
+
+
+ javax.annotation
+ javax.annotation-api
+ 1.3.2
+ compile
diff --git a/mse-simple-demo/ZuulGateway/Dockerfile b/mse-simple-demo/ZuulGateway/Dockerfile
index 7cb7a323..cca3e1a0 100644
--- a/mse-simple-demo/ZuulGateway/Dockerfile
+++ b/mse-simple-demo/ZuulGateway/Dockerfile
@@ -26,7 +26,7 @@ RUN --mount=type=cache,target=/root/.m2/repository/ \
FROM eclipse-temurin:8-jdk
RUN apt-get update && apt-get install -y \
- vim unzip netcat telnet tcpdump iproute2 lsof \
+ vim unzip netcat-openbsd telnet tcpdump iproute2 lsof \
&& rm -rf /var/lib/apt/lists/*
# copy arthas
diff --git a/mse-simple-demo/ZuulGateway/build.sh b/mse-simple-demo/ZuulGateway/build.sh
index 5aa638dd..61d9702d 100755
--- a/mse-simple-demo/ZuulGateway/build.sh
+++ b/mse-simple-demo/ZuulGateway/build.sh
@@ -3,7 +3,7 @@
export REGISTRY=${REGISTRY}
export appName=spring-cloud-zuul
-export VERSION="${VERSION:-3.0.8}"
+export VERSION="${VERSION:-3.0.8-sb3-jdk21}"
set -e
diff --git a/mse-simple-demo/ZuulGateway/pom.xml b/mse-simple-demo/ZuulGateway/pom.xml
index 449fa1d5..9e14ca30 100644
--- a/mse-simple-demo/ZuulGateway/pom.xml
+++ b/mse-simple-demo/ZuulGateway/pom.xml
@@ -5,7 +5,7 @@
com.alibabacloud.mse.demo
ZuulGateway
- 3.0.8
+ 3.0.8-sb3-jdk21
jar
diff --git a/mse-simple-demo/build.sh b/mse-simple-demo/build.sh
index 64865eeb..780d7a19 100755
--- a/mse-simple-demo/build.sh
+++ b/mse-simple-demo/build.sh
@@ -1,7 +1,7 @@
#!/bin/sh
# Select the correct warehouse prefix
export REGISTRY=${REGISTRY}
-export VERSION="${VERSION:-3.0.8}"
+export VERSION="${VERSION:-3.0.8-sb3-jdk21}"
set -e
diff --git a/mse-simple-demo/helm/mse-simple-demo/Chart.yaml b/mse-simple-demo/helm/mse-simple-demo/Chart.yaml
index 941bb568..7ca3ac6d 100644
--- a/mse-simple-demo/helm/mse-simple-demo/Chart.yaml
+++ b/mse-simple-demo/helm/mse-simple-demo/Chart.yaml
@@ -1,7 +1,7 @@
apiVersion: v2
name: mse-simple-demo
-version: "3.0.8"
-appVersion: "3.0.8"
+version: "3.0.8-sb3-jdk21"
+appVersion: "3.0.8-sb3-jdk21"
home: https://mse.console.aliyun.com/
keywords:
- mse
diff --git a/mse-simple-demo/helm/mse-simple-demo/templates/nacos-server.yaml b/mse-simple-demo/helm/mse-simple-demo/templates/nacos-server.yaml
index 834bc920..c2ceccff 100644
--- a/mse-simple-demo/helm/mse-simple-demo/templates/nacos-server.yaml
+++ b/mse-simple-demo/helm/mse-simple-demo/templates/nacos-server.yaml
@@ -12,6 +12,7 @@ spec:
labels:
msePilotAutoEnable: "off"
app: nacos-server
+ sidecar.istio.io/inject: "false"
spec:
containers:
- name: nacos-server
diff --git a/mse-simple-demo/helm/mse-simple-demo/templates/sc-a-svc.yaml b/mse-simple-demo/helm/mse-simple-demo/templates/sc-a-svc.yaml
new file mode 100644
index 00000000..3b034ae1
--- /dev/null
+++ b/mse-simple-demo/helm/mse-simple-demo/templates/sc-a-svc.yaml
@@ -0,0 +1,13 @@
+apiVersion: v1
+kind: Service
+metadata:
+ name: sc-a
+ namespace: {{ .Release.Namespace }}
+spec:
+ ports:
+ - port: 20001
+ protocol: TCP
+ targetPort: 20001
+ selector:
+ app: spring-cloud-a
+ type: ClusterIP
diff --git a/mse-simple-demo/helm/mse-simple-demo/templates/sc-b-svc.yaml b/mse-simple-demo/helm/mse-simple-demo/templates/sc-b-svc.yaml
new file mode 100644
index 00000000..2a266b61
--- /dev/null
+++ b/mse-simple-demo/helm/mse-simple-demo/templates/sc-b-svc.yaml
@@ -0,0 +1,13 @@
+apiVersion: v1
+kind: Service
+metadata:
+ name: sc-b
+ namespace: {{ .Release.Namespace }}
+spec:
+ ports:
+ - port: 20002
+ protocol: TCP
+ targetPort: 20002
+ selector:
+ app: spring-cloud-b
+ type: ClusterIP
diff --git a/mse-simple-demo/helm/mse-simple-demo/templates/sc-c-svc.yaml b/mse-simple-demo/helm/mse-simple-demo/templates/sc-c-svc.yaml
new file mode 100644
index 00000000..ab12b4f3
--- /dev/null
+++ b/mse-simple-demo/helm/mse-simple-demo/templates/sc-c-svc.yaml
@@ -0,0 +1,13 @@
+apiVersion: v1
+kind: Service
+metadata:
+ name: sc-c
+ namespace: {{ .Release.Namespace }}
+spec:
+ ports:
+ - port: 20003
+ protocol: TCP
+ targetPort: 20003
+ selector:
+ app: spring-cloud-c
+ type: ClusterIP
diff --git a/mse-simple-demo/helm/mse-simple-demo/templates/spring-cloud-a-deployment.yaml b/mse-simple-demo/helm/mse-simple-demo/templates/spring-cloud-a-deployment.yaml
index 2e2bc749..d362ddf9 100644
--- a/mse-simple-demo/helm/mse-simple-demo/templates/spring-cloud-a-deployment.yaml
+++ b/mse-simple-demo/helm/mse-simple-demo/templates/spring-cloud-a-deployment.yaml
@@ -8,6 +8,7 @@ spec:
selector:
matchLabels:
app: spring-cloud-a
+ version: base
strategy:
rollingUpdate:
maxSurge: 100%
@@ -19,6 +20,7 @@ spec:
# msePilotAutoEnable: "on"
msePilotCreateAppName: "spring-cloud-a"
app: "spring-cloud-a"
+ version: base
spec:
containers:
- name: spring-cloud-a
diff --git a/mse-simple-demo/helm/mse-simple-demo/templates/spring-cloud-a-gray-deployment.yaml b/mse-simple-demo/helm/mse-simple-demo/templates/spring-cloud-a-gray-deployment.yaml
index 295ad6e7..a7570d24 100644
--- a/mse-simple-demo/helm/mse-simple-demo/templates/spring-cloud-a-gray-deployment.yaml
+++ b/mse-simple-demo/helm/mse-simple-demo/templates/spring-cloud-a-gray-deployment.yaml
@@ -7,7 +7,7 @@ spec:
replicas: 1
selector:
matchLabels:
- app: spring-cloud-a-gray
+ app: spring-cloud-a
version: gray
strategy:
rollingUpdate:
@@ -20,7 +20,7 @@ spec:
# msePilotAutoEnable: "on"
msePilotCreateAppName: "spring-cloud-a"
alicloud.service.tag: gray
- app: "spring-cloud-a-gray"
+ app: "spring-cloud-a"
version: gray
spec:
containers:
diff --git a/mse-simple-demo/helm/mse-simple-demo/templates/spring-cloud-c-deployment.yaml b/mse-simple-demo/helm/mse-simple-demo/templates/spring-cloud-c-deployment.yaml
index 2f4ea67a..ea99bbd1 100644
--- a/mse-simple-demo/helm/mse-simple-demo/templates/spring-cloud-c-deployment.yaml
+++ b/mse-simple-demo/helm/mse-simple-demo/templates/spring-cloud-c-deployment.yaml
@@ -8,6 +8,7 @@ spec:
selector:
matchLabels:
app: spring-cloud-c
+ version: base
strategy:
rollingUpdate:
maxSurge: 100%
@@ -19,6 +20,7 @@ spec:
# msePilotAutoEnable: "on"
msePilotCreateAppName: "spring-cloud-c"
app: "spring-cloud-c"
+ version: base
spec:
containers:
- name: spring-cloud-c
diff --git a/mse-simple-demo/helm/mse-simple-demo/templates/spring-cloud-c-gray-deployment.yaml b/mse-simple-demo/helm/mse-simple-demo/templates/spring-cloud-c-gray-deployment.yaml
index 76121cd2..060f8bf2 100644
--- a/mse-simple-demo/helm/mse-simple-demo/templates/spring-cloud-c-gray-deployment.yaml
+++ b/mse-simple-demo/helm/mse-simple-demo/templates/spring-cloud-c-gray-deployment.yaml
@@ -7,7 +7,7 @@ spec:
replicas: 1
selector:
matchLabels:
- app: spring-cloud-c-gray
+ app: spring-cloud-c
version: gray
strategy:
rollingUpdate:
@@ -20,7 +20,7 @@ spec:
# msePilotAutoEnable: "on"
msePilotCreateAppName: "spring-cloud-c"
alicloud.service.tag: gray
- app: "spring-cloud-c-gray"
+ app: "spring-cloud-c"
version: gray
spec:
containers:
diff --git a/mse-simple-demo/helm/mse-simple-demo/values.yaml b/mse-simple-demo/helm/mse-simple-demo/values.yaml
index 217de8df..9c331082 100644
--- a/mse-simple-demo/helm/mse-simple-demo/values.yaml
+++ b/mse-simple-demo/helm/mse-simple-demo/values.yaml
@@ -2,7 +2,7 @@
registry: registry.cn-hangzhou.aliyuncs.com/mse-governance-demo/
images:
- version: 3.0.8
+ version: 3.0.8-sb3-jdk21
# 是否启动zuul、springcloud网关
gateway:
diff --git a/mse-simple-demo/istio/destination-rule-all.yaml b/mse-simple-demo/istio/destination-rule-all.yaml
new file mode 100644
index 00000000..cebcdba4
--- /dev/null
+++ b/mse-simple-demo/istio/destination-rule-all.yaml
@@ -0,0 +1,42 @@
+apiVersion: networking.istio.io/v1alpha3
+kind: DestinationRule
+metadata:
+ name: sc-a
+spec:
+ host: sc-a
+ subsets:
+ - name: base
+ labels:
+ version: base
+ - name: gray
+ labels:
+ version: gray
+---
+apiVersion: networking.istio.io/v1alpha3
+kind: DestinationRule
+metadata:
+ name: sc-b
+spec:
+ host: sc-b
+ subsets:
+ - name: base
+ labels:
+ version: base
+ - name: gray
+ labels:
+ version: gray
+
+---
+apiVersion: networking.istio.io/v1alpha3
+kind: DestinationRule
+metadata:
+ name: sc-c
+spec:
+ host: sc-c
+ subsets:
+ - name: base
+ labels:
+ version: base
+ - name: gray
+ labels:
+ version: gray
diff --git a/mse-simple-demo/istio/virtual-service-all-gray.yaml b/mse-simple-demo/istio/virtual-service-all-gray.yaml
new file mode 100644
index 00000000..6a9ec463
--- /dev/null
+++ b/mse-simple-demo/istio/virtual-service-all-gray.yaml
@@ -0,0 +1,25 @@
+apiVersion: networking.istio.io/v1
+kind: VirtualService
+metadata:
+ name: sc-a
+spec:
+ hosts:
+ - sc-a
+ http:
+ - route:
+ - destination:
+ host: sc-a
+ subset: gray
+---
+apiVersion: networking.istio.io/v1
+kind: VirtualService
+metadata:
+ name: sc-c
+spec:
+ hosts:
+ - sc-c
+ http:
+ - route:
+ - destination:
+ host: sc-c
+ subset: gray
diff --git a/mse-simple-demo/mysql/build.sh b/mse-simple-demo/mysql/build.sh
index c05aa45e..1336578d 100755
--- a/mse-simple-demo/mysql/build.sh
+++ b/mse-simple-demo/mysql/build.sh
@@ -2,7 +2,7 @@
export REGISTRY=${REGISTRY}
export appName=demo-mysql
-export VERSION="${VERSION:-3.0.8}"
+export VERSION="${VERSION:-3.0.8-sb3-jdk21}"
set -e
diff --git a/mse-simple-demo/pom.xml b/mse-simple-demo/pom.xml
index 68cd799c..43cab9fa 100644
--- a/mse-simple-demo/pom.xml
+++ b/mse-simple-demo/pom.xml
@@ -5,13 +5,13 @@
4.0.0
- 3.0.8
+ 3.0.8-sb3-jdk21
com.alibabacloud.mse.demo
mse-simple-demo
- 3.0.8
+ 3.0.8-sb3-jdk21
A
B