From 0366489c3a376195c11cf9063c6ef021c122a6b8 Mon Sep 17 00:00:00 2001 From: estom Date: Wed, 10 Apr 2024 20:36:29 +0800 Subject: [PATCH] JAVA --- .../03 Mat与OOM.md} | 9 +- .../04 Jmeter压测工具.md | 503 ++++++ Java/Java问题排查和性能优化/06 JVM参数调优.md | 87 + .../image/04Jmeter压测工具/1712477758187.png | Bin 0 -> 190636 bytes temp.yml | 1450 +++++++++++++++++ 5 files changed, 2048 insertions(+), 1 deletion(-) rename Java/{Java面试原理/什么是OOM,怎么解决OOM.md => Java问题排查和性能优化/03 Mat与OOM.md} (95%) create mode 100644 Java/Java问题排查和性能优化/04 Jmeter压测工具.md create mode 100644 Java/Java问题排查和性能优化/06 JVM参数调优.md create mode 100644 Java/Java问题排查和性能优化/image/04Jmeter压测工具/1712477758187.png create mode 100644 temp.yml diff --git a/Java/Java面试原理/什么是OOM,怎么解决OOM.md b/Java/Java问题排查和性能优化/03 Mat与OOM.md similarity index 95% rename from Java/Java面试原理/什么是OOM,怎么解决OOM.md rename to Java/Java问题排查和性能优化/03 Mat与OOM.md index b97e70ee..84c2a6f2 100644 --- a/Java/Java面试原理/什么是OOM,怎么解决OOM.md +++ b/Java/Java问题排查和性能优化/03 Mat与OOM.md @@ -17,6 +17,8 @@ OOM,全称“Out Of Memory”,翻译成中文就是“内存用完了”, 而在Java语言中,由于存在了垃圾自动回收机制,所以,我们一般不用去主动释放不用的对象所占的内存,也就是理论上来说,是不会存在“内存泄露”的。但是,如果编码不当,比如,将某个对象的引用放到了全局的Map中,虽然方法结束了,但是由于垃圾回收器会根据对象的引用情况来回收内存,导致该对象不能被及时的回收。如果该种情况出现次数多了,就会导致内存溢出,比如系统中经常使用的缓存机制。Java中的内存泄露,不同于C++中的忘了delete,往往是逻辑上的原因泄露。 + + # 3.OOM类型 JVM内存模型: @@ -61,4 +63,9 @@ dump堆内存信息后,需要对dump出的文件进行分析,从而找到OOM 涉及到的虚拟机的技术或者工具,往往需要考虑到虚拟机规范以及不同的虚拟机实现。尤其是针对虚拟机调优时,往往需要针对虚拟机在某些方面的实现策略来考虑,比如,不同的虚拟机的垃圾回收算法是不一样的,而这直接影响了虚拟机某些参数的设置,以达到虚拟机的最佳性能。 -而针对JVM运行时的分析与诊断,则需要掌握分析基本方法,针对具体情况,运用虚拟机的原理,具体分析。一句话,水很深啊。 \ No newline at end of file +而针对JVM运行时的分析与诊断,则需要掌握分析基本方法,针对具体情况,运用虚拟机的原理,具体分析。一句话,水很深啊。 + + +## 6. Mat使用简介 + +MAT,全称Memory Analysis Tools,是一款分析Java堆内存的工具,可以快速定位到堆内泄漏问题。该工具提供了两种使用方式,一种是插件版,可以安装到Eclipse使用,另一种是独立版,可以直接解压使用。 \ No newline at end of file diff --git a/Java/Java问题排查和性能优化/04 Jmeter压测工具.md b/Java/Java问题排查和性能优化/04 Jmeter压测工具.md new file mode 100644 index 00000000..f308e117 --- /dev/null +++ b/Java/Java问题排查和性能优化/04 Jmeter压测工具.md @@ -0,0 +1,503 @@ +## 1 为什么性能测试 + +### 概述 + +软件性能测试是一种非功能性测试,其中应用程序的性能在预期或更高负载下进行评估。 +进行性能测试以测量系统的不同性能属性,如响应时间(速度),可靠性,资源使用,可扩展性,各种负载条件下的稳定性等。 + +### 基本功能 + +JMeter也称为“Apache JMeter”,它是一个开源的,100%基于Java的应用程序,带有图形界面。 它旨在分析和衡量Web应用程序和各种服务的性能和负载功能行为。 + +JMeter主要用于测试Web应用程序或FTP应用程序,但目前,它适用于功能测试,JDBC数据库连接,Web服务,通用TCP连接和OS本机进程。 您可以执行各种测试活动,如性能,负载,压力,回归和功能测试,以便针对您的Web服务器获得准确的性能指标。 + +* Web Services - SOAP / XML-RPC +* Web - HTTP, HTTPS sites ‘web 1.0’ web 2.0 (ajax, flex 和 flex-ws-amf) +* 通过JDBC驱动程序的数据库 +* 目录 - LDAP +* 通过JMS面向消息传递的服务 +* 服务 - POP3, IMAP, SMTP + +## 2 使用教程 + +### 基本界面 + +![](https://www.yiibai.com/uploads/images/2018/08/01/171458_22860.png) + +### 核心概念 + +> https://www.yiibai.com/jmeter/build-jmeter-test-plan.html + +* 测试计划(TestPlans) + + * 线程组(Thread Groups) + + * 采样器(Samplers) + * 监听器 + * 配置文件 + * 监听器 + * 配置文件 + * 监听器 + * 配置文件 + +![img](https://www.yiibai.com/uploads/article/2018/08/02/160226_93320.png) + +测试计划:可以将测试计划可视化为用于运行测试的JMeter脚本。测试计划由测试元素组成,例如线程组,逻辑控制器,样本生成控制器,监听器,定时器,断言和配置元素。每个测试计划中至少应有一个线程组。 我们可以根据要求添加或删除元素。 + +* JMeter文件或测试计划以 `.JMX`扩展文件的形式保存。JMX是一种基于开放测试的格式,它使测试计划能够在文本编辑器中启动。 +* “测试计划(Test plan)”节点包含测试计划的名称和用户定义的变量。当您在测试计划的多个部分中有重复值时,可使用用户定义变量,它提供了灵活性。 + +![1712477758187](image/04Jmeter压测工具/1712477758187.png) + +线程组:线程组表示JMeter在测试期间将使用的线程组。 线程组元素是任何测试计划的起点。 + +* 设置线程数。 +* 设置加速期。 +* 设置执行测试的次数。 + +![](https://www.yiibai.com/uploads/images/2018/08/02/170253_30401.png) + +控制器—采样器:采样器是允许JMeter将特定类型的请求发送到服务器的组件。它模拟用户对目标服务器的页面的请求。 + +* 采样器是必须将组件添加到测试计划中的,因为它只能让JMeter知道需要将哪种类型的请求发送到服务器。 请求可以是HTTP,HTTP(s),FTP,TCP,SMTP,SOAP等。 + +![](https://www.yiibai.com/uploads/images/2018/08/02/170925_11078.png) + +控制器-逻辑控制器:逻辑控制器可帮助您控制线程中采样器处理顺序的流程。 它还可以更改来自其子元素的请求的顺序。 + +* 运行时控制器 +* IF控制器 +* 事务控制器 +* 录音控制器 +* 简单控制器 +* while控制器 +* Switch控制器 +* ForEach控制器 +* 模块控制器 +* 包括控制器 +* 循环控制器 +* 仅一次控制器 +* 交错控制器 +* 随机控制器 +* 随机顺序控制器 +* 吞吐量控制器 + +![](https://www.yiibai.com/uploads/images/2018/08/02/171522_14436.png) + +监听器:性能测试就是以各种形式分析服务器响应,然后将其呈现给客户端。当JMeter的采样器组件被执行时,监听器提供JMeter收集的关于那些测试用例的数据的图形表示。它便于用户在某些日志文件中以表格,图形,树或简单文本的形式查看采样器结果。监听器可以在测试的任何地方进行调整,直接包括在测试计划下。JMeter提供了大约15个监听器,但主要使用的是表,树和图形。 + +* 图表结果 +* 样条曲线可视化器 +* 断言结果 +* 简单的数据编写者 +* 监控结果 +* 分布图(alpha) +* 聚合图 +* 梅勒展示台 +* BeanShell监听器 +* 总结报告 +* 示例结果保存配置 +* 图表完整结果 +* 查看结果树 +* 汇总报告 +* 查看表格中的结果 + +![](https://www.yiibai.com/uploads/article/2018/08/02/171858_59718.png) + +配置:配置元素的工作与采样器的工作类似。但是,它不发送请求,但它允许修改采样器发出的请求。这是一个简单的元素,您可以在其中收集所有采样器的关联配置值,如webserver的主机名或数据库URL等。配置元素只能从放置元素的分支内部访问。 + +* Java请求默认值 +* LDAP请求默认值 +* LDAP扩展请求默认值 +* 密钥库配置 +* JDBC连接配置 +* 登录配置元素 +* CSV数据集配置 +* FTP请求默认值 +* TCP采样器配置 +* 用户定义的变量 +* HTTP授权管理器 +* HTTP缓存管理器 +* HTTP Cookie管理器 +* HTTP代理服务器 +* HTTP请求默认值 +* HTTP标头管理器 +* 简单的配置元素 +* 随机变量 + +![](https://www.yiibai.com/uploads/article/2018/08/02/175205_28314.png) + +预处理器元素在采样器发出请求之前执行,如果预处理器附加到采样器元素,那么它将在该采样器元素运行之前执行。 +预处理器元素用于在运行之前修改样本请求的设置,或更新未从响应文本中提取的变量。 +以下是JMeter提供的所有预处理器元素的列表: + +* JDBC预处理器 +* JSR223预处理器 +* RegEx用户参数 +* BeanShell预处理器 +* BSF预处理器 +* HTML链接解析器 +* HTTP URL重写修饰符 +* HTTP用户参数修饰符 +* 用户参数 + +![](https://www.yiibai.com/uploads/images/2018/08/02/175631_46005.png) + +在发出采样器请求之后执行后处理器元素。 如果后处理器连接到Sampler元素,那么它将在该sampler元素运行之后执行。 + +后处理器最常用于处理响应数据,例如,为了将来目的而提取特定值。 + +下面给出了JMeter提供的所有后处理器元素的列表: + +* CSS/JQuery抽取器 +* BeanShell后处理器 +* JSR223后处理器 +* JDBC后处理器 +* 调试后处理器 +* 正则表达式提取器 +* XPath抽取器 +* 结果状态操作处理程序 +* BSF后处理器 + +![](https://www.yiibai.com/uploads/article/2018/08/02/180931_39141.png) + +### 启动命令 + +在服务器上一版使用命令行启动测试脚本。 + +使用命令行启动 JMeter 时,可以通过命令行参数来配置 JMeter 的运行方式,比如设置测试计划文件、日志文件、执行模式以及各种系统属性等。以下是一些常用的 JMeter 命令行启动参数: + +* `-n`:指定 JMeter 以**非图形界面模式**运行,适用于批量运行或分布式测试。 +* `-t [测试计划.jmx]`:指定 JMeter 测试计划文件的路径。 +* `-l [结果文件.jtl]`:指定 JMeter 测试结果的输出文件路径。 +* `-j [日志文件.log]`:指定 JMeter 运行日志的输出文件路径。 +* `-r`:告诉 JMeter 的 Master 连接到定义在 `jmeter.properties` 文件中的远程 Slave 服务器。只有在 `-n` 也被指定时才能使用 `-r`。 +* `-R [逗号分隔的服务器列表]`:指定远程 Slave 服务器的列表,用于分布式测试。如 `-R 192.168.0.1,192.168.0.2`。 +* `-d [目录]`:指定 JMeter 的“起始目录”,即 JMeter 将在该目录下查找用户类路径和插件。 +* `-p [属性文件]`:指定 JMeter 属性文件的路径,通常是 `jmeter.properties` 文件。 +* `-q [额外属性文件]`:指定一个额外的 JMeter 属性文件,可以用于覆盖默认的属性设置。 +* `-J[属性名]=[值]`:直接在命令行中设置某个 JMeter 属性的值,如 `-JthreadNum=10` 设置属性 `threadNum` 的值为 10。 +* `-G[属性名]=[值]`:用于分布式测试,给远程的 Slave 服务器设置全局属性。 +* `-e`:在测试完成后以图形界面模式打开生成的报告分析数据。 +* `-o [输出目录]`:指定输出文件夹,用于存放使用 `-e` 参数生成的 HTML 报告。如果文件夹不存在,JMeter 将会创建它。 +* `-H [代理主机名]` 和 `-P [代理端口]`:配置 JMeter 使用代理服务器,如 `-H my.proxy.server -P 8000` 指定代理服务器。 +* `-u` 和 `-a`:指定订阅和发布的令牌(JMeter 5.0 引入)。 + +典型的启动命令如下 + +jmeter -n -t /path/to/your/testplan.jmx -l /path/to/resultsfile.jtl + +## 3 使用实例 + +web的使用实例: + +https://www.yiibai.com/jmeter/jmeter-web-test-plan.html + +## 4 自定义Jmeter采样器 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
步骤动作
1创建一个Java类并继承AbstractJavaSamplerClient
2实现setupTest方法,用于初始化
3实现runTest方法,用于执行具体的请求
4实现teardownTest方法,用于清理资源
5编译并将生成的jar文件放入JMeter的lib/ext目录下
6在JMeter中创建一个新的线程组
7添加一个Java Request到线程组中,并设置相应的参数
8运行测试,查看结果
+ +#### 步骤 1: 创建一个Java类并继承 `AbstractJavaSamplerClient` + +引入对应的依赖 + +```xml + + org.apache.jmeter + ApacheJMeter_core + 4.0 + + + + org.apache.jmeter + ApacheJMeter_java + 4.0 + +``` + +首先,我们需要创建一个Java类,并继承 `AbstractJavaSamplerClient`。这个类将成为我们自定义Sampler的入口点。 + +1、setupTest 用来做一些初始化的操作,每一线程只会调用该方法一次。 + +2、teardownTest 用来做一些清理的操作,每一线程只会调用该方法一次。 + +3、getDefaultParameters 设置sample的参数以及默认值,这个方法设置的参数会显示在Java request组件的界面上。 + +4、runTest 这个方法就是sample的核心方法,每次迭代都会调用,并且返回SampleResult对象。由于该方法是抽象方法,所以自定的sample一定要实现该方法,其他方法可根据情况选择是否重写。 + +```java +package lym.iflytek.mt_scylla; + +import org.apache.jmeter.config.Arguments; +import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient; +import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext; +import org.apache.jmeter.samplers.SampleResult; + +public class TestSample extends AbstractJavaSamplerClient { + private IatDemo iat;#业务类,具体代码不再贴出来 + + public Arguments getDefaultParameters() { + /* + 这个方法由JMeter调用,添加的Arguments参数会在界面上展示出来,可以设置默认值。 + * */ + Arguments arg = new Arguments(); + arg.addArgument("addr", ""); + arg.addArgument("appid", ""); + arg.addArgument("token", ""); + arg.addArgument("rate", ""); + arg.addArgument("filePath", ""); + arg.addArgument("printLog", "false"); + arg.addArgument("encoding", "utf-8"); + arg.addArgument("costTimeType", "3"); + return arg; + } + + + public void setupTest(JavaSamplerContext context) { + /*进行初始化操作,每一个线程只执行一次*/ + String addr = context.getParameter("addr"); + String appid = context.getParameter("appid"); + String token = context.getParameter("token"); + String rate = context.getParameter("rate"); + String printLog = context.getParameter("printLog"); + String costTimeType = context.getParameter("costTimeType"); + iat = new IatDemo(addr, appid, token, rate, printLog, costTimeType); + System.out.println(Thread.currentThread().getName()+":初始完成"); + + } + + public void teardownTest(JavaSamplerContext context){ + /*做一些清理操作,每个线程只执行一次*/ + try { + iat.UninitializeEx(); + System.out.println(Thread.currentThread().getName()+":逆初始化完成"); + } catch (IflytekException e) { + getNewLogger().error(e.getMessage(), e); + } + } + + public SampleResult runTest(JavaSamplerContext javaSamplerContext) { + /*每次迭代都会调用,并且返回SampleResult对象,该对象保存了每次运行的执行结果*/ + String filePath = javaSamplerContext.getParameter("filePath"); + String encoding = javaSamplerContext.getParameter("encoding"); + String costTimeType = javaSamplerContext.getParameter("costTimeType"); + #SampleResult ,用来保存每次运行的结果,以便JMeter进行数据统计。 + SampleResult sampleResult = new SampleResult(); + #通过参数控制运行时间的统计范围,如果你的业务没那么复杂, + #完全可以在runTest开始时设置开始时间,方法结束时设置结束时间。 + if (costTimeType.equals("1")) { + sampleResult.sampleStart();#设置运行的开始时间 + } + try { + String allresult = iat.start(filePath, sampleResult); + + sampleResult.setSamplerData(filePath);#设置输入数据 + sampleResult.setDataType(SampleResult.TEXT);#设置数据类型 + sampleResult.setResponseData(allresult, encoding);#设置sample接收到的数据 + sampleResult.setSuccessful(true);#设置sample执行结果 + sampleResult.setResponseCodeOK();#设置sample执行状态码 + + } catch (Exception e) { + sampleResult.setSuccessful(false); + sampleResult.setResponseCode("500"); + sampleResult.setResponseMessage(e.getMessage()); + getNewLogger().error(e.getMessage(), e); + } + if (costTimeType.equals("1")) { + #设置运行的结束时间,结束时间-开始时间,就是整个sample的运行时间 + #(JMeter就是用这个时间来计算平均响应时间的)。可以根据实际情况,设置在不同的位置。 + sampleResult.sampleEnd(); + } + + if (sampleResult.getStartTime() == 0) { + sampleResult.sampleStart(); + } + + if (sampleResult.getEndTime() == 0) { + sampleResult.sampleEnd(); + } + return sampleResult; + } + + public static void main(String[] args) { + IflytekSample sample = new IflytekSample(); + Arguments arg = new Arguments(); + arg.addArgument("addr", "192.168.0.1:1234"); + arg.addArgument("appid", "00000000"); + arg.addArgument("token", "11111111"); + arg.addArgument("rate", "41000"); + arg.addArgument("filePath", "1.wav"); + arg.addArgument("printLog", "true"); + arg.addArgument("costTimeType", "2"); + + JavaSamplerContext javaSamplerContext = new JavaSamplerContext(arg); + sample.setupTest(javaSamplerContext); + SampleResult sampleResult = sample.runTest(javaSamplerContext); + System.out.println(sampleResult.getResponseDataAsString()); + sample.teardownTest(javaSamplerContext); + + } + + +``` + +#### 步骤 2: 实现 `setupTest`方法 + +`setupTest`方法在每个线程开始之前执行,用于初始化一些资源或设置。在这个方法中,你可以进行一些预处理的操作。 + +```java +@Override +public void setupTest(JavaSamplerContext context) { + // TODO: 初始化操作 +} +1.2.3.4. +``` + +#### 步骤 3: 实现 `runTest`方法 + +`runTest`方法是实际执行请求的地方。在这个方法中,你可以使用各种HTTP或其他类型的客户端库来发送请求,并处理响应。 + +```java +@Override +public SampleResult runTest(JavaSamplerContext context) { + SampleResult result = new SampleResult(); + result.sampleStart(); // 标记请求的开始时间 + + // TODO: 执行实际的请求操作 + + result.sampleEnd(); // 标记请求的结束时间 + return result; +} +``` + +#### 步骤 4: 实现 `teardownTest`方法 + +`teardownTest`方法在每个线程结束之后执行,用于清理资源或做一些收尾的工作。 + +```java +@Override +public void teardownTest(JavaSamplerContext context) { + // TODO: 清理操作 +} +``` + +#### 步骤 5: 编译并将生成的jar文件放入JMeter的lib/ext目录下 + +完成以上步骤后,我们需要将代码编译成jar文件,并将该文件放入JMeter的lib/ext目录下。这样,JMeter就能够找到并加载我们自定义的Sampler。 + +#### 步骤 6: 在JMeter中创建一个新的线程组 + +在JMeter中,我们需要创建一个新的线程组来运行我们的测试。线程组表示一组并发的用户,可以设置线程数、循环次数等参数。 + +#### 步骤 7: 添加一个 `Java Request`到线程组中,并设置相应的参数 + +在线程组中,我们需要添加一个 `Java Request`。在该请求中,我们需要设置一些参数,例如类名、方法名等,以告诉JMeter我们要运行哪个自定义的Sampler。 + +#### 步骤 8: 运行测试,查看结果 + +最后,我们可以运行测试并查看结果。在结果树中,我们可以看到每个请求的响应时间、错误率等信息。 + +## 5 创建Jmeter集群 + +### 原理 + +1、Jmeter分布式测试时,选择其中一台作为控制机(Controller),其它机器做为代理机(Agent)。 + +2、执行时,Controller会把脚本发送到每台Agent上,Agent 拿到脚本后开始执行,Agent执行时不需要启动Jmeter,只需要把jmeter-server.bat文件打开,它应该是通 过命令行模式来执行的。 + +3、执行后,Agent会把结果回传给Controller,Controller会收集所有Agent的信息并汇总。 + +### Slave配置 + +配置Slave的地址名称。Jmeter/bin/jmeter.properties,找到”remote_hosts=127.0.0.1”,把这一行修改为”remote_hosts=192.168.8.149:1099 + +```properties +# Remote Hosts - comma delimited +remote_hosts=127.0.0.1:1099 +#remote_hosts=localhost:1099,localhost:2010 + +# RMI port to be used by the server (must start rmiregistry with same port) +server_port=1099 +``` + +启动jmeter slave + +```properties +jmeter-server +``` + +### Master配置 + +GUI方式:可以通过配置文件决定连接的remote。Jmeter/bin/jmeter.properties,找到”remote_hosts=127.0.0.1”,把这一行修改为”remote_hosts=192.168.8.149:1099,192.168.8.174:1099,1099是端口号,可以随意自定义。如果有多台代理机,这里需要把所有的代理机的IP地址和端口号都加入进来。 + +```properties +remote_hosts=192.168.8.149:1099,192.168.8.174:1099 +``` + +命令行方式 + +```properties +jmeter -n -t Test.jmx -l test_results.csv -JserverAddr=123 -R remote_host1,remote_host2 +``` + +### 其他问题 + +一个比较标准的参数解决方案如下: + +``` +Jserver.rmi.ssl.disable=true -Jjava.net.preferIPv4Stack=true -Jjava.net.preferIPv6Addresses=false -Jsearch_paths=/home/admin/run +``` + +配置user.properties关闭http用户校验 + +```properties +server.rmi.ssl.disable=true +``` + +配置system.properties中ipv4网络协议 + +```properties +java.net.preferIPv4Stack=true +java.net.preferIPv6Addresses=false +``` diff --git a/Java/Java问题排查和性能优化/06 JVM参数调优.md b/Java/Java问题排查和性能优化/06 JVM参数调优.md new file mode 100644 index 00000000..813fedc2 --- /dev/null +++ b/Java/Java问题排查和性能优化/06 JVM参数调优.md @@ -0,0 +1,87 @@ + +引言 +Jvm(Java虚拟机)是Java语言的基石,对于Java应用的性能至关重要。而Jvm启动参数的优化是提高Java应用性能的一个重要手段。本文将介绍Jvm启动参数的优化和一些示例,帮助开发者更好地理解和优化Jvm的启动参数。 +java启动参数共分为三类; +其一是标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容; +其二是非标准参数(-X),默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容; +其三是非Stable参数(-XX),此类参数各个jvm实现会有所不同,将来可能会随时取消,需要慎重使用; + +Jvm性能优化 +Jvm性能优化是应用开发过程中关注的一个重要方面。通过优化Jvm启动参数,可以显著提升Java应用的性能。以下是一些常见的Jvm性能优化参数: + +-Xms: 指定Jvm的初始堆大小。 +-Xmx: 指定Jvm的最大堆大小。 +-Xmn: 指定Jvm的年轻代堆大小。 +-XX:MaxPermSize: 指定Jvm的永久代(或元空间)大小。 +-XX:SurvivorRatio: 指定Jvm的年轻代中Eden区和Survivor区的比例。 +-XX:+UseParallelGC: 使用并行垃圾回收器。 +-XX:+UseConcMarkSweepGC: 使用并发标记-清除垃圾回收器。 +内存管理 +Jvm的内存管理对于Java应用的性能有着重要的影响。通过合理地管理Jvm的内存,可以避免内存泄漏和过度的垃圾回收。以下是一些与Jvm内存管理相关的启动参数: + +-XX:NewSize: 指定Jvm的年轻代的初始大小。 +-XX:MaxNewSize: 指定Jvm的年轻代的最大大小。 +-XX:NewRatio: 指定Jvm的年轻代和老年代的比例。 +-XX:SurvivorRatio: 指定Jvm的年轻代中Eden区和Survivor区的比例。 +-XX:MaxTenuringThreshold: 指定Jvm对象的年龄阈值。 +垃圾回收 +垃圾回收是Jvm中的重要子系统,对于Java应用的性能和稳定性至关重要。通过选择合适的垃圾回收器和调整相关参数,可以有效提升Jvm的垃圾回收性能。以下是一些与垃圾回收相关的启动参数: + +-XX:+UseSerialGC: 使用串行垃圾回收器。 +-XX:+UseParallelGC: 使用并行垃圾回收器。 +-XX:+UseConcMarkSweepGC: 使用并发标记-清除垃圾回收器。 +-XX:+UseG1GC: 使用G1垃圾回收器。 +-XX:ParallelGCThreads: 指定并行垃圾回收器的线程数。 +-XX:ConcGCThreads: 指定并发垃圾回收器的线程数。 +并发 +并发是现代应用开发中普遍面临的挑战。Jvm提供了多种并发管理的选项,可以通过调整相关参数来优化并发性能。以下是一些与Jvm并发管理相关的启动参数: + +-XX:ParallelGCThreads: 指定并行垃圾回收器的线程数。 +-XX:ConcGCThreads: 指定并发垃圾回收器的线程数。 +-XX:ThreadStackSize: 指定线程的堆栈大小。 +-XX:+UseThreadPriorities: 启用线程优先级。 +-XX:ThreadPriorityPolicy: 指定线程优先级策略。 +示例 +对于小型服务器配置(如2核心4GB内存) +对于小型的服务器配置,如CPU为2核心,内存为4GB的服务器,JVM的配置可以考虑如下: + +java -Xms1024m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m -jar app.jar +1 +其中,参数 -Xms1024m 和 -Xmx1024m 分别表示JVM堆的最小值和最大值都为1024MB。一般情况下,为了避免JVM因为动态调整堆大小产生的性能开销,应该设置 -Xms 和 -Xmx 为相同值。 + +参数 -XX:PermSize=128m 和 -XX:MaxPermSize=256m 分别表示JVM永久代(PermGen)的初始大小为128MB,最大值为256MB。永久代用于存放JVM加载的类和方法等静态数据,如果服务器运行的Java应用需要加载大量的类,就需要增大永久代的大小。 + +对于大型服务器配置 +对于拥有更多CPU和内存的大型服务器,JVM的配置则需要考虑不同的策略。例如,对于一个拥有8核心,16GB内存的服务器,一个合理的JVM配置可能是: + +java -Xms8192m -Xmx8192m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:ParallelGCThreads=8 -XX:+UseConcMarkSweepGC -jar app.jar +1 +在之前的基础上,我们增加了两个新的参数: -XX:ParallelGCThreads=8 和 -XX:+UseConcMarkSweepGC。 + +-XX:ParallelGCThreads=8 表示垃圾回收时的并行线程数为8。由于服务器有8个CPU核心,设置并行线程数为CPU核心数可充分利用CPU资源进行垃圾回收。 + +-XX:+UseConcMarkSweepGC 表示使用CMS(Concurrent Mark Sweep)垃圾收集器。CMS是一款以获取最短回收停顿时间为目标的收集器,适合对响应时间有高要求的服务器。大型服务器应用通常对性能要求较高,因此选择CMS进行垃圾回收是合适的。 + +JVM参数解析 +下面我们对前面提到的一些常用的JVM参数进行更详细的解析。 + +-Xmx 和 -Xms +-Xmx 和 -Xms 分别用于设置JVM堆的最大值和最小值。JVM的堆内存是用于存放Java对象的地方,如果设置得太小,会导致频繁的垃圾回收,影响性能;如果设置得太大,有可能会导致长时间的GC停顿,也会影响性能。因此,需要根据服务的实际需求合理设置堆的大小。 + +-XX:PermSize 和 -XX:MaxPermSize +-XX:PermSize 和 -XX:MaxPermSize 用于设置JVM的永久代大小。永久代用于存放静态文件,如Java类、方法等。如果服务器运行的应用需要加载大量的类,就需要增大这两个参数的值。 + +-XX:ParallelGCThreads +-XX:ParallelGCThreads 用于设置并行垃圾回收器的线程数。这个参数的值一般设置为服务器CPU核心数,这样可以充分利用CPU资源进行垃圾回收。 + +-XX:+UseConcMarkSweepGC +-XX:+UseConcMarkSweepGC 用于启用CMS垃圾回收器。CMS是一种以获取最短回收停顿时间为目标的收集器。大型服务器应用通常对性能要求较高,因此选择CMS进行垃圾回收是合适的。 + +以上就是对JVM启动参数的一些基本介绍和优化策略,希望能够对你有所帮助。记住,无论是什么样的优化策略,都需要通过实际的性能测试来进行验证和调整。 + +欢迎来访我的个人博客网站:http://refblogs.com/ 可以互换友链 +———————————————— + + 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 + +原文链接:https://blog.csdn.net/qq_41389354/article/details/132044864 diff --git a/Java/Java问题排查和性能优化/image/04Jmeter压测工具/1712477758187.png b/Java/Java问题排查和性能优化/image/04Jmeter压测工具/1712477758187.png new file mode 100644 index 0000000000000000000000000000000000000000..da10fb64d315d4109996cad7422765099016080e GIT binary patch literal 190636 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�*10ZWdAud%gx{ejcQMR zDb7BracxK|K>#tLqDE{(i-vEVSh6Luv?on>bFNBgl}L6A_z`+I4uQrROy zQuDH-KNq*#YNtN)$3w%1S7!-WVYf^;nCE!)Mdvw!B%Ae%Tf3#a21I94NL0?j$!y@~ z>ZlS>g!+=VW_+q$VfAsL7>O0cObRqKC85vKo-ueaoaZQXkA5y)6Coz8!}3( z_7HTTWYd6wdlos;X4Ft@N6Feyy>08>!*-^i&DR&Ug;aGc%H6z`|il=n{W5Ui*8=s zewa?p>ged)Snps<6M|+-7s@R>kLXVRzdbNT*7`LSVOYMB71IR(@#E_3tUGdJf<3cX z^rT;FdS%E7&&e;u#Lzc|?2db5uXVGr6xwO%Ff6-u-H~^z3V;ONQ1@Is{nlwum1ut0 zNH-g>h@}1VW&0X2}+PzfliW_njxh zW4~$^2fZ7~#4JF#A!j(MKO#pX32GlA$ITLQFfqON%eoV1JWEDWo{;aqmN5Hvb;I0y zr>x?@`a~kFqxw;Eykt$X``9=CjNboaut#q8zv+4$+^wlOjU`_&sMdx)=8ts9#8LWP zUGW3c&X`=~6IIVcoPTLL(WCq&i+Hs;&s^ZQ!<8Z0=sZo}vFB)K$NRl+8zE5x*i)~5 zGB5@Sq!;TpnJGA)E_%3~+S+7ntSDdvPcyItexltnu^c~+=t#7=V8rh^_Te)3O`Wi` zbFi~>v}p&1rC0w=DrN{OklW3VGmx2ow-8;r+(4y=gvm11vI?!DmsygH3+2p@72_&{ zZ9n}Ku6{fe$kk(~R5!-BZ-cJd&Y;4eU3>gzEAsF-K-C{QBP@i8rki9xBfd_uYcn%8 z&YowRkEo;k*W0j5nwDP&C?liOW8cz5;ky@?&=3C6VRoI~(hc&m!~H&oHu&lq?Uq)6 zdrXv6^~7-}plSY2iab^^4&` z!Oz)Z56`a-D^jx68|P@5g*+V#v-Rg=W#`RrWNee~q@E8$_KNN#tHrdRVTH4=4olsa zD&akj1R=h;u50}Yj7z2-Hny%!Z!je4Z*w8CQ$Ai2A-(fST ztKuFux0E;&XsC9mlKoqy5y~~dAWCv6FB5AaN^>VjRIASD3KOyTLl|$~s9X7S zG9!nv{zS1NAF8*t(^R$yu4Q_*GS5u76hAl?8H1=YWPcmN)GxE&!CM#H|owukUrE>!7A$#xE0<X;x<@=%$)(X5rvK&Nn}l8z zyyawLgFjTvIYVpP1O{t1zMH2;FHTeRW*aOZPt@DuOhkNOy;HgLEU^Ac7#>9Sfo&AlDwLw{-8+f25p9NTWp0H$YRJ)4+zM6edLS=>D zd&h<4cEHwdOpLz#@ye=4j-w?zse6+u0DFWqI;oBc!xG0%ZF6HJMJXrc6Gzd7iu-%m zB0SGbH)FxAa>yaa*Z%oRwZ7^&TvPdw5ebM42$@$uW;ug2Ko_jAS}fN|!%nMbMk1en z_a$%%{QUhYbvKcf&7DugDEpdap48*ivzFo(S2A_V^aw#E;xfG^apxhyiI(DvoiT)! zjgN)XCcv{{aa-2qJ_VSx<-C{81j3|6XJ@9+SX8m%)Nl;NAsRI+@OS4CMk^dfQYITK zN~rY%uhru1ZE`D>B%#DcK`meBr)HIqiF&Vu1;@so1mVzq{i1Tpx2MzirOJs8ER!Np z2O{Yg-`TiMj?2ZsG6AC={YkAw{QPH@3`|RldFTNE>6#-3&%H^J zdgo29dc%Ddv$egVaG*h*yx8+9-34h6a+FImPB%0PLHKz44?If}U1<8!1f)j?*2p*4 z=LaskkOQWBV$7s86Ck%&G)Wqx-F9b;br%mAheG9RzF|!B2SnRFAN?F_T|St|k+y_x z2(~B>)QgW`KHV7uZHzouIT}h=P3gdMbee5S-zs@LD`e+}Hc>{0FfuZxhVE!roc7gp z(59#pr*us`$mG7Gw9|2!oA>rQhiP(B?G+_DyKk@<7^P zRK86{6`*ovXm&Y-LuZC6bXn55c*dKwr)tgveZBJs-VK$2{lU{6m55&ANw1=yt=DqEx&Tnh;9O4^BRnG#{MH(8*3Q1=inhY{V|sj^uv?{r&K!bWamiB3j_9q4J#@#w2h?dp8{W|)9z#Xm zGe?EAp`0$&A;;l5LVWi}?oKf9xi!_tmp7iR=$RI43QMtMvnNDG$~su6=;o$V-tW;b z0e(!P!chg=>0!jGdaBIUo7#DSDNSz~k{FoQD3q6m>D4DCtBAE6NdK20NEPKru8lGEwL@45GtvyiX5C=kesT8?FI)e`ODUgI>YP?gLoGUiGUK3G9bq5Hwm4n|SL(X{gstTa1r$^sd z5ducEh@^-|^$cKYcFwnvxpmz_=k?DMwvZJT>yZ*%g{>rJq&d2|%QY0ggl<^wV)~fA zE}3L=ePM|Tc-bLbkl#I_FdE&3%JS*Lu|y!%oHK`9qOT70La5k&JUn4!>ki z_x6i3&opS7bBa(!x$;9tl5-AFL@Z5IAwx_?n@&#`)#g=`5p)%|UH3*j zWz_xYW#R0v^IGTp>{R_lDRS_XA*L4X}^ zp^2#1Naa&g9{5nD?0ZWGdjuKF4II&pl%ZV#5UJQEu~@DG&y-+4MHQU3)XuZ?U7dmP zggnEx59_hRxSy!_6*6?mp|99>Rq&g{CK&c2DC|3m-3B!85vMjZK`}qiiW=O45{6O7 zybF7_XLkvU2i4tOiXzeR!NiATAmvMOt^1lvmOk6bI$zDprn9l-^mMN>?|QJ&!!_|i zpDP1b%|IyRc(0wS5VZ1eABD->x_97lFwa1GhwJJ_b^CrKr4EMeJh{<6<5o%) zO%0WF#o;AT$IuYWqgmM9yeN0#k82z~*?JMhhAu|q_30jRHj@L3gVY@Y8kOQi-rXZM zx?N)`p{hI+UtV#yHA>A!6r@=yFulsF&^;wpPERht0h=$dUv)sftKTM=jbYV5f(#9!$&=(8m+C-86r2!qddL$5ws8}c9VKO9o#^H^0 zLb0^Ac<1wlT*ZOQPq~u8YG@2^!{^;^*UmC;)XHxx9RwW~7G0EH!Y)4R>422Uh7P`9 zYIt{T<}5ps3OA-L%4T^#MjyzvRk{~gdllInrCNCqX_R>>U5G$s{&uz%47wyci1*UW z!rbsUptURW9qC#ZJb>RuYm|&Qk{{xv%6=3#L2=zg6#iU663Ob}K4Yi3(J~P8^bEFi z47*sdhp1HJVn_8{5N~@m&AWvwdw)#Z0yMgRH#n52bZ;D?ha7B<}{)-dcP zeJn$w}?beD!YEI`T5hZ46L)Jp-64jsSh83H>N@a`$??1`u(w)4^BE z59wbvgYRdX<*M!tc$Qc!E-bFN?kV_`2AXd`?|vx~32JX?Bzx8 z%N|dgjCMEij94g172AfW21^5B0ky3gY`s!3_Nu{NMH<>%EZt|^r-VwNXc|tkSeRLs z7^~jL!*l%AKhDl~$d^28O%V_7kN& z`>U&+0lSFei)HNck?fR;{8W#$A|dfnhYvG-EkdiHFrm)VxuSN3{9?~LPPnPLWgm{Q zw@I`4XeUJmgDZKD)4C1B3vX4re@7}9wO+xdH=Gi0Hzv4RR;qy@gqNjmY{gEt&lV1h zJXaqZ8#QTQ*?Na6%($U1_`)20S4}!S(Pq3iiNAXlKXTjFB;3&>=kc?}-9&E9p(l*7 z^i7>n{gBAJwPw-GMV;km2y;H8S`L7|lU;&@brSthBp+?r)f{d;XOooaMdJS4{6Rzt^h z{APwLabA-lnI(iUmElJP!b!Btl)3EocJ4Aa0kvGTdzi zkLSUo3ZO`C z1oTsOjvmv2?Qf6g&fXeJE6!|;hZvQoMRm6s?Xbs?iWTVQ((xr$oh{4bO44;ETY^|2 zg;}3YXZ-Q=Y^lQQDFGHiJc{unCYGR7UzE!jkGE9Ot zf<1s<_C|aYs@X9nSlOf%yfS5tuY_4(Bv#Kw1On4nl|`Ih;7?p|6ggsBD8n+x_Oezw zKUg-l*2ZMz@%1s>^>AG0Gho{0?jZ0}qTYO6*}-qnA&Q}sDQhNkFe)Kd5X!|TW?AiE zE&v|OB{fw_<(K4^r9Y7vdBtlWI9wTrbN4Mx_8|wG{ntVj&5CGiSx{!Wi%{ODry_H7 z3w)cfF8Y#&`0y|8?Zm8fS*Ik~E~d|lDl5jT3fF{;S}lLCnx*0rObSCiT zbUF`KC@U%{#hy3{(tD%?&?#ugghd`cn^GQV$6{RnN|r7{oaznt(!rlvI_P~b1&tnN zq8)v;WH{Xl8!}ZiJ|>B6Uj5qkv^38!h5J;Cw~ye-$3>^AUbf_-r}+u*JzM9aPKA!{ zQ59NQwjUByG8Sr;P$VbE%U2tO^6Ax7ln>{tahayd?JZlT-Ww_1=M$NDou+v(yv~53 zVc((cyn^$I`Rz*$LuN)w!toQd^1ESsc~z{5kf1vvUZk6iMOc}bhF{{=SHB=PrNbtY zlXR>UU&D783%E+wV4jpthb$}PdBUs?;a|);uLE!z3y{BVS;MD*y*o`_q9g;OlRWfJ2B0N4czLH%L7k)q{;?hGu z@8#d!kv&;|3flg>p)4hEQqh?vR?QwQPt7>d(o*H!5LR8@HLtCnlXuF6yW}BSLQKsm z9?wsD5;2Z7Up1C=zvNXl=e8JJ>jO-dh|283>{-13&jcyqeexfh&gOixax z@_x8la-#i7XXn-UVt9ClQg3E9;>jZ%F6G`^R9@az#pXuMq)B-#jy-B)0 zpf@FhUDF?9F6%r|6(J4otngX-u440E_^QLk<$xgUU$&UAJ-FA<5ZxrF%(}u;B5Sd+ z+2q|9fAVI7>p~K8uS&1ubIa2s%hL|9Q$5O}yeN=bHZ`N)Y2#4mJTbl-NU-m#t?sR= zdK&W1doG@5LsbrF4}zNRC1Js!qppUT`HcZSGL=R{mCSPJx{Sh9lX$I9e<<3k?L zlfhq4uI6dbk&_$_s!Y|$uAGU7u|J}U<}R%6%g1BwF=?ueb3OJXlzq-Q;3T?W9XN`o zLKh29S}La3z)HEq^)b^h5m)l`9bw!vy93AVG6P_1BJNcCYUQNB$ki;#s4x6_2oaqD zrGL2TQJ#F4TMb3YvsNUe51~#b*^>%eO^YEpydLpU}+~w z556j4H;lr$iNQgs;b`G1-HrbX_8RyIO$7B{5~#$}a2}kdHAV`=*O}*k<;^&Zj_Y~M zMh_CS&86AH2zt>!XyIMz;cAYn(-d}~AQ5pFw>Dh6XF4#3s@eiyGfDQz9xOvS=#H&! zE9`8pH`J8Fra{g&c%zmp2vX~rt;yTSmbzd^yiGB+x>z0*xR;&kUav)&>&g8rLm^}G zk>(-0nhxd`@PRa_n$Lr!bM~>OvNhyofu~De1~}UL!%`oK4}QiQ>^G5v$55U0o{4UL z{sHr1v|h>dO_nTumK>4~oQYZQJ}8V{K1tSbv&?$>=uYgUrZQ$}*OpeHaCa)B(SGz;L5 z@$lQhG5A@!h?*}t1Q%gK;uCmin+S;t4}rDF!+I~n5xG%hde?I%j10&jxzR$BjETEVg~QEk=*~x243A8*Flu2aE^2(T=E z5GaYsuHPDR?Fl=7dfDcWLz}s#9Rn8s%I1FxK784^w+4c)0#5|TM@C#`G7%7dxrzi& z%sBUq+(8CuLiGI0si4~G(Dh8_P*b#wW>fL`D z&1+=@5i4O3Sq9p%bmSpK0*;wQcP9Du=9Q5QOXKnUWbUH;|MVOc2PII^++bxCm_6>4lw{|+ z-I&e#-XuAn%T8EL1neuTQGz2(I`G%UQ6FW^#S?zBK)Ad?9`c{vyQzVlN5v)ECRIg9 z@-*H{Ssz|^TGh)j92+qCWrcjCg_MQx=3jh`>t3;G+*6Rf{c%B1U{6@p$+bXLy6M-s zkb)wL_$oy-aqOp#uqRZBiiBD$ za#=W~cF()(193roKo54C(by2PjxmD!cc$t+lPBx>iQ!iUYGl9VUZLAX--TkN$VwRhmoo4$=c&MLU;ci#({yWI` zV_1jpd5;xFt~`T|VEsm9y&eDDB;wtV#(6Jre+_f>8R3!vzfjmxmS$QwJ>6Oc&rfWr zE^BCg;=_~EI~QCoij#8X9M*g~>oKZx(@J_K$({zVvePdTBn{i`T??=0fct&B7@}p> zGF!QG+p+0VnP1b4yFcs5wp#Q?)!we1FghQ*LcJHKjVSS}<63eH2~OE7vGCU&JiE(~ z3-zhic0zog^MI3QT}@YziltjwGtMrHSFj!{Xn6YQ@uy0*6E)H=xpf%{aj?nH-rrYd z?pEpje+xZic&~?^F^G$wV6#(bZL8iMn~Ju z<=5RxjhkF>8X+qy3K_Rbm?*2(AD%y zVNJn3ncS9%*%`HnXpI;v(wvyDAC0Q)k9!O8AFi00PZll7jZDnQ`}pqk65qN+c+lXp zUH+CMmsrrlY}Ft4#9E&(x1gvzt9b+>tTA>N@{qg6h3{QHQSvX3AwHrbjQlPcY{c@i zd^<@|s>^Ap0DesF6PeCcGlEVgNWrzQhoPL?3UvbLi#frFyQ0K;H7!lj+4ou2DYotQ zq1)K`gDXh>!@23U5PRlSfkk;`K~r|eReJ5Ho+T%a;>z9jY^SS@IlzjeS6ojb`Akl6 zn}_Q;+8t@umoZ6E3P)cW4Q;nnpO(_bXF|tVQXftwq?po>(rgS~Yy>yKF2OC|*|xu- zqnX`#{Z-K_?wP)$ZWOy?IXk?r%eR1YS$S!Jzn@UHO7)xLS>#){!M=pjb5}$WvPl7>b51KguSm_ z_i|(*W-04rx^6|p_b4!gp$+p_@l*CGnP7fALcIx$AwxYPUc7p)_p!(=VN#vs*bz5X zH67^ct&>@)W07>vu&oCu;j3y654Ykhbu$ei(+1cwJMy4sbE*w0 z?J0xi4qJHJ3piPqmVFjD9pHI>ZqZvhWvj2NHs-#t1E#QCNCFwPS4R#)jNEuL;ceZC3_k7k9+R#Uw)#Xi6+VeT4 z%LC}GN#{K$_Q$Ne_bh5CFn)2iWA6e-?P#xip9|$_fk)q_nPiI?n6sKr@5e+L%fluP zO5p%T(qO~P42_MBbr=eMdnlcJOezA4o@*3KX3^O#51KpOE6sn`Z59H4&P_l%T^XlI zB(D~dBYUT&BR=U{pTgwFSgt7Nee5AK(O;clJdeVDe)}V6?YoMKszeq(I8`z(%XXaM z_Q%WSx3llW8d5YhJnl^_hpa@+IPE@~2tva!Z&JV9A{3ac_hOmoADHyqfRNVg_`IB& z?TSLenM@Qaw*FpZA!{}i#W!S;_!;a2?J%5crtVgHwvbCwYd%wcrtYC=FqB4_`&gGh zX{uhAzy1nJm|ml!Mw6$aj`pj(y^RvV(VJz6w1rCcNCmf;c&2jaQE{LKTzOsQRBUwQ zQZ!XX=^K4um4o^Sci*-Mim%G)FFr`W!`D}W!bH~UjMQt4pV*{tH4ATTR?_e2(*`JhMI@Vw6pQ4#+kgu+f~jx z9|G<4|RZbIP#cncUHrCWkh>jI@kauu7 zI+S%H)a>C&{(#5x=+G*@7kVHKiFUSP&_u+=`9*kRqrRuWf16BKK14LMgU@;!UKd|-BbSnF890mAKEBwX9s zrXxJ7knyz8A@b?n%u{3DRZ#)3?8H7+fs0v_EK;BKmViFdnHJ5tYXg14g1^K|9T zojdS5T4pDzVd{#Z+^e|ZK0T(Uvfm)yCr}?B>{KzEJ2whwOUe0Z77T*5PeiTm%5Nz| zeRf?A9gY^*f#R0?&=|^Zj@1)_(kx6cWA*TtqkS%C(A3&Vb#x@?3A>y+foEMqrbfQo z1m#*}SyZ&K_$z~QhQ+BfRCyeEl8uIT;K~V(Ay9AE_brJ1;Ty3A0WC(;oZRJ?=FjZF zHLk4}p>Tg~a7c9{d8!IST&pnf)sL7J&HLuB@q83C>&fBBy}z59=?XXP5Bn^onjhD~d{*9BT49PZT91qX)oZSqagZ zPEPISpkJvT@&|7t-M}Yg1Kk_ncBMlIy?hioqzuR7XUprjy16Z~0P&Y!zO4%>J%piK zRt^ow0|IdV+_d>zA7waASlqWcK#V)^z3BY zG~1f`+FD7y(O2y76QXLV6bItT1?CDyZi`91dMxkBEDtDeVnx|7kiUJGT}9vo^vO*= z@zO+{Sacya-4qZqHOI@2ws9!PEiNFp zyjIht;zbVn=2)>&w`U+r{APT77nYIfU`}OarJ>`)9wOK5in4#b?3_B*cse1figm zpI4g3@cpy0vcA1WYJ3WD=J)dS6essZeN3ax6j#)vP&l%2$aI zHd8I%<-a(96NNV4Eq8Z!$yISS2+u`QO1m{eZF^`}ltnHjbaj(hbZK8+ep?l$l=Ou{ z%{K@iSGGwLLv}V;7#Ok^CUkV-i{H4qUN+PYpS^zVZL{*6&Ut6L)~(uBWNti95!};r z8r>l*MZZdz>rE8$niy=OZfmPVNHooCoRyN3sCPBOiK%9|0meL+!~Ga8wS?e& zB+knwnu>z%-U+;H=P*^<^a7nbu0)KW@5VR;3P&$aeyjxa3Ao?6P@56}y$iocv+nPG zi7rcTdXz&|{?mR(wq=y1@oh}ts{e&|oY?RkJ>AD1x0hFz1P`VU0`&E4XWfTF3$-jb z0NfKNqW6Ia2QSQblJIXRY2?Y_E9i!}K%#WJ`g;aXFg-YGF&vnTxl964HT zb{P*^bF?%DC|)STj@?%KM%vi>RjUWh2T_xF+;+Tnns`rtD2E`Sva5v>WCCd^@9JsA8&t0kS1Le1&y5GuQkPQt`KX*PLaKfRjp+898RfJL4W_{RQ~WS`)w2P$dn%iH9uP&zg-Z zzK9%;EP2>SnR~eV46`zotdM7a=aJfJVS=kH+GWsBJXH&9&e5~Qhmh_Md#s$Tg469{ zfXNCu@H0-Ox*oS+DFWulLD96~#H+bvs88-DRUaRx!!F`UFs&HnzBu$+?x%fnS5i{a z)QoHSPDW35E*r)UID42LD=2dMJ^TewB8nYfep2LQ&h2SbZlekBU9zYvoiERUoHce= z{vyD0UA9Lbs(gpu9c|j`i;JM4qITwX0O+r%3O*eluCE%p4{W>2f32DA^Ik9^B~Pb4 zuXP5!;6-S2r}&@ZVXugjfQKPEMy0cb_h%6BLl^?HnC{h~%k+W;D5q zRrLbCKF?}RA%ZTvMU(ZG;pXDvN$2Y(nG$~sN5MVU$B!PluZNf3-xr?*nygN870S*B zjv{sU^-)k~oqE>Q)%^woxFzE`X=!OSHMaE!$5V9Fj0KK(Q^7Ylnx?OZ{4J-Juid-R zfqgr6lvdU!6?Nt%K+z>)E1MRKS9a!4V;h5g;@uI;Y1^zSFOiuBV%*g zYygt8*8T-e9i2oBX-u2opt+tzj^u{dcPwTvj!(eaL)sX*RY$J{REoY0NIE(>k@_s% zYKcdGC&mgq?070H6cGIA!#mhr4AmDkE!gSNt#4i_XUj0L=e?_$oh>-Jj4bZ$WyUGX zp1QN#q5QvtDPO8l))b8mPA4a+x6uC_H3b`_+FGU&@vqws@o_OS-VsOW_qC&_!+) zlF(!hy`FVwg*HF4YaILxysB!0Zm}D_e3NNbSw6jRDwb>ph&MlFX3;Ac?|&2hh!GL@ z0?;0ewfyHI#&i995#?dSHSlwo=Y&Ap!dMp{x-DNf<)^;04Yf|o<~lm`FqLV@Ni+u* z^Ea2>-N>i%0kVB6dhy*FT60)NDTDQO^`N=DOI5wagAUbTR5V6L#?DoGRvuao4kx3>7TfB4s)7#qGOR@WJfIyPWvqV*G*gE(xD?pIf07ui@=<#Yj& zk^JGnc&V8|2=J(*CiJnDo`Bj0zUug>v>%= z(QcQcTK$Dv&im?$HJM(gjh5Edqh`FGTfDHBrdi+w;l>mRKRNlKp&@E9vhTE zu_?EmLHyc{y{)YxX;Ke>rDbb$&~QLsY9S@!CtGUD;i=7w5b(vsuCS<<&%^#dkoEc> zUxJap@e}hQJVjb#AVK0p|In<^GWTJ4XVF@Bdyi@{2=YMtt`Z za+9$oqQG0%&{TgG&d}8z2v2!v(Q@uw#WpH1Rn12vL={o7)6S*dx_Z!9cE-Ft+b?DS zzWUzgHQsAw?#Cx>#gInY+X-Mye7$Rm&4hI_lzo1iKkBFvzbpPE}5z{*Q8AF?!Roni{O6%gRO>zSQOceTmkn5kB0soCP z8hNXq>Ky6KpVK|~(`R1i3O+u!9LPH2f0G6so&30avZsO<^IlZTTN6$&7!2QoQ2A1Q1{dHu`~oN(BL;k0 z=}y3mg};fJkJz^G{(rir@DETB&%eEReTCU~=TBrwutqkVYdG5r_kEK#0>9Bjca{$k*f;8F}<#QVPj(p1T!ml z%1oiOtG72crK$?sgZx}}^DX-Q`&97ka2L4Bf>QF~w~_os8ZJ7*!Z1MIFRh*Aous7r ztGKMpjygyITdnzOpPom+ud=LsQyEt2^95F|cS6d03eRsiDe;pP`D2~&Z$ID>1<^?n z8m27!)O6%=pC6s`mzDXLpMMtLblD4!e4AA1g3$9a8d5GRVfO=Dz(QB>%p7V=4iF%W zkMEc;u3`|=1En{ehqam>pU-Edhq1Jg1S%UDhbi^?M=k&kb8v4OS2Trs*5`;ZjPAa! zhHn_6cDA#sIx5Cx+IdHC&-*-6hKWeT;oI^??%QTMY7thu-hx*?}StlabUUUjVntinw&xj;~v|>jZ1p!9HVY1je(Y59{!Y11Fbj?mQT~q|zYY z2A6ff;T~{Vn9FUeZNz1xTf{x77?^3kx-+vhF5xSJ_OK`ZsOj6lh?Q)S4ExZ&d70{@ z3>lUz=KaX0$pj8Rk$Me;C3GQwJBO0Ev-&tEc0v7se=2sfJu>Qn<0~h5uT}fRh3e1} zb$zbIXipE` zA2W0D*m~AccV)c=d!h_==jK6mWo5fQfJQuh;O@VY=YIvB^%3dtn7#KJV*C0Y84e;A zvQr;kY(neD6zM1%9TTv-V0A}YnR%aEeMLom6`*-!1ZJ=CaHFK*xO4GnJZ*2BL|P{j zPx5wfS5V@MK16~ZGAMAKvC0^W>T8b_V0Pnmy6?G1`mRTP7sXlIiM$_zzZJ_f4K7|e zKM;a*FXlz;J@LPI(3w-7sLq|-boaBH~LJQBfo5s$NJ>!g1eod0S=6veb6(VBZ7;iml+_jiVK zXZbtOCh;cqBlu(ZThmY@MwBA`SKI$k-v0tmCf5|93ruT1cB9b}gHOFW5tfqwBkliV z%*euTv#&ezhu7F`-l%d^Ju+M!znhEAiZl6V!I=h|o5&;>rK#HL+-nlU;32(n3~14OpJ_( zt~!qt#cse?(Rp1IQ?*D$I#mCklmM@?`CKu1$fC*t?Ob4f_ZoSbFSut~F#%faFeq7G znB!$%0IFPr`&y!h%9p|d*AABlt-Z&UF~x5x?hEFF0B>_E+=yZ|e+4<@{#^Xa z_#eFaw_>8ed#0Jl+DnKx#}E}H1@zAi-j3Xg|5ovj#>rCUr0=mkyn)ofOL)*nDAFUw z#bfs6+yntpsE{HNW$v*V-MNu1IirtI%8o(k220-%K~(dtxo-~lYW~hK2u?SI;u<8$ z$UAg)Ja&t}i;w@N?#G4(>%rEbvbILAlkM@^im67W6gFT+Mg|aQd=SSxgVFC%jBK04 zRY)tJ&g<}EB#BFiz{8^>2Ja#5TnWoi8ox_HZFcsjPoJ`@st%;Zt*kcRVF-C1u1y|o z3Y=J7i#%s6aJB^R!|osdP@ONfx8Ds93m!JZ${Je&F|PnuFt5FXp5j>t=z_6}3u&<~ zHNu)giq(`8WXA2t^j5KrO*{|6tNpB?TX*kI*V`F2^p*K}Sr8Sb>!d+x?$R zqsmOASam;t1Og2a`uWs-B(4#keHFM}!^JcpbZ@l{-I^wXm=_B;s}7Z4Ek}mJSSe#vO}=9#T9$SnUh#FMGhKl_r2d$Kxb! zvN(|05ml3@Q0LtL@f4Unv`!yQEA5z13hQn%%f9F_wz$UX`WrGlqq@kA7uMn$4TzwAqMBwoTFCa<`Y21qI>KCh6&pmd@=?ZZb|y2?Q(m0*~Sx zOgd~Q8$5a^UC?Zkc`REy;TKxS$X9rDkH*I}5k->n^wk;fXUS$tg}rz65pU76YpSq3 zO6uE`ip{%yu!>G9TvT0Mou6;9S#1Nqe|@^nMUUNVzS%!q@Zyd>bfhtfU zr0?8r$HkEzw3hB|lv6;Hj*evR4)8Sd0HC{<2c49g3Dt#I#37@&*rugDeC}$ug;F}K zH6f7H{i9J6aQWrSfiNUPu91n%o$o@7efOw`%H+CwYg5&PEN?^WXOi1<96PvA@M zP5YK=P6vE6C)n3PoP8B?xn%y{ROPZBLw}1rUGN;?+7P^CQ6g659KZ*wmk^1%KE~) zV3DJkco7YNP7Gv9cZ3q-?t^jz7#SC1m%`*cSq{ykY&XXDOjf__DU*1!dGv!4##OD! zsyRJ}JJT;O9_}d;vS*nsytzlKoEjWa&Z}grEm08~Vz;R5J2*b>9CmgsAfV{q_IH-M z^Rckm`rhwAFUoLq5tWTg^C7$eo`(0L-wk+TN_E7SESF^>n*kUtf#076dne>|j319T z2ekh_US>jJpPQ3oc6A8@HDV`XlRsuOG$H_bQN(r&xy^CCIQ>j@Xbzrj>^AbHe$DX? zqu6Kn5=wDSyAPv66vdW5Y@-z>6;f2}?T%xes{sIBN-l4Q;J0^no;$&(P@S?))s5>S z$)bDB{^?#@1Mh2tT185M)fDAV;8%LhaogD<4++{s8sS$i201Ij^JPj)T*0Fb4Tt-T zP>e0o{w9FnnoOCRhK9>#FHd9L!qI9RQ_w07m_Nh*#YMYf^1@k~O`Fq+av~>v5Vhs2 zSG-f5>q9v-10sanwjYW_yiOqDYOQI~;laZyloX$tlp?1IDk+)ktbvz}wU+7!9)kvJPhFYdjK(3Yz#0@Y_J1(yO2 zrtGd}YBD$|ynJ_CNU5Jl!80_y&&zy|9_${|3BgG{nRYRkNUW@`@;L!PI!az#0DYj8 z$V;0>u&&R>F4!V?@G;23$$z(ynZ>EWslSS^-SEm7&O>5;Jli14PH8M~Jn;0b%nax1 zs2&9sW0!Rs6$E(Yiz9`*E#!3~>6;^qOCu4SqrP!Ob-1xYX!l_}6{Y8VH&bKPkn^mv z&T{vAOJKAse>90Y`>Vsw$O_v80wHXXO4ph53PpC$rMy$RD8c1|4Q$V3_0q;iIxDKtOH-8}Pe_52098r~v<;xL$uUnLv#`}@NoWxxe63EW(QLb9roKK~yUAGm&FR)eP3ZxAx5G;ipn4fqrY#pc=b*11 zvixp@hf~5^S>minx3SLY-KWOf+~BE@;NT3vNZ6H2e*JBxJS!dyC4!W;>znc%!); zvOBdcE0fOoc^A*5a$3Wyb^&}=;i*POO(3>|j5+jhu{RlGlyti0D*R4N90vbEvg_9A zUX5@uX?#z$E9@Kv;jy}^V>RgLTBD?;_Hm6O1XaIRNH^qnsqEK7PV+rJdt%Zq@hKY~ z!91;gw)!tfw3>=uyZM6?H2(pr_tF z+186`D1I!+`>n}r&QV@cvJGw+mGyM>YV799oK8xLr>dpP)B9@lU)6WJkOmSRd^*CMdg7>vg6$?Fl9I^9Eeq~wq37p^og10Y;<&Uv97#_6w&6wb&G=CBgOoK{t~?zBz4SmMLtGNk#)cvz<8I|F4KKzVuL3(2G0#B32i`(xf96UZ3E{3+gt?Rs|7@0Dv>sv%o4?FTzh z($+%P&Ip-G4mi5QEx5EnHQZtG{eBPt*aeI5`z}b-oEU!Uy9=pj&A(gY1x^d+u@QFP zeJ*YSkI)X)G#&N!eKps5dhH}~I*56AoWU`z+Il9geou~vq8B_&A8itgDSWY3OD*r%-NwWGBFfQ@ z>yOFk-+uTvV0FH~0)?!aM*l}#MeT52Sy*@&uZK8fbRu#%uaRne2!0;=-H(@-mv=J3AmuB6vD~#}BkS<+m@zrmNk-9S zUs12g!NgW%;1Q2&&&#tMmo&BHYmHes(uB3t?az$z)~-L?1~(+Trh}d89R{1K%4(_> z^WKz!T;=pv(lPBl1VbVRz|wi3mvb0e43sYM#=-<9^*04 zWU|_qR~FmrnlVLPZs|%+fBHg8>C#%uvWG8E2c9tacQh@%ozZH-M!iG(tI{M@Y?=j+~&u*FbbS1r~c7hauoQQwlZMT4mgng zSqm=Lc!9x!qC7n*d=`UQ;(-{F4tW{EK4GLHBo2Jo*p92IZcE>!S(NC-yl1^PxA`jU zQUxtuH0VxEQgl(}pF1ygMrQ43rwdD}P%x~7^S^vpBll_M0l6^T*k1PX%s#43S{QL% z>-W2a;f`cVhYL5Eu9ul~7y=f1r&fB2xg1-0nl80^nVGTI)UYv6oEwXe2)S1nN+q9` zp@1LrxNgl|9`R7r^k3}(U~^hX74SWn!I2}w>dNWdF5gZa0x?KgSQ$fPKAz^lxi5Kt zDC0I7KP_V&ju#v4wZ69w@`6?b$DZDD{7aVTKa8<6Hm}EqdVE@+9pU50hPs!It7%!V zp>&vccUGO!JCq%{)pX#tAK!G=TfIGHqK)i@UQ+bIpsh~iVozDK$eS`O0%Qu`&H?t? zU@3I}-IDy#@jrg(qxoB(mw|nNK;Wfrk&WW-64N|_l}D&b+`Tmc*nN#(|D~SgRge=V z31?nbMgv8LC!8KMNXWU7c06gE^0WuyCkE zPp;7~x%JKx`Q(kI=>(q|*Mc=glTxdJBqh6`B*Vw|)wTNaMy-O_%J{W_7d6<>SZGeH zLq(S^L0N+{-XDKBME_n44%Y8+o>TbkFUU?%U8e^>SK-fbyIci{>E>~Ld4D=Y znp@8dh53?cey-@c#^B+kOyq={Qjgb}1CPmd-!&h)&NceWfZ+IdB4i;au->|^^`9yH zzcm9@_?pCOW`))7B97qS%@EOR#=7ZEL;3T!f2l7;V}Ad#MWRR3c{JPm&#yi{N2UoU z)nYSudG@2WzZ8QH{YSTZS-;Tx2Xu1ut`Rku;PyWpC>DeH01Yb^9~_RKCFzHJ{D+v5 zSoktm6ylohcfA{hd7HCQO$Ctr{t{FBHz^b)W4+D(4Y0poJHh$)9{!b*|F{nRSnycY zg!RqC$bm@f@Mvjwi_aAMP3lKPB1W1}kV7Ifx_uqv|3cPppEDQe71%}uqX2N@`1hY4S4_C z8m}1#gWob_vEn96y#7cJWpalSk!bC`Z%{iT(ivlfVm1W=UFt6^AxAJXY#j&){TOjk za@3xrC&gId+dco>V^P0m7pC2>1zZms1*n@@lKMig`|dB|Qc@+#{eZwP1M4U36a9Lx zXs(hkRTHyjKCS-NHS=KqO*yjUUL_Kd9o1^QtJz5GD<}HbJJdgbr_%^=K;#U%_5axW z4xlEtZtW025L7@!R8$aDRHP^h(xZZiO0$4SRZ&EmQl*Ai>8J>(l%RB}g7g*}RY1Db zAieh%Aj!W2mPqlwelvIGzxQ%x4iiIov&(AxS!+GJ&;O6_`z@YhTTrKoG_Lu0FF9O5 zr`D+ZEk+27iTc2tA0iE7X*y?h1pI3K&O*Lgyd56Sg8BDCnFR|_1*jEodOG$Q8v zfPaOWQw>E30jbxLJOa@v(Mqr4*oCp%{Cm}wH?Op9;qzq#QtSbm%k0@tX`0`Xlc5Q< zdnh`79s~dKXz(izMUo1Bfw+uKbQ@&01Z6g6y8j%>$cdnk5ZyMX?;m@5S`OL1V^bUsGZ@%yTe**>6FeW^!tfl8H3GPw_i%8ta4* z4FH*o8I!E`j^|lf0Ikum9H_I1=vTUMp=wP3+|1-4^5d5m*REZYBKV>M#jQtN`Z(Bk zYrebn9-OJ#<1+Wb_ONgFm00#bUK4AQ}RQcne*JX+fN2qiRb9*^NXeg|7FuOcu|HzUd1Q2bNtF=V%k}|z>&8f z)K6!QkB?)C?-|5oiPD__8%IvKY7a==;-~{BEvB@)e8hEMPA+d~zxGm>gY12EuVT03 z&mA$~BB48{Xx6$UX*-N3frN&Cn)9BS@#^|PP{>CKE)bhHr2EgiN#&EgSFFcermkkPsF&jd_31FU8PaA6LZG zY2O;nwp;P#p_^?^H)QEvUo@!dIb5*b*VN?T@!PkD@8U)uGO(+ttJhanzO$%L2FEqy z#`OL#plUuq@MdNHk;3mEWnaVV%C8k|Ve@->`3YsDb`F7sg=N?>_gy4NlISLebMo!O zy-T*t&lE8`;jvX&<&w?p)G!FOEqbeS@B_906IWQZX6uomCy&@&zC}LFeaPyQ`P_V3 zZrSzPBY-kgJ_Qeg+je;TINoR+MwJDh_>$_Ar~MW@aB; zKP1gj_A4jCJ+g`yiSs_0!YnL#hiK1)XBM%23JcO@W3@7ABj8$?(Vn$0U%vF^)y_5{ z5(-@k>j6A+fs?%y0GC3BvqxSar{6`E-RW$cREg7MbEnlw@6J^Nz?k}-`dO^x_)M2| z&!i&2?;EWeH(y5Ft^u&0sjO{twk_9mcv>3nK`8$KC@u!Thj8&ri(X#gn)9l%m~$aV zPWcRZE#nIrIY3DCWL9=n5S+N~XI41TOPk+&mpP2aq^QPq z({6V$m>iI}x61p>3vuhdt}_0B0q4F`q$B_9TB8R^6~|}EBD@8vGvw0IEJ10Q4h09B6Ou7&al9nBkHa*>XTs>U?HkGph zXnBfpAOI5}~Y1R~$a5Y)?=kcZ6Hg02kSky?Fp;Xo8I@-{*@8AW;DXpwO4BcQ zL?|O^i=6{69(s`+mcCnmYjm9Frht%u*)vxjPW!KO?`gn>ZsR7UkVZR;W1^#H>r}HF z8X6LSk?a?1`j%2axP1x_%pMNflLL9bS>E)D(p^ET9BWmO(lyw^M2I- zl7`=2;92WNfqVNDW!&`@poY>r;)h#vPv8@rnR9E-6LG*ywGFrC@tYrOUH;IOr96+w z_qZ!oznHh1s9uE5_{*eoyA?}x4}yvi>j@lddSls`e#L7kxXtVA3x~FB*}`e2C>r1q z;R_s`W!f&$U=S|6I!&yyV^fwVWvjPnDZ2pASQX&w;k8>#TwO=0^L?kW?BTZ&<{LN6 zOblWZtxPgifbncW6WU(Uge$zzP*y%*+U6whCxo_LkN&B4i!C{wGzS+U91-~L>W|N; zYIB^jk(oUeZCk`ET>89;sjH&><)PaxAUp~lZI$-}3KGop1OcuIcg}4PNu*h~^_#U_ z2xhaevEkUxSH}XR(qHzU3s>l`OXE@TmoicCwcsl0W~N@vcD!^@J=zpx(YgCKF}jb8BoHUG2|Khddymch zC7?Kjn(7RHeM~HI^yfy!hGB9&r3fi#VvC@sN`qZyU-_5q;ddB85zpyNlyxXm{x&Y42-7n8fUWDewG} zZ2_vJhHn}fupQAsNOyj^&iT9>SiZEcnuiY^^4KJ42NGgPVve0yk1IZoSWk3_2K$%f zv}cQ;%@}fO0(b$Bdcl$e#5pKvbu-Zvihipa+7%KDcuNk<^wb6Zx)`2NfsD!p2 zz-<$=YP6ndDJ*m;Ke|oMvBkxU4}V7aw$`BT%LlfN+SYz~IOuk*n);wWw9 z+DH$x0TQIGV0+stz{=UhWdx*Kf@#0Kr}fgmam3`=8BlU#aPv*Q;yd=}I7PTsNyeuO z+Zo@V0oXR@VP%jK)D=wci;^uYEH5ulNGLbo*Jv5RdzNBX=zG4~uhay?KCfXDGD-Vn z-LO2Ml4_2UYt7Bw$sT>l>^3O&SgQi>Yw2qEIi1u^C?{=a)zU%n+by348f|SP2|b=} zLFj-COU*P3u7>dTF^hH|0l`0yon$VOBZoR6^2|P#2ar$DXvF#Rq�v=k>g0k8Nr$*)GLrGHLv?oOJPeqy80i2;Cr=U;jw& z_Y+yU=P)s=;EZK<5Qs&M-#jpFW4mYK_<}%m$!P_J!)rZYL4P0x%Re57Y5r-H+Yma_ z&KP3-F;znC86h@n$hG>f5TXEu8o7l{hE#9uh5LZx zjhm8}kHE<6$c9v~Fre^5rCA%Ex4c{WEfx9NqzdYDRQr)=$jv(-we|{0?GF+7PN;RG z)4|P5EeoXn9t_CjU;r*-9)^Jit2>gKB+fH1yJV9uC+Z6ZU{# zAmHDX#PS);^_ULSomJ!rP|*8CY{Qx*UWFtK;nbXyio3lZ9$j7*$y@;kO_ED^Z)G(C7Jq@>C+F{j6DC}*{~KuQTRW)VNGWFBqV4N0wBP4a8lY6t(7j2aUV0FpqkTCDMbzH;Uom;`bYqpF!>1xLd z!0w`Q-e1(>X1kw>kZ?+6)!JF)6K7r8_0TW0ww0j#`tNz#Bp#? z&s7uFJ@{h!;lpCT6m#66Ng?ZtvL0JClWZ(vM~|_wax>nzeO0~wRZ?$tfGyw%BQ}^# zKl>eGq3$xD40k>QrngQ| z(lBV@VL@twdL;l~p7GeGw+bd>SH8`ab?ufz5uu^[T(Ypi%)MP=fJEW2EI#UOI% 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 literal 0 HcmV?d00001 diff --git a/temp.yml b/temp.yml new file mode 100644 index 00000000..10bc662a --- /dev/null +++ b/temp.yml @@ -0,0 +1,1450 @@ +apiVersion: sealer.cloud/v2 +kind: Cluster +metadata: + creationTimestamp: "2024-02-28T07:37:46Z" + name: my-cluster +spec: + containerRuntime: + type: containerd + env: + - PodCIDR=172.24.0.0/16,5408:4003:10bb:6a01:83b9:6360:c66d:0000/112 + - SvcCIDR=10.96.0.0/16,6408:4003:10bb:6a01:83b9:6360:c66d:0000/112 + - Network=hybridnet + - Addons=cluster-operator,ack-node-problem-detector,etcd-backup,kube-prometheus-stack,multus-cni + - KubeletRunDiskSize=200 + - DockerRunDiskSize=200 + - StorageDevice=/dev/vdb + - YodaDevice=/dev/vdb3 + - EtcdDevice=/dev/vdc + - RemoveMasterTaint=true + - RegistryDomain=registry-internal.adp.aliyuncs.com + - IPv6DualStack=true + - vxlanPort=8472 + - CertSANs= + - gatewayExternalIP= + - ingressExternalIP= + - gatewayInternalIP= + - ingressInternalIP= + - gatewayPort=30383 + - gatewayAPIServerPort=30384 + - ingressHttpPort=80 + - ingressHttpsPort=443 + - gatewayDomain=cnstack.local + - hyVxlanInterfaces= + - hyVlanInterfaces= + hosts: + - env: + - StorageDevice=/dev/vdc1 + - KubeletRunDiskSize=100 + - DockerRunDiskSize=100 + - YodaDevice=/dev/vdc1,/dev/vdb1 + - EtcdDevice=/ + ips: + - 10.124.42.180 + - 10.124.42.181 + - 10.124.42.182 + roles: + - master + ssh: + passwd: Sjzx@2019 + port: "22" + user: root + image: cloud-image-registry.cn-shanghai.cr.aliyuncs.com/applications/1248190786113098:alarm-1.0.6-c4fb1a2-f2dd0f + registry: + localRegistry: + cert: {} + domain: registry-internal.adp.aliyuncs.com + port: 5000 + ssh: {} +status: {} +--- +apiVersion: sealer.aliyun.com/v1alpha1 +kind: Config +metadata: + creationTimestamp: "2024-02-28T07:37:46Z" + name: cnstack-multicluster-2.2.1-app-model +spec: + data: | + kind: Application + apiVersion: app-operator.aliyun.com/v1 + metadata: + name: cnstack-multicluster + namespace: cnstack-multicluster + labels: {} + annotations: + adp.aliyuncs.com/app-display-name: 多集群服务 + adp.aliyuncs.com/app-spec-name: poc + adp.aliyuncs.com/application-provider: "1955009827675648" + adp.aliyuncs.com/application-vendor: cnstack + adp.aliyuncs.com/supported-platforms: '["linux/amd64","linux/arm64"]' + spec: + name: cnstack-multicluster + version: 2.2.1 + description: 多集群 + versionDescription: ack-lite-22-15镜像更新,修复客用集群hybridnet镜像无法拉取,创建集群需要重启containerd问题 + infrastructure: + foundationReference: + version: 2.3.0 + clusterImage: cloud-image-registry.cn-shanghai.cr.aliyuncs.com/foundations/adp-base:cnstack-2.3.0-98afc5d-163339 + platform: + code: trident + version: "" + kubeVersion: "" + pkgURL: "" + resources: [] + components: + - name: ocm-addon-config + resourceVersion: 0.1.0 + type: ocm-addon-config + version: 1.0.0 + versionDescription: A Helm chart for OCM Addon Configuration + workload: + helm: + createNamespace: true + chartFile: "" + url: oss://cn-shanghai-cnx-distribution/1955009827675648/ocm-addon-config/1cbfae2de228fb7f485cec3306256314/ocm-addon-config-0.1.0.tgz + values: Z2xvYmFsOgogICAgZW5hYmxlRHVhbFN0YWNrOiB0cnVlCiAgICBub2RlU2VsZWN0b3I6CiAgICAgICAgbm9kZS1yb2xlLmt1YmVybmV0ZXMuaW8vY25zdGFjay1pbmZyYTogIiIKICAgIHJlZ2lzdHJ5RG9tYWluOiBhY2stYWdpbGl0eS1yZWdpc3RyeS5jbi1zaGFuZ2hhaS5jci5hbGl5dW5jcy5jb20KICAgIHRvbGVyYXRpb25zOgogICAgICAgIC0gZWZmZWN0OiBOb1NjaGVkdWxlCiAgICAgICAgICBrZXk6IG5vZGUtcm9sZS5rdWJlcm5ldGVzLmlvL21hc3RlcgogICAgICAgICAgb3BlcmF0b3I6IEV4aXN0cwogICAgICAgIC0gZWZmZWN0OiBOb1NjaGVkdWxlCiAgICAgICAgICBrZXk6IG5vZGUtcm9sZS5rdWJlcm5ldGVzLmlvL2Nuc3RhY2staW5mcmEKICAgICAgICAgIG9wZXJhdG9yOiBFeGlzdHMK + timeout: 600 + annotations: + adp.aliyuncs.com/supported-platforms: '["linux/amd64","linux/arm64"]' + namespace: cnstack-multicluster + - name: cnstack-multicluster + resourceVersion: 2.1.6-antbuild-hotfix + type: cnstack-multicluster + version: 2.1.6-antbuild-hotfix + versionDescription: A Helm chart for cnstack-multicluster + workload: + helm: + createNamespace: true + chartFile: "" + url: oss://cn-shanghai-cnx-distribution/1955009827675648/cnstack-multicluster/5d589c549b62fa300fadcbd44ca50c9e/cnstack-multicluster-2.1.6-antbuild-hotfix.tgz + values: Y2x1c3Rlci1nYXRld2F5LWFkZG9uLW1hbmFnZXI6CiAgICBjbHVzdGVyR2F0ZXdheToKICAgICAgICBpbWFnZTogYW50Y25zdGFjay9jbHVzdGVyLWdhdGV3YXkKICAgICAgICBpbnN0YWxsTmFtZXNwYWNlOiB2ZWxhLXN5c3RlbQogICAgICAgIHJlcGxpY2FzOiAiMyIKICAgICAgICBzZWNyZXROYW1lc3BhY2U6IG9wZW4tY2x1c3Rlci1tYW5hZ2VtZW50LWNyZWRlbnRpYWxzCiAgICAgICAgdGFnOiB2MS42LjAtYWNrYS03MTg4MGJiYgogICAgZW5hYmxlQ2xpZW50SWRlbnRpdHlQZW5ldHJhdGlvbjogdHJ1ZQogICAgaW1hZ2U6IGFudGNuc3RhY2svY2x1c3Rlci1nYXRld2F5LWFkZG9uLW1hbmFnZXIKICAgIGtvbm5lY3Rpdml0eUVncmVzczogZmFsc2UKICAgIG1hbnVhbFNlY3JldE1hbmFnZW1lbnQ6IGZhbHNlCiAgICByZXBsaWNhczogMgogICAgcmVzb3VyY2VzOgogICAgICAgIGxpbWl0czoKICAgICAgICAgICAgY3B1OiAyMDBtCiAgICAgICAgICAgIG1lbW9yeTogNTEyTWkKICAgICAgICByZXF1ZXN0czoKICAgICAgICAgICAgY3B1OiAxMG0KICAgICAgICAgICAgbWVtb3J5OiA2NE1pCiAgICB0YWc6IHYxLjYuMC1hY2thLTcxODgwYmJiCmNsdXN0ZXItaW1wb3J0LWNvbnRyb2xsZXI6CiAgICBhZ2VudEluc3RhbGxOYW1lc3BhY2U6CiAgICAgICAgY2x1c3RlclByb3h5OiBvcGVuLWNsdXN0ZXItbWFuYWdlbWVudC1jbHVzdGVyLXByb3h5CiAgICBkaXNhYmxlTGljZW5zZTogZmFsc2UKICAgIGltYWdlOgogICAgICAgIGltcG9ydENvbnRyb2xsZXI6CiAgICAgICAgICAgIGltYWdlOiBhbnRjbnN0YWNrL2ltcG9ydC1jb250cm9sbGVyCiAgICAgICAgICAgIHRhZzogdjAuMS4xLXNwMDAxLWEzZWEwYjc3CiAgICAgICAgbWFuYWdlZEpvYjoKICAgICAgICAgICAgaW1hZ2U6IGFudGNuc3RhY2svbWFuYWdlZC1qb2IKICAgICAgICAgICAgdGFnOiB2MC4xLjAtM2ZkZTM0ZTgKICAgICAgICByZWdpc3RyYXRpb246CiAgICAgICAgICAgIGltYWdlOiBhbnRjbnN0YWNrL3JlZ2lzdHJhdGlvbgogICAgICAgICAgICB0YWc6IHYwLjkuMC1hY2thLTA2MDQ3YzYwCiAgICAgICAgcmVnaXN0cmF0aW9uT3BlcmF0b3I6CiAgICAgICAgICAgIGltYWdlOiBhbnRjbnN0YWNrL3JlZ2lzdHJhdGlvbi1vcGVyYXRvcgogICAgICAgICAgICB0YWc6IHYwLjkuMS1hY2thLTUyNGM1MjgyCiAgICAgICAgd29yazoKICAgICAgICAgICAgaW1hZ2U6IGFudGNuc3RhY2svd29yawogICAgICAgICAgICB0YWc6IHYwLjkuMC1hY2thLWQzY2YxMjNmCiAgICBrbHVzdGVybGV0TmFtZXNwYWNlOiBvcGVuLWNsdXN0ZXItbWFuYWdlbWVudC1hZ2VudAogICAgcmVwbGljYXM6IDIKICAgIHJlc291cmNlczoKICAgICAgICBsaW1pdHM6CiAgICAgICAgICAgIGNwdTogNTAwbQogICAgICAgICAgICBtZW1vcnk6IDUxMk1pCiAgICAgICAgcmVxdWVzdHM6CiAgICAgICAgICAgIGNwdTogMTAwbQogICAgICAgICAgICBtZW1vcnk6IDEyOE1pCmNsdXN0ZXItcHJveHk6CiAgICBpbWFnZToKICAgICAgICBwcm94eToKICAgICAgICAgICAgaW1hZ2U6IGFudGNuc3RhY2svY2x1c3Rlci1wcm94eQogICAgICAgICAgICB0YWc6IHYwLjIuMy1hY2thLWZjOGJmZDAyCiAgICAgICAgcHJveHlBZ2VudDoKICAgICAgICAgICAgaW1hZ2U6IGFudGNuc3RhY2svY2x1c3Rlci1wcm94eQogICAgICAgICAgICB0YWc6IHYwLjIuMy1hY2thLWZjOGJmZDAyCiAgICAgICAgcHJveHlTZXJ2ZXI6CiAgICAgICAgICAgIGltYWdlOiBhbnRjbnN0YWNrL2NsdXN0ZXItcHJveHkKICAgICAgICAgICAgdGFnOiB2MC4yLjMtYWNrYS1mYzhiZmQwMgogICAgcHJveHlTZXJ2ZXI6CiAgICAgICAgZW50cnlwb2ludEFkZHJlc3M6ICIiCiAgICAgICAgZW50cnlwb2ludExvYWRCYWxhbmNlcjogZmFsc2UKICAgICAgICBwb3J0OiA4MDkxCiAgICByZXBsaWNhczogMgogICAgcmVzb3VyY2VzOgogICAgICAgIGxpbWl0czoKICAgICAgICAgICAgY3B1OiAzMDBtCiAgICAgICAgICAgIG1lbW9yeTogNTEyTWkKICAgICAgICByZXF1ZXN0czoKICAgICAgICAgICAgY3B1OiAxMG0KICAgICAgICAgICAgbWVtb3J5OiA2NE1pCiAgICBzcG9rZUFkZG9uTmFtZXNwYWNlOiBvcGVuLWNsdXN0ZXItbWFuYWdlbWVudC1jbHVzdGVyLXByb3h5CmNyZFByZWhvb2tKb2I6CiAgICBpbWFnZTogYW50Y25zdGFjay9wcmVpbnN0YWxsLWpvYgogICAgdGFnOiB2Mi4xLjAtNGI4MDc0MzkKZ2xvYmFsOgogICAgY25zdGFja1Byb2R1Y3ROYW1lOiBjbnN0YWNrCiAgICBlbmFibGVEdWFsU3RhY2s6IHRydWUKICAgIGVuYWJsZU1hcHBpbmc6IHRydWUKICAgIG1pblN1cHBvcnRLOHNWZXJzaW9uOiAiMS4yMCIKICAgIG5vZGVTZWxlY3RvcjoKICAgICAgICBub2RlLXJvbGUua3ViZXJuZXRlcy5pby9jbnN0YWNrLWluZnJhOiAiIgogICAgcmVnaXN0cnlEb21haW46IGFudC1jbnN0YWNrLXJlZ2lzdHJ5LmNuLWhhbmd6aG91LmNyLmFsaXl1bmNzLmNvbQogICAgdG9sZXJhdGlvbnM6CiAgICAgICAgLSBlZmZlY3Q6IE5vU2NoZWR1bGUKICAgICAgICAgIGtleTogbm9kZS1yb2xlLmt1YmVybmV0ZXMuaW8vbWFzdGVyCiAgICAgICAgICBvcGVyYXRvcjogRXhpc3RzCiAgICAgICAgLSBlZmZlY3Q6IE5vU2NoZWR1bGUKICAgICAgICAgIGtleTogbm9kZS1yb2xlLmt1YmVybmV0ZXMuaW8vY25zdGFjay1pbmZyYQogICAgICAgICAgb3BlcmF0b3I6IEV4aXN0cwptYW5hZ2VkLXNlcnZpY2VhY2NvdW50OgogICAgYWdlbnRJbnN0YWxsQWxsOiB0cnVlCiAgICBmZWF0dXJlR2F0ZXM6CiAgICAgICAgZXBoZW1lcmFsSWRlbnRpdHk6IGZhbHNlCiAgICBpbWFnZTogYW50Y25zdGFjay9tYW5hZ2VkLXNlcnZpY2VhY2NvdW50CiAgICByZXBsaWNhczogMgogICAgcmVzb3VyY2VzOgogICAgICAgIGxpbWl0czoKICAgICAgICAgICAgY3B1OiAyMDBtCiAgICAgICAgICAgIG1lbW9yeTogMjU2TWkKICAgICAgICByZXF1ZXN0czoKICAgICAgICAgICAgY3B1OiAxMG0KICAgICAgICAgICAgbWVtb3J5OiA2NE1pCiAgICB0YWc6IHYwLjMuMC1hY2thLTc3NmY3Nzc3Cm1vbml0b3Jpbmc6CiAgICBhcHBOYW1lOiBjbnN0YWNrLW11bHRpY2x1c3RlcgogICAgYXBwTmFtZXNwYWNlOiBjbnN0YWNrLW11bHRpY2x1c3RlcgptdWx0aWNsdXN0ZXItYXBpc2VydmVyOgogICAgaW1hZ2U6IGFudGNuc3RhY2svbXVsdGljbHVzdGVyLWFwaXNlcnZlcgogICAgcmVwbGljYXM6IDIKICAgIHJlc291cmNlczoKICAgICAgICBsaW1pdHM6CiAgICAgICAgICAgIGNwdTogNDAwbQogICAgICAgICAgICBtZW1vcnk6IDUxMk1pCiAgICAgICAgcmVxdWVzdHM6CiAgICAgICAgICAgIGNwdTogMjAwbQogICAgICAgICAgICBtZW1vcnk6IDI1Nk1pCiAgICB0YWc6IHYyLjEuMC1zcDAwMS0wNGFhYzljZQpwcmUtZGVsZXRlLWpvYjoKICAgIGltYWdlOiBhbnRjbnN0YWNrL3ByZWRlbGV0ZS1qb2IKICAgIHRhZzogdjIuMS4wLTVlZWFlNjVmCnJlZ2lzdHJhdGlvbi1vcGVyYXRvci1odWI6CiAgICBpbWFnZToKICAgICAgICBwbGFjZW1lbnQ6CiAgICAgICAgICAgIGltYWdlOiBhbnRjbnN0YWNrL3BsYWNlbWVudAogICAgICAgICAgICB0YWc6IHYwLjkuMC1hY2thLTZkMGFlOGNkCiAgICAgICAgcmVnaXN0cmF0aW9uOgogICAgICAgICAgICBpbWFnZTogYW50Y25zdGFjay9yZWdpc3RyYXRpb24KICAgICAgICAgICAgdGFnOiB2MC45LjAtYWNrYS0wNjA0N2M2MAogICAgICAgIHJlZ2lzdHJhdGlvbk9wZXJhdG9yOgogICAgICAgICAgICBpbWFnZTogYW50Y25zdGFjay9yZWdpc3RyYXRpb24tb3BlcmF0b3IKICAgICAgICAgICAgdGFnOiB2MC45LjEtYWNrYS01MjRjNTI4MgogICAgICAgIHdvcms6CiAgICAgICAgICAgIGltYWdlOiBhbnRjbnN0YWNrL3dvcmsKICAgICAgICAgICAgdGFnOiB2MC45LjAtYWNrYS1kM2NmMTIzZgogICAgaW1hZ2VQdWxsUG9saWN5OiBJZk5vdFByZXNlbnQKICAgIHJlcGxpY2FzOiAyCiAgICByZXNvdXJjZXM6CiAgICAgICAgbGltaXRzOgogICAgICAgICAgICBjcHU6IDUwMG0KICAgICAgICAgICAgbWVtb3J5OiA1MTJNaQogICAgICAgIHJlcXVlc3RzOgogICAgICAgICAgICBjcHU6IDEwMG0KICAgICAgICAgICAgbWVtb3J5OiAxMjhNaQo= + timeout: 600 + disableOpenapiValidation: true + annotations: + adp.aliyuncs.com/supported-platforms: '["linux/amd64","linux/arm64"]' + path: applications/cnstack-multicluster-2.2.1.yaml + process: value + strategy: overwrite +status: {} +--- +apiVersion: sealer.aliyun.com/v1alpha1 +kind: Config +metadata: + creationTimestamp: "2024-02-28T07:37:46Z" + name: cnstack-multicluster-2.2.1-namespace +spec: + data: | + apiVersion: v1 + kind: Namespace + metadata: + creationTimestamp: null + labels: + adp.aliyuncs.com/managed-namespace: "true" + name: cnstack-multicluster + spec: {} + status: {} + path: applications/cnstack-multicluster-2.2.1-namespace.yaml + process: value + strategy: overwrite +status: {} +--- +apiVersion: sealer.aliyun.com/v1alpha1 +kind: Config +metadata: + creationTimestamp: "2024-02-28T07:37:46Z" + name: sofams-console-1.1.0-rc1-app-model +spec: + data: | + kind: Application + apiVersion: app-operator.aliyun.com/v1 + metadata: + name: sofams-console + namespace: sofams-console + labels: {} + annotations: + adp.aliyuncs.com/app-display-name: sofams-console + adp.aliyuncs.com/app-spec-name: default + adp.aliyuncs.com/application-provider: "1955009827675648" + adp.aliyuncs.com/supported-platforms: '["linux/amd64"]' + spec: + name: sofams-console + version: 1.1.0-rc1 + description: 微服务控制面 + versionDescription: 一汽环境console通过adp出包底座部署 + infrastructure: + foundationReference: + version: 2.3.0 + clusterImage: cloud-image-registry.cn-shanghai.cr.aliyuncs.com/foundations/adp-base:cnstack-2.3.0-98afc5d-163339 + platform: + code: trident + version: "" + kubeVersion: "" + pkgURL: "" + resources: [] + components: + - name: sofams-console + resourceVersion: 1.1.0-34 + type: sofams-console + version: 1.0.0 + versionDescription: micro service enterprise product + workload: + helm: + createNamespace: true + chartFile: "" + url: oss://cn-shanghai-cnx-distribution/1955009827675648/sofams-console/761757173fef6ed8023e143395b91fe4/sofams-console-1.1.0-34.tgz + values: YXV0aDoKICAgIGVuYWJsZWQ6IHRydWUKY29uZmlnbWFwOgogICAgREJfVFlQRTogJ3t7IC5WYWx1ZXMuY29uc29sZS5kYXRhYmFzZS50eXBlIH19JwogICAgYXBwX25hbWU6IGRzcmNvbnNvbGUKICAgIGF1ZGl0LmNlbnRlci5lbmFibGU6ICJmYWxzZSIKICAgIGF1dGgubmVlZC5jaGVjazogImZhbHNlIgogICAgY2xlYW4uc2VydmljZS5zd2l0Y2g6ICJmYWxzZSIKICAgIGNvbS5hbGlwYXkuZW52OiBzaGFyZWQKICAgIGNvbS5hbGlwYXkuaW5zdGFuY2VpZDogIjEiCiAgICBjb20uYW50Y2xvdWQuYW50dmlwLmVuZHBvaW50OiAxMjcuMC4wLjEKICAgIGNvbV9hbGlwYXlfaW5zdGFuY2VpZDogIjEiCiAgICBjb21fYWxpcGF5X21vZGU6IHB1YmxpYwogICAgY29tX2FsaXBheV90ZW5hbnQ6IHN1cGVyQWRtaW4KICAgIGNvbnN1bWVyX2FkZHJlc3Nfd2FpdDogIjAiCiAgICBjc3JmLm5lZWQuY2hlY2s6ICJmYWxzZSIKICAgIGRlcGxveV9vYnByb3h5OiAiZmFsc2UiCiAgICBkcm1fZW5hYmxlZDogImZhbHNlIgogICAgZHNyY29uc29sZS5saXRlLnN3aXRjaDogInRydWUiCiAgICBkc3Jjb25zb2xlLm1lbnVzOiAneyJoYXNDaGlsZHJlbiI6InRydWUiLCJkaXNwbGF5TmFtZUNOIjoiXHU1RkFFXHU2NzBEXHU1MkExIiwibWVudXMiOlt7ImNoaWxkcmVuIjpbeyJkaXNwbGF5TmFtZUNOIjoiXHU2NzBEXHU1MkExXHU3QkExXHU2M0E3IiwibGluayI6IiMvbXMvY2xhc3NpYy9uYWNvc1NlcnZpY2VEaXIifSx7ImRpc3BsYXlOYW1lQ04iOiJcdTUyQThcdTYwMDFcdTkxNERcdTdGNkUiLCJsaW5rIjoiIy9tcy9jbGFzc2ljL25hY29zQ29uZmlnIn0seyJkaXNwbGF5TmFtZUNOIjoiXHU2NzBEXHU1MkExXHU2Q0JCXHU3NDA2IiwibGluayI6IiMvbXMvY2xhc3NpYy9zZW50aW5lbFNlcnZpY2VEaXIifSx7ImRpc3BsYXlOYW1lQ04iOiJcdTVCQTFcdThCQTFcdTc2RUVcdTVGNTUiLCJsaW5rIjoiIy9tcy9jbGFzc2ljL29wZXJhaW9uQXVkaXQifV0sImFwcE5hbWUiOiJkc3Jjb25zb2xlIiwiaGFzQ2hpbGRyZW4iOiJ0cnVlIiwiZGlzcGxheU5hbWVDTiI6Ilx1N0VDRlx1NTE3OFx1NUZBRVx1NjcwRFx1NTJBMSJ9XSwidHlwZSI6InNpbmd1bGFyIiwiaXNDaGlsZHJlblNhbWVBcHAiOiJ0cnVlIiwiYXBwcyI6W3sicm91dGVyUHJlZml4IjoiIy9tcyIsIm5hbWUiOiJtcyIsImVudHJ5SFRNTCI6Ii9pbmRleC5sb2NhbC5odG1sIn1dfScKICAgIGRzcmNvbnNvbGUub3NwLmF1dGg6ICJmYWxzZSIKICAgIGVudi5hbGl5dW46ICJmYWxzZSIKICAgIGVudi5uYW1lOiBkZWZhdWx0CiAgICBlbnYucmVnaW9uOiBkZWZhdWx0CiAgICBpbnN0YW5jZUlkLmNoZWNrOiAidHJ1ZSIKICAgIGlzQ25TdGFja0xvZ2luOiAidHJ1ZSIKICAgIGlzTXNBdXRoOiAiZmFsc2UiCiAgICBpc01zTG9naW46ICJmYWxzZSIKICAgIGlzVXNlck1vY2s6ICJmYWxzZSIKICAgIGxkYy5zd2l0Y2g6ICJmYWxzZSIKICAgIGxpY2VuY2UuZW5hYmxlOiAiZmFsc2UiCiAgICBsb2NhbC5zZXJ2ZXIubW9jay5kb21haW46IGxvY2FsaG9zdAogICAgbG9jYWwuc2VydmVyLm1vY2suc3dpdGNoOiAidHJ1ZSIKICAgIGxvZ29JbmZvOiAne30nCiAgICBtb2NrVXNlcjogJ3sicm9sZXMiOlsibWlkZGxld2FyZV9tYXN0ZXIiLCJtaWRkbGV3YXJlX3Jvb3QiXSwidGVuYW50SW5mbyI6eyJpbnN0YW5jZUlkcyI6WyIwMDAwMDEiLCIzMkRWUkRXT04xMFciLCI4RlVNSENUVlRYQ1ciLCJCMkhPUEhEMFdZMkYiLCJESkVaRlFMTllCWVoiLCJHQURXUUNJMDY1REUiLCJJTTZZTkxORjc1OVUiLCJPSFpHTUVFUFQ3UDQiLCJQT0RJVTJLVzFYS1IiLCJRVFZQRzUwRFFUUE4iLCJSV1RYTFlSUU1JMFEiLCJTT0pYWFJQOEtSMkYiLCJUUVFVRkxITEZQTFAiLCJVS0VLWFRRSUY1S0wiLCJzb2ZhLXJwYyJdLCJ3b3Jrc3BhY2VJZHMiOlsiQVRFQ0RlbW9EZXYiLCJERUZBVUxUIiwiX3pzZWFyY2giLCJjeHkyIiwiZGVhIiwiZGVpIiwiZGV2IiwiZXQxNXNpdCIsImV0MTV0c3QiLCJpbnRsIiwibWlkZGxld2FyZSIsInNpbmdsZSIsInNpdCIsInRlc3QiXSwidGVuYW50SWQiOiJDUEpWVEJDTiJ9LCJ0ZW5hbnRJbmZvcyI6W3siaW5zdGFuY2VJZHMiOlsiMDAwMDAxIiwiMzJEVlJEV09OMTBXIiwiOEZVTUhDVFZUWENXIiwiQjJIT1BIRDBXWTJGIiwiREpFWkZRTE5ZQllaIiwiR0FEV1FDSTA2NURFIiwiSU02WU5MTkY3NTlVIiwiT0haR01FRVBUN1A0IiwiUE9ESVUyS1cxWEtSIiwiUVRWUEc1MERRVFBOIiwiUldUWExZUlFNSTBRIiwiU09KWFhSUDhLUjJGIiwiVFFRVUZMSExGUExQIiwiVUtFS1hUUUlGNUtMIiwic29mYS1ycGMiXSwid29ya3NwYWNlSWRzIjpbIkFURUNEZW1vRGV2IiwiREVGQVVMVCIsIl96c2VhcmNoIiwiY3h5MiIsImRlYSIsImRlaSIsImRldiIsImV0MTVzaXQiLCJldDE1dHN0IiwiaW50bCIsIm1pZGRsZXdhcmUiLCJzaW5nbGUiLCJzaXQiLCJ0ZXN0Il0sInRlbmFudElkIjoiQ1BKVlRCQ04ifV0sInVzZUp1ZGdlIjpmYWxzZSwidXNlciI6eyJyZWFsTmFtZSI6Im1vY2tVc2VyIiwibmlja05hbWUiOiJtb2NrVXNlciIsImxvZ2luTmFtZSI6Im1vY2tVc2VyQGFudGdyb3VwLmNvbSIsImlkIjoiMDAwNDMxNTA3MiIsImVtYWlsIjoibW9ja1VzZXJAYW50Z3JvdXAuY29tIn19JwogICAgbW9uaXRvclR5cGU6IHByb21ldGhldXMKICAgIG1zLmFjY2Vzc3NlY3JldDogTWlkZGxlV2FyZVByb3ZpZGVyU0sKICAgIG5hY29zLmVuYWJsZTogInRydWUiCiAgICBvcC5hZG1pbi5hY2Nlc3NLZXk6IGFrCiAgICBvcC5hZG1pbi5hY2Nlc3NTZWNyZXQ6IHNrCiAgICBvcC5nYXRld2F5LmJhc2VVcmw6IGh0dHA6Ly8KICAgIG9zcC5hdXRoLmZpbmUuZ3JhaW46ICJmYWxzZSIKICAgIG9zcC5hdXRoLnN0cmljdC5tb2RlOiAiZmFsc2UiCiAgICBvc3AuY2FuVXNlSnVkZ2U6ICJmYWxzZSIKICAgIHByb2Nlc3MuYWxpdmUuZGV0ZWN0ZWQuY3JvbjogMyAwLzUgKiAqICogPwogICAgcHJvY2Vzcy5hbGl2ZS5kZXRlY3RlZC5mcmVxdWVuY3k6ICIzMDAwMCIKICAgIHByb2Nlc3MuYWxpdmUuZGV0ZWN0ZWQuc3dpdGNoOiAidHJ1ZSIKICAgIHByb2Nlc3MuYWxpdmUudGltZW91dC5zZWNvbmRzOiAiMTIwIgogICAgcHJvY2Vzcy5jbGVhbi5jcm9uOiAwIDAvMyAqICogKiA/CiAgICBwcm9jZXNzLmluZm8uY2xlYW4uam9iLmNyb246IDUgMC8xMCAqICogKiA/CiAgICBwcm9jZXNzLmtlZXAubWludXRlczogIjUiCiAgICBxdWFydHouZW5hYmxlZDogInRydWUiCiAgICByZWdpc3RyeS5jbGllbnRvZmYuZmlsdGVyLWlwOiAiZmFsc2UiCiAgICByZWdpc3RyeS5kYXRhLmNlbnRlcjogIiIKICAgIHJlZ2lzdHJ5LnNlcnZlci5lbmRwb2ludDogc29mYW1zLW5hY29zLWhlYWRsZXNzLnNvZmEtbXMuc3ZjLmNsdXN0ZXIubG9jYWw6ODg0OAogICAgcmVnaXN0cnkuc2VydmVyLnBhc3N3b3JkOiBuYWNvcwogICAgcmVnaXN0cnkuc2VydmVyLnJlZnJlc2hhYmxlOiAidHJ1ZSIKICAgIHJlZ2lzdHJ5LnNlcnZlci51c2VybmFtZTogbmFjb3MKICAgIHJlZ2lzdHJ5LnNlc3Npb24uaHR0cC5wb3J0OiAiODg0OCIKICAgIHJlZ2lzdHJ5LnNlc3Npb24uc2VydmVyOiBzb2ZhbXMtbmFjb3MtMC5zb2ZhbXMtbmFjb3MtaGVhZGxlc3Muc29mYS1tcy5zdmMuY2x1c3Rlci5sb2NhbCwKICAgIHJ1bl9tb2RlOiB4eHgKICAgIHNlbnNvci5zZXJ2aWNlLmlkOiBtcwogICAgc2Vzc2lvbi5oZWFsdGhjaGVjay5lbmFibGVkOiAiZmFsc2UiCiAgICBzZXNzaW9uLnNlcnZlcjogMTI3LjAuMC4xCiAgICBzZXNzaW9uLnN1cHBvcnQucXVlcnkuaXBzLnN3aXRjaDogImZhbHNlIgogICAgc2l0ZTogTUFJTl9TSVRFCiAgICBzeW5jLmNoZWNrc3VtLmVuYWJsZTogInRydWUiCiAgICB0aW1lem9uZTogQXNpYS9TaGFuZ2hhaQogICAgdW5jaGVjay5pbnN0YW5jZUlkOiAwMDAwMDEsc29mYS1wcm9qZWN0CiAgICB3ZWIuc291cmNlLnZlcnNpb246IHN0YXRpYwogICAgd2Vic2hlbGwuYWRkcmVzczogMTI3LjAuMC4xCmRhdGFiYXNlOgogICAgZnJvbVNlY3JldDogIiIKICAgIG15c3FsRGF0YWJhc2U6IGRzcmNvbnNvbGUKICAgIG15c3FsSG9zdDogbXlzcWwtbmFjb3MtbXlzcWwuc29mYS1tcy5zdmMKICAgIG15c3FsUGFzc3dvcmQ6IEhjQENsb3VkMDEKICAgIG15c3FsUG9ydDogIjMzMDYiCiAgICBteXNxbFJvb3RQYXNzd29yZDogSGNAQ2xvdWQwMQogICAgbXlzcWxVc2VyOiBkc3Jjb25zb2xlCiAgICB0eXBlOiBteXNxbApmdWxsbmFtZU92ZXJyaWRlOiAiIgpob3N0OiBzb2ZhLW1zLmNuc3RhY2subG9jYWwKaW1hZ2U6CiAgICBjb25zb2xlOiByZWcuZG9ja2VyLmFsaWJhYmEtaW5jLmNvbS9hbnRjbnN0YWNrL2RzcmNvbnNvbGU6MjAyNDAyMjcyMzEwMjNfYzNkN2MxNmYKICAgIG15c3FsOiByZWcuZG9ja2VyLmFsaWJhYmEtaW5jLmNvbS9hbnRjbnN0YWNrL3NvZmEtbXMtZGJpbml0OjIwMjQwMTI5MTcwMzEyXzRiODk2NzA0CmltYWdlUHVsbFBvbGljeTogSWZOb3RQcmVzZW50Cm1vbml0b3I6CiAgICBlbmFibGVkOiB0cnVlCm5hbWVPdmVycmlkZTogIiIKcmVhZGluZXNzUHJvYmU6CiAgICBmYWlsdXJlVGhyZXNob2xkOiAzCiAgICBodHRwR2V0OgogICAgICAgIHBhdGg6IC9oZWFsdGgKICAgICAgICBwb3J0OiA4MDgwCiAgICAgICAgc2NoZW1lOiBIVFRQCiAgICBpbml0aWFsRGVsYXlTZWNvbmRzOiA2MAogICAgcGVyaW9kU2Vjb25kczogMTAKICAgIHRpbWVvdXRTZWNvbmRzOiAzMDAKcmVwbGljYXM6IDIKcmVzb3VyY2VzOgogICAgbGltaXRzOgogICAgICAgIGNwdTogIjIiCiAgICAgICAgbWVtb3J5OiA0R2kKICAgIHJlcXVlc3RzOgogICAgICAgIGNwdTogIjIiCiAgICAgICAgbWVtb3J5OiA0R2kK + timeout: 600 + annotations: + adp.aliyuncs.com/supported-platforms: '["linux/amd64"]' + path: applications/sofams-console-1.1.0-rc1.yaml + process: value + strategy: overwrite +status: {} +--- +apiVersion: sealer.aliyun.com/v1alpha1 +kind: Config +metadata: + creationTimestamp: "2024-02-28T07:37:46Z" + name: sofams-console-1.1.0-rc1-namespace +spec: + data: | + apiVersion: v1 + kind: Namespace + metadata: + creationTimestamp: null + labels: + adp.aliyuncs.com/managed-namespace: "true" + name: sofams-console + spec: {} + status: {} + path: applications/sofams-console-1.1.0-rc1-namespace.yaml + process: value + strategy: overwrite +status: {} +--- +apiVersion: sealer.aliyun.com/v1alpha1 +kind: Config +metadata: + creationTimestamp: "2024-02-28T07:37:47Z" + name: alarm-1.0.6-app-model +spec: + data: | + kind: Application + apiVersion: app-operator.aliyun.com/v1 + metadata: + name: alarm + namespace: alarm + labels: {} + annotations: + adp.aliyuncs.com/app-display-name: 告警云服务 + adp.aliyuncs.com/app-spec-name: poc + adp.aliyuncs.com/application-provider: "1955009827675648" + adp.aliyuncs.com/supported-platforms: '["linux/amd64","linux/arm64"]' + spec: + name: alarm + version: 1.0.6 + description: 告警云服务 + versionDescription: 告警平台 - 一汽poc + infrastructure: + foundationReference: + version: 2.3.0 + clusterImage: cloud-image-registry.cn-shanghai.cr.aliyuncs.com/foundations/adp-base:cnstack-2.3.0-98afc5d-163339 + platform: + code: trident + version: "" + kubeVersion: "" + pkgURL: "" + components: + - name: mysql-operator + resourceVersion: 1.8.32 + type: mysql.mysql-operator + version: 1.8.31 + groupReference: + instanceName: "" + name: mysql + version: 1.8.32 + type: OFFICIAL + provider: harmonycloud.cn + workload: + helm: + createNamespace: true + chartFile: "" + url: oss://cn-shanghai-cnx-middleware/stable/harmonycloud.cn/mysql/1.8.32/charts/mysql-operator + values: cmVwbGljYUNvdW50OiAyCgpyZXNvdXJjZXM6CiAgbGltaXRzOgogICAgY3B1OiAyMDBtCiAgICBtZW1vcnk6IDUxMk1pCiAgcmVxdWVzdHM6CiAgICBjcHU6IDEwMG0KICAgIG1lbW9yeTogMjU2TWk= + timeout: 600 + annotations: + adp.aliyuncs.com/supported-platforms: '["linux/amd64"]' + labels: + adp.aliyuncs.com/controller-manager: "true" + resources: [] + components: + - name: mysql-mysql + resourceVersion: 1.8.32 + type: mysql.mysql + version: "5.7" + groupReference: + instanceName: "" + name: mysql + version: 1.8.32 + type: OFFICIAL + provider: harmonycloud.cn + workload: + helm: + createNamespace: true + chartFile: "" + url: oss://cn-shanghai-cnx-middleware/stable/harmonycloud.cn/mysql/1.8.32/charts/mysql + values: cmVzb3VyY2VzOgogIGxpbWl0czoKICAgIGNwdTogMjAwMG0KICAgIG1lbW9yeTogNDA5Nk1pCiAgcmVxdWVzdHM6CiAgICBjcHU6IDIwMDBtCiAgICBtZW1vcnk6IDQwOTZNaQogICAgCmluaXRfYXRfc2V0dXA6CiAgZW5hYmxlZDogdHJ1ZSAgICAgI+iuvue9rmVuYWJsZT10cnVlCiAgaW5pdF9zcWw6IHwtCiAgICBjcmVhdGUgZGF0YWJhc2UgYWxhcm1kYjsKICAgIGNyZWF0ZSBkYXRhYmFzZSBhY2dvdG9uZWNvcmU7CiAgICAKc3RvcmFnZVNpemU6IDEwRwp2ZXJzaW9uOiAiNS43LjM5Ig== + timeout: 600 + annotations: + adp.aliyuncs.com/supported-platforms: '["linux/amd64"]' + - name: alarm + resourceVersion: 1.0.6 + type: alarm + version: 3.31.0 + versionDescription: alarm chart for Kubernetes + workload: + helm: + createNamespace: true + chartFile: "" + url: oss://cn-shanghai-cnx-distribution/1955009827675648/alarm/ac0cdec7e62efdc74fcb77fd4281d532/alarm-1.0.6.tgz + values: YWZmaW5pdHk6CiAgICBub2RlQWZmaW5pdHk6CiAgICAgICAgcmVxdWlyZWREdXJpbmdTY2hlZHVsaW5nSWdub3JlZER1cmluZ0V4ZWN1dGlvbjoKICAgICAgICAgICAgbm9kZVNlbGVjdG9yVGVybXM6CiAgICAgICAgICAgICAgICAtIG1hdGNoRXhwcmVzc2lvbnM6CiAgICAgICAgICAgICAgICAgICAgLSBrZXk6IG9wZW55dXJ0LmlvL2lzLWVkZ2Utd29ya2VyCiAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogTm90SW4KICAgICAgICAgICAgICAgICAgICAgIHZhbHVlczoKICAgICAgICAgICAgICAgICAgICAgICAgLSAidHJ1ZSIKICAgICAgICAgICAgICAgIC0gbWF0Y2hFeHByZXNzaW9uczoKICAgICAgICAgICAgICAgICAgICAtIGtleTogb3Blbnl1cnQuaW8vaXMtZWRnZS13b3JrZXIKICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBEb2VzTm90RXhpc3QKYWxhcm06CiAgICBkZXBsb3k6CiAgICAgICAgZW52OiBDTl9TVEFDSwogICAgaW1hZ2U6CiAgICAgICAgcmVwb3NpdG9yeTogcm1zYWxhcm0KICAgICAgICB0YWc6IEVJNjMyNjU0MjlfMjAyNDAxMTlfMjAyNDAxMTkyMzAwMzFfNzJiNzJmNjAKICAgIG1hdGNoTGFiZWxzOgogICAgICAgIGFwcC5rdWJlcm5ldGVzLmlvL2NvbXBvbmVudDogbW9uaXRvcmluZwogICAgICAgIGFwcC5rdWJlcm5ldGVzLmlvL2luc3RhbmNlOiBhbGFybQogICAgICAgIGFwcC5rdWJlcm5ldGVzLmlvL25hbWU6IGFsYXJtCiAgICBuYW1lOiBhbGFybQogICAgcmVwbGljYUNvdW50OiAyCiAgICByZXNvdXJjZXM6CiAgICAgICAgbGltaXRzOgogICAgICAgICAgICBjcHU6IDQwMDBtCiAgICAgICAgICAgIG1lbW9yeTogOEdpCiAgICAgICAgcmVxdWVzdHM6CiAgICAgICAgICAgIGNwdTogNDAwMG0KICAgICAgICAgICAgbWVtb3J5OiA4R2kKZGF0YWJhc2U6CiAgICBjbGllbnRDZXJ0aWZpY2F0ZUtleVN0b3JlUHdkOiBBYWJiMTIzCiAgICBjbGllbnRDZXJ0aWZpY2F0ZUtleVN0b3JlVXJsOiBmaWxlOi9ob21lL2FkbWluL2Ric3NsL2RiY2xpLmprcwogICAgaG9zdDogbnVsbAogICAgbmFtZTogYWxhcm1kYgogICAgcGFzc3dvcmQ6IEhjQENsb3VkMDEKICAgIHBvcnQ6IDMzMDYKICAgIHJlcXVpcmVTU0w6IGZhbHNlCiAgICBzZXJ2aWNlTmFtZTogbXlzcWwtbXlzcWwKICAgIHNzbE1vZGU6IERJU0FCTEVECiAgICB0bHNQcm90b2NvbHM6IFRMU3YxLjIKICAgIHRydXN0Q2VydGlmaWNhdGVLZXlTdG9yZVB3ZDogQWFiYjEyMwogICAgdHJ1c3RDZXJ0aWZpY2F0ZUtleVN0b3JlVXJsOiBmaWxlOi9ob21lL2FkbWluL2Ric3NsL2RiLmprcwogICAgdHlwZTogbXlzcWwKICAgIHVzZXI6IHJvb3QKICAgIHZlcmlmeVNlcnZlckNlcnRpZmljYXRlOiBmYWxzZQpkYXRhYmFzZU1vbml0b3I6CiAgICBob3N0OiBteXNxbC1teXNxbC5hcmdvcwogICAgbmFtZTogbW9uaXRvcmNvbmZpZwogICAgcGFzc3dvcmQ6IGFyZ29zMTIzCiAgICBwb3J0OiAzMzA2CiAgICBzZXJ2aWNlTmFtZTogbXlzcWwtbXlzcWwKICAgIHVzZXI6IHJvb3QKZGVwbG95bWVudFR5cGU6IGs4cwpnb3RvbmU6CiAgICBlbmRwb2ludDogaHR0cDovL2FjZ290b25lY29yZS5hbGFybS5zdmMKICAgIHBvcnQ6IDgzNDEKaWFtOgogICAgZW5hYmxlOiB0cnVlCmltYWdlOgogICAgcHVsbFBvbGljeTogSWZOb3RQcmVzZW50CiAgICBwdWxsU2VjcmV0czogW10KICAgIHJlZ2lzdHJ5OiBhbnQtY25zdGFjay1yZWdpc3RyeS5jbi1oYW5nemhvdS5jci5hbGl5dW5jcy5jb20vYW50Y25zdGFjawpsaWNlbnNlOgogICAgZW5hYmxlZDogdHJ1ZQogICAgc2VydmljZU5hbWU6IGFsYXJtCm1pZ3JhdGU6CiAgICBpbWFnZToKICAgICAgICByZXBvc2l0b3J5OiBhbGFybS1zcWwtbWlncmF0ZQogICAgICAgIHRhZzogRUk2MzA4NTc5Nl8yMDIzMTEwNl8yMDIzMTEzMDE3NTIxNV9hYjVlY2EzNgogICAgbmFtZTogbWlncmF0ZQpub2RlU2VsZWN0b3I6IHt9Cm5vdGlmeToKICAgIGJhc2VVcmw6IGh0dHA6Ly8xMjcuMC4wLjEKcHJvbWV0aGV1czoKICAgIHVybDogcHJvbWV0aGV1cy5leGFtcGxlLmNvbTo5MDkwCnJtczoKICAgIG1vY2s6CiAgICAgICAgZW5hYmxlZDogZmFsc2UKICAgIG1vbml0b3Jwcm9kSW50ZWdyYXRpb246IHRydWUKICAgIHVsYUNsb3NlOiBmYWxzZQogICAgdWxhVHlwZTogQ05TVEFDSwpybXNNaWdyYXRlOgogICAgaW1hZ2U6CiAgICAgICAgcmVwb3NpdG9yeTogYW50Y25zdGFjay1zcWwtbWlncmF0ZQogICAgbWlncmF0ZToKICAgICAgICBpbWFnZToKICAgICAgICAgICAgdGFnOiBtb25pdG9ycHJvZC1FSTYzMDg1Nzk2XzIwMjMxMDI1XzIwMjMxMjA1MjE1NzM5XzExODY5Y2QyCiAgICBuYW1lOiBybXMtbWlncmF0ZQogICAgcmVnaXN0cnk6IGFudC1jbnN0YWNrLXJlZ2lzdHJ5LmNuLWhhbmd6aG91LmNyLmFsaXl1bmNzLmNvbS9hbnRjbnN0YWNrCnNlcnZlcjoKICAgIHN1cHBvcnRlZFByb3RvY29sOiBodHRwCnRvbGVyYXRpb25zOgogICAgLSBlZmZlY3Q6IE5vU2NoZWR1bGUKICAgICAga2V5OiBub2RlLXJvbGUua3ViZXJuZXRlcy5pby9tYXN0ZXIKICAgICAgb3BlcmF0b3I6IEV4aXN0cwogICAgLSBlZmZlY3Q6IE5vU2NoZWR1bGUKICAgICAga2V5OiBub2RlLXJvbGUua3ViZXJuZXRlcy5pby9jbnN0YWNrLWluZnJhCiAgICAgIG9wZXJhdG9yOiBFeGlzdHMKdmVyYm9zaXR5OiA4CnZtczoKICAgIHNlbGVjdDoKICAgICAgICBuYW1lOiB2bXNlbGVjdC1hcmdvcwogICAgICAgIHBvcnQ6IDg0ODEKICAgICAgICB1cmw6IG51bGwK + timeout: 600 + annotations: + adp.aliyuncs.com/supported-platforms: '["linux/amd64","linux/arm64"]' + - name: acgotonecore + resourceVersion: 1.0.2 + type: acgotonecore + version: 1.23.0 + versionDescription: A Helm chart for Kubernetes + workload: + helm: + createNamespace: true + chartFile: "" + url: oss://cn-shanghai-cnx-distribution/1955009827675648/acgotonecore/09f877ebf85e11708a1844624b3858fe/acgotonecore-1.0.2.tgz + values: YWNnb3RvbmVjb3JlOgogICAgZW52OgogICAgICAgIFpDTEVBTl9NQVhfTE9HX0RJUl9TSVpFOiAxMDAKICAgICAgICBaQ0xFQU5fUkVTRVJWRV9EQVlTOiAxNAogICAgICAgIGNvbmZpZ19zb3VyY2U6IGRiCiAgICAgICAgZGJfY2xpZW50X2NlcnRpZmljYXRlX2tleV9zdG9yZV9wYXNzd29yZDogbm90X25lZWQKICAgICAgICBkYl9jbGllbnRfY2VydGlmaWNhdGVfa2V5X3N0b3JlX3VybDogZmlsZTovaG9tZS9hZG1pbi9kYnNzbC9kYmNsaS5qa3MKICAgICAgICBkYl9jb25uZWN0X3RpbWVvdXQ6IDUwMAogICAgICAgIGRiX2VuYWJsZWRfdGxzX3Byb3RvY29sczogVExTdjEuMgogICAgICAgIGRiX21heF9hY3RpdmU6IDgKICAgICAgICBkYl9tYXhfd2FpdDogMTAwMDAKICAgICAgICBkYl9taW5faWRsZTogOAogICAgICAgIGRiX3Bhc3N3b3JkOiBIY0BDbG91ZDAxCiAgICAgICAgZGJfcG9ydDogMzMwNgogICAgICAgIGRiX3JlcXVpcmVfc3NsOiBmYWxzZQogICAgICAgIGRiX3NjaGVtYTogYWNnb3RvbmVjb3JlCiAgICAgICAgZGJfc2VydmljZV9uYW1lOiBteXNxbC1teXNxbAogICAgICAgIGRiX3NvY2tldF90aW1lb3V0OiA1MDAwCiAgICAgICAgZGJfc3NsX21vZGU6IERJU0FCTEVECiAgICAgICAgZGJfdHJ1c3RfY2VydGlmaWNhdGVfa2V5X3N0b3JlX3Bhc3N3b3JkOiBub3RfbmVlZAogICAgICAgIGRiX3RydXN0X2NlcnRpZmljYXRlX2tleV9zdG9yZV91cmw6IGZpbGU6L2hvbWUvYWRtaW4vZGJzc2wvZGIuamtzCiAgICAgICAgZGJfdHlwZTogbXlzcWwKICAgICAgICBkYl91c2VybmFtZTogcm9vdAogICAgICAgIGRiX3ZlcmlmeV9zZXJ2ZXJfY2VydGlmaWNhdGU6IGZhbHNlCiAgICAgICAgbGlxdWliYXNlX2VuYWJsZWQ6IHRydWUKICAgICAgICBtaW5fZXZpY3RhYmxlX2lkbGVfdGltZV9taWxsaXM6IDMwMDAwCiAgICAgICAgbXNnX3JlY29yZF9jbGVhbl9jcm9uOiAwIDAgMiAqICogPwogICAgICAgIHNlcnZpY2VfdHlwZTogc29mYXJlc3QKICAgICAgICB0aW1lX2JldHdlZW5fZXZpY3Rpb25fcnVuc19taWxsaXM6IDYwMDAwCiAgICAgICAgemNsZWFuX2NvbmY6IGZyb209ODA7dG89NzA7ZGVidWc9MTtmb3JjZT0xCiAgICAgICAgemRhbF9wYXNzd29yZF9lbmNyeXB0OiBmYWxzZQogICAgICAgIHpkYWxfdXNlX2xvY2FsX2NvbmZpZ19vbmx5OiB0cnVlCmFmZmluaXR5OgogICAgbm9kZUFmZmluaXR5OgogICAgICAgIHJlcXVpcmVkRHVyaW5nU2NoZWR1bGluZ0lnbm9yZWREdXJpbmdFeGVjdXRpb246CiAgICAgICAgICAgIG5vZGVTZWxlY3RvclRlcm1zOgogICAgICAgICAgICAgICAgLSBtYXRjaEV4cHJlc3Npb25zOgogICAgICAgICAgICAgICAgICAgIC0ga2V5OiBvcGVueXVydC5pby9pcy1lZGdlLXdvcmtlcgogICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IE5vdEluCiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXM6CiAgICAgICAgICAgICAgICAgICAgICAgIC0gInRydWUiCiAgICAgICAgICAgICAgICAtIG1hdGNoRXhwcmVzc2lvbnM6CiAgICAgICAgICAgICAgICAgICAgLSBrZXk6IG9wZW55dXJ0LmlvL2lzLWVkZ2Utd29ya2VyCiAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRG9lc05vdEV4aXN0CmRlcGxveToKICAgIHNlcnZpY2VOYW1lOiBhY2dvdG9uZWNvcmUtc2VydmljZQplbnY6CiAgICBpbmZvOgogICAgICAgIGNlbGw6IGRlZmF1bHQKICAgICAgICBjb21fYWxpcGF5X2VudjogdW5zaGFyZWQKICAgICAgICBjb21fYWxpcGF5X2luc3RhbmNlaWQ6ICIwMDAwMDEiCiAgICAgICAgY29tX2FudGNsb3VkX2FudHZpcF9lbmRwb2ludDogdW5rbm93bgogICAgICAgIGRhdGFjZW50ZXI6IGRlZmF1bHQKICAgICAgICBkZXBsb3lfb2Jwcm94eTogZmFsc2UKICAgICAgICBkZXBsb3lfdHlwZTogcHJpdmF0ZQogICAgICAgIGxvZ19sZXZlbDogaW5mbwogICAgICAgIG9icHJveHlfY29uZmlnX3NlcnZlcl91cmw6IHVua25vd24KZnVsbG5hbWVPdmVycmlkZTogYWNnb3RvbmVjb3JlCmlhbV9hY2lhbWNvcmU6CiAgICBuYW1lc3BhY2U6IGlhbQogICAgc2VydmljZU5hbWU6IGlhbS1hY2lhbWNvcmUKaW1hZ2U6CiAgICBhY2dvdG9uZWNvcmU6CiAgICAgICAgcHVsbFBvbGljeTogSWZOb3RQcmVzZW50CiAgICAgICAgcmVwb3NpdG9yeTogYW50LWNuc3RhY2stcmVnaXN0cnkuY24taGFuZ3pob3UuY3IuYWxpeXVuY3MuY29tL2FudGNuc3RhY2svYWNnb3RvbmVjb3JlCiAgICAgICAgdGFnOiBtYXN0ZXJfMjAyMzExMjkxMzM2MDNfNzc4MjEyNjMKaW1hZ2VQdWxsU2VjcmV0czogW10KbmFtZU92ZXJyaWRlOiBhY2dvdG9uZWNvcmUKbm9kZVNlbGVjdG9yOiB7fQpwb2RBbm5vdGF0aW9uczoge30KcG9kU2VjdXJpdHlDb250ZXh0OiB7fQpyZXBsaWNhQ291bnQ6IDEKcmVzb3VyY2VzOgogICAgbGltaXRzOgogICAgICAgIGNwdTogMjAwMG0KICAgICAgICBtZW1vcnk6IDRHaQogICAgcmVxdWVzdHM6CiAgICAgICAgY3B1OiAyMDAwbQogICAgICAgIG1lbW9yeTogNEdpCnNlY3VyaXR5Q29udGV4dDoge30Kc2VydmljZUFjY291bnQ6CiAgICBhbm5vdGF0aW9uczoge30KICAgIGNyZWF0ZTogdHJ1ZQogICAgbmFtZTogIiIKdG9sZXJhdGlvbnM6CiAgICAtIGVmZmVjdDogTm9TY2hlZHVsZQogICAgICBrZXk6IG5vZGUtcm9sZS5rdWJlcm5ldGVzLmlvL21hc3RlcgogICAgICBvcGVyYXRvcjogRXhpc3RzCiAgICAtIGVmZmVjdDogTm9TY2hlZHVsZQogICAgICBrZXk6IG5vZGUtcm9sZS5rdWJlcm5ldGVzLmlvL2Nuc3RhY2staW5mcmEKICAgICAgb3BlcmF0b3I6IEV4aXN0cwo= + timeout: 600 + annotations: + adp.aliyuncs.com/supported-platforms: '["linux/amd64","linux/arm64"]' + path: applications/alarm-1.0.6.yaml + process: value + strategy: overwrite +status: {} +--- +apiVersion: sealer.aliyun.com/v1alpha1 +kind: Config +metadata: + creationTimestamp: "2024-02-28T07:37:47Z" + name: alarm-1.0.6-namespace +spec: + data: | + apiVersion: v1 + kind: Namespace + metadata: + creationTimestamp: null + labels: + adp.aliyuncs.com/managed-namespace: "true" + name: alarm + spec: {} + status: {} + path: applications/alarm-1.0.6-namespace.yaml + process: value + strategy: overwrite +status: {} +--- +apiVersion: sealer.aliyun.com/v1alpha1 +kind: Config +metadata: + creationTimestamp: "2024-02-28T07:37:47Z" + name: cloud-component-mananger-0.2.0-app-model +spec: + data: | + kind: Application + apiVersion: app-operator.aliyun.com/v1 + metadata: + name: cloud-component-mananger + namespace: cloud-component-mananger + labels: {} + annotations: + adp.aliyuncs.com/app-display-name: 组件管理平台 + adp.aliyuncs.com/app-spec-name: dev + adp.aliyuncs.com/application-provider: "1955009827675648" + adp.aliyuncs.com/application-vendor: antgroup + adp.aliyuncs.com/supported-platforms: '["linux/amd64"]' + spec: + name: cloud-component-mananger + version: 0.2.0 + description: '中间件管理-运维; owner : 超阳,拙月' + infrastructure: + foundationReference: + version: 2.3.0 + clusterImage: cloud-image-registry.cn-shanghai.cr.aliyuncs.com/foundations/adp-base:cnstack-2.3.0-98afc5d-163339 + platform: + code: trident + version: "" + kubeVersion: "" + pkgURL: "" + components: + - name: mysql-operator + resourceVersion: 1.8.32 + type: mysql.mysql-operator + version: 1.8.31 + groupReference: + instanceName: "" + name: mysql + version: 1.8.32 + type: OFFICIAL + provider: harmonycloud.cn + workload: + helm: + createNamespace: true + chartFile: "" + url: oss://cn-shanghai-cnx-middleware/stable/harmonycloud.cn/mysql/1.8.32/charts/mysql-operator + values: cmVwbGljYUNvdW50OiAyCgpyZXNvdXJjZXM6CiAgbGltaXRzOgogICAgY3B1OiAyMDBtCiAgICBtZW1vcnk6IDUxMk1pCiAgcmVxdWVzdHM6CiAgICBjcHU6IDEwMG0KICAgIG1lbW9yeTogMjU2TWk= + timeout: 600 + annotations: + adp.aliyuncs.com/supported-platforms: '["linux/amd64"]' + labels: + adp.aliyuncs.com/controller-manager: "true" + resources: [] + components: + - name: mysql-cmm + resourceVersion: 1.8.32 + type: mysql.mysql + version: "5.7" + groupReference: + instanceName: "" + name: mysql + version: 1.8.32 + type: OFFICIAL + provider: harmonycloud.cn + workload: + helm: + createNamespace: true + chartFile: "" + url: oss://cn-shanghai-cnx-middleware/stable/harmonycloud.cn/mysql/1.8.32/charts/mysql + values: cmVzb3VyY2VzOgogIGxpbWl0czoKICAgIGNwdTogMTAwMG0KICAgIG1lbW9yeTogMjA0OE1pCiAgcmVxdWVzdHM6CiAgICBjcHU6IDEwMDBtCiAgICBtZW1vcnk6IDIwNDhNaQoKc3RvcmFnZVNpemU6IDEwRwp2ZXJzaW9uOiAiNS43LjM5Ig== + timeout: 600 + annotations: + adp.aliyuncs.com/supported-platforms: '["linux/amd64"]' + - name: cloud-middleware-manager + resourceVersion: 0.1.4-dev23 + type: cloud-middleware-manager + version: 1.16.2 + versionDescription: A Helm chart for Kubernetes to manage middleware + workload: + helm: + createNamespace: true + chartFile: "" + url: oss://cn-shanghai-cnx-distribution/1955009827675648/cloud-middleware-manager/d61ab6fcd6fa3668fa6e4e3f5c5b237e/cloud-middleware-manager-0.1.4-dev23.tgz + values: SGVsbVBsYWluSFRUUDogZmFsc2UKYWZmaW5pdHk6IHt9CmFnZW50SW1hZ2U6CiAgICByZXBvc2l0b3J5OiByZWdpc3RyeS1pbnRlcm5hbC5hZHAuYWxpeXVuY3MuY29tOjUwMDAKY29yZUltYWdlOgogICAgcHVsbFBvbGljeTogSWZOb3RQcmVzZW50CiAgICByZXBvc2l0b3J5OiByZWcuZG9ja2VyLmFsaWJhYmEtaW5jLmNvbQogICAgdGFnOiAiIgpmdWxsbmFtZU92ZXJyaWRlOiAiIgppbWFnZToKICAgIG1hbmFnZXI6CiAgICAgICAgcHVsbFBvbGljeTogSWZOb3RQcmVzZW50CiAgICAgICAgcmVwb3NpdG9yeTogYWNzLXJlZy5hbGlwYXkuY29tL2FjbG91ZC9jbG91ZC1taWRkbGV3YXJlLW1hbmFnZXIKICAgICAgICB0YWc6IDIwMjQwMjAyMTEyMzA2X2FkNTE5ZmZhCmltYWdlUHVsbFNlY3JldHM6IFtdCm1hbmFnZXJJbml0Sm9iOgogICAgY3JlYXRlRGF0YWJhc2U6IHRydWUKICAgIGRiQWNjZXNzS2V5OiByb290CiAgICBkYkhvc3Q6IG15c3FsLWNtbQogICAgZGJOYW1lOiBjbW0KICAgIGRiUGFzc3dvcmQ6IEhjQENsb3VkMDEKICAgIGRiUG9ydDogMzMwNgogICAgZGJUeXBlOiBteXNxbAogICAgcmVzb3VyY2VzOgogICAgICAgIGxpbWl0czoKICAgICAgICAgICAgY3B1OiA2MDBtCiAgICAgICAgICAgIG1lbW9yeTogNTEyTWkKICAgICAgICByZXF1ZXN0czoKICAgICAgICAgICAgY3B1OiA2MDBtCiAgICAgICAgICAgIG1lbW9yeTogNTEyTWkKbmFtZTogY2xvdWQtbWlkZGxld2FyZS1tYW5hZ2VyCm5hbWVPdmVycmlkZTogIiIKbm9kZVNlbGVjdG9yOiB7fQpwb2RBbm5vdGF0aW9uczoge30KcG9kU2VjdXJpdHlDb250ZXh0OiB7fQpyZXBsaWNhQ291bnQ6IDEKcmVzb3VyY2VzOiB7fQpzZWN1cml0eUNvbnRleHQ6IHt9CnNlcnZpY2U6CiAgICBwb3J0OiAxODA5MAogICAgdHlwZTogQ2x1c3RlcklQCnNlcnZpY2VBY2NvdW50OgogICAgYW5ub3RhdGlvbnM6IHt9CiAgICBjcmVhdGU6IHRydWUKICAgIG5hbWU6IGNsb3VkLW1pZGRsZXdhcmUtbWFuYWdlcgp0b2xlcmF0aW9uczogW10K + timeout: 600 + annotations: + adp.aliyuncs.com/supported-platforms: '["linux/amd64"]' + - name: middleware-ops-operator + resourceVersion: 0.0.6-dev4 + type: middleware-ops-operator + version: 0.0.5-dev6 + versionDescription: A Helm chart for Kubernetes + workload: + helm: + createNamespace: true + chartFile: "" + url: oss://cn-shanghai-cnx-distribution/1955009827675648/middleware-ops-operator/de70b9bcdd982e2fbea8b0637e5393fe/middleware-ops-operator-0.0.6-dev4.tgz + values: SGVsbVBsYWluSFRUUDogZmFsc2UKYWZmaW5pdHk6IHt9CmZ1bGxuYW1lT3ZlcnJpZGU6ICIiCmltYWdlOgogICAgcHVsbFBvbGljeTogSWZOb3RQcmVzZW50CiAgICByZXBvc2l0b3J5OiBhY3MtcmVnLmFsaXBheS5jb20vYWNsb3VkL21pZGRsZXdhcmUtb3BzLW9wZXJhdG9yCiAgICB0YWc6IDIwMjQwMTMwMTcyNzA3X2Q1MDJkYjM0CmltYWdlUHVsbFNlY3JldHM6IFtdCmluZ3Jlc3M6CiAgICBhbm5vdGF0aW9uczoge30KICAgIGNsYXNzTmFtZTogIiIKICAgIGVuYWJsZWQ6IGZhbHNlCiAgICBob3N0czoKICAgICAgICAtIGhvc3Q6IGNoYXJ0LWV4YW1wbGUubG9jYWwKICAgICAgICAgIHBhdGhzOgogICAgICAgICAgICAtIHBhdGg6IC8KICAgICAgICAgICAgICBwYXRoVHlwZTogSW1wbGVtZW50YXRpb25TcGVjaWZpYwogICAgdGxzOiBbXQpuYW1lT3ZlcnJpZGU6ICIiCm5vZGVTZWxlY3Rvcjoge30KcG9kQW5ub3RhdGlvbnM6CiAgICBrdWJlY3RsLmt1YmVybmV0ZXMuaW8vZGVmYXVsdC1jb250YWluZXI6IG9wZXJhdG9yCnBvZFNlY3VyaXR5Q29udGV4dDoge30KcmJhY3Byb3h5OgogICAgaW1hZ2U6CiAgICAgICAgcHVsbFBvbGljeTogSWZOb3RQcmVzZW50CiAgICAgICAgcmVwb3NpdG9yeTogYWNzLXJlZy5hbGlwYXkuY29tL2FjbG91ZC9rdWJlLXJiYWMtcHJveHkKICAgICAgICB0YWc6IHYwLjEzLjAKICAgIGltYWdlUHVsbFNlY3JldHM6IFtdCiAgICByZXNvdXJjZXM6IHt9CiAgICBzZWN1cml0eUNvbnRleHQ6CiAgICAgICAgYWxsb3dQcml2aWxlZ2VFc2NhbGF0aW9uOiBmYWxzZQogICAgICAgIGNhcGFiaWxpdGllczoKICAgICAgICAgICAgZHJvcDoKICAgICAgICAgICAgICAgIC0gQUxMCnJlcGxpY2FDb3VudDogMQpyZXNvdXJjZXM6IHt9CnNlY3VyaXR5Q29udGV4dDoge30Kc2VydmljZToKICAgIHBvcnQ6IDgwODEKICAgIHR5cGU6IENsdXN0ZXJJUApzZXJ2aWNlQWNjb3VudDoKICAgIGFubm90YXRpb25zOiB7fQogICAgY3JlYXRlOiB0cnVlCiAgICBuYW1lOiAiIgp0b2xlcmF0aW9uczogW10K + timeout: 600 + annotations: + adp.aliyuncs.com/supported-platforms: '["linux/amd64"]' + path: applications/cloud-component-mananger-0.2.0.yaml + process: value + strategy: overwrite +status: {} +--- +apiVersion: sealer.aliyun.com/v1alpha1 +kind: Config +metadata: + creationTimestamp: "2024-02-28T07:37:47Z" + name: cloud-component-mananger-0.2.0-namespace +spec: + data: | + apiVersion: v1 + kind: Namespace + metadata: + creationTimestamp: null + labels: + adp.aliyuncs.com/managed-namespace: "true" + name: cloud-component-mananger + spec: {} + status: {} + path: applications/cloud-component-mananger-0.2.0-namespace.yaml + process: value + strategy: overwrite +status: {} +--- +apiVersion: sealer.aliyun.com/v1alpha1 +kind: Config +metadata: + creationTimestamp: "2024-02-28T07:37:46Z" + name: cluster-credential +spec: + data: | + cert.key: | + -----BEGIN PUBLIC KEY----- + MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDN5RVh+xyw2m2U4ro2FIA7mHsh + vERl8EqCorprc17t1e7roJ2oO35z4/nvSWgvn2Cx1cFk6IUh6kaETmdNMERw4UQs + dC8Ab0Hu/Vq6kI4/oQEjVDu/ZiuCh/SehquAbxZvkVGw0Wdocq+chrb3+TyA5FAh + G889ufnIS6fl0rI8vwIDAQAB + -----END PUBLIC KEY----- + path: system-components/cluster-credential.yaml + process: value|toSecret + strategy: overwrite +status: {} +--- +apiVersion: sealer.aliyun.com/v1alpha1 +kind: Config +metadata: + creationTimestamp: "2024-02-28T07:37:46Z" + name: cloud-component-mananger-0.2.0-configuration +spec: + data: | + apiVersion: v1 + kind: Secret + metadata: + creationTimestamp: null + labels: + adp.aliyuncs.com/application-configuration: "true" + adp.aliyuncs.com/application-name: cloud-component-mananger + name: cloud-component-mananger-configuration + namespace: cloud-component-mananger + stringData: + components: | + cloud-middleware-manager: + managerInitJob: + dbAccessKey: root + dbHost: mysql-cmm + dbPassword: Hc@Cloud01 + dbType: mysql + skipInitDb: false + type: Opaque + path: applications/cloud-component-mananger-0.2.0-configuration.yaml + process: value + strategy: overwrite +status: {} +--- +apiVersion: sealer.aliyun.com/v1alpha1 +kind: Config +metadata: + creationTimestamp: "2024-02-28T07:37:46Z" + name: sofams-console-1.1.0-rc1-configuration +spec: + data: | + apiVersion: v1 + kind: Secret + metadata: + creationTimestamp: null + labels: + adp.aliyuncs.com/application-configuration: "true" + adp.aliyuncs.com/application-name: sofams-console + name: sofams-console-configuration + namespace: sofams-console + stringData: + components: | + sofams-console: + database: + mysqlHost: mysql-nacos-mysql.sofa-ms.svc + mysqlPassword: Hc@Cloud01 + mysqlPort: "3306" + mysqlRootPassword: Hc@Cloud01 + mysqlUser: dsrconsole + type: mysql + replicas: 2 + resources: + limits: + cpu: "2" + memory: 4Gi + requests: + cpu: "2" + memory: 4Gi + type: Opaque + path: applications/sofams-console-1.1.0-rc1-configuration.yaml + process: value + strategy: overwrite +status: {} +--- +apiVersion: sealer.aliyun.com/v1alpha1 +kind: Config +metadata: + creationTimestamp: "2024-02-28T07:37:46Z" + name: alarm-1.0.6-configuration +spec: + data: | + apiVersion: v1 + kind: Secret + metadata: + creationTimestamp: null + labels: + adp.aliyuncs.com/application-configuration: "true" + adp.aliyuncs.com/application-name: alarm + name: alarm-configuration + namespace: alarm + stringData: + components: | + acgotonecore: + acgotonecore: + env: + db_password: Hc@Cloud01 + db_username: root + replicaCount: 1 + resources: + limits: + cpu: 0 + memory: 2Gi + requests: + cpu: 0 + memory: 2Gi + alarm: + alarm: + deploy: + env: STANDALONE + replicaCount: 1 + resources: + limits: + cpu: 2000m + memory: 4Gi + requests: + cpu: 2000m + memory: 4Gi + databaseMonitor: + host: mysql-mysql.alarm + name: alarmdb + password: Hc@Cloud01 + user: root + deploymentType: cnstack + iam: + enable: true + license: + enabled: false + notify: + baseUrl: https://10.124.42.180:30383 + prometheus: + url: https://uat-apps-fc-prometheus.faw.cn + rms: + mock: + enabled: false + mysql-mysql: + resources: + limits: + cpu: 1000m + memory: 2Gi + requests: + cpu: 1000m + memory: 2Gi + storageSize: 10G + type: Opaque + path: applications/alarm-1.0.6-configuration.yaml + process: value + strategy: overwrite +status: {} +--- +apiVersion: sealer.aliyun.com/v1alpha1 +kind: Config +metadata: + creationTimestamp: "2024-02-28T07:37:46Z" + name: cnstack-multicluster-2.2.1-configuration +spec: + data: | + apiVersion: v1 + kind: Secret + metadata: + creationTimestamp: null + labels: + adp.aliyuncs.com/application-configuration: "true" + adp.aliyuncs.com/application-name: cnstack-multicluster + name: cnstack-multicluster-configuration + namespace: cnstack-multicluster + stringData: + components: | + cnstack-multicluster: + cluster-gateway-addon-manager: + clusterGateway: + replicas: "3" + replicas: 2 + resources: + limits: + cpu: 200m + memory: 512Mi + requests: + cpu: 10m + memory: 64Mi + cluster-import-controller: + replicas: 1 + resources: + limits: + cpu: 300m + memory: 512Mi + requests: + cpu: 100m + memory: 128Mi + cluster-proxy: + replicas: 1 + resources: + limits: + cpu: 200m + memory: 256Mi + requests: + cpu: 10m + memory: 64Mi + global: + enableMapping: true + managed-serviceaccount: + replicas: 1 + resources: + limits: + cpu: 200m + memory: 256Mi + requests: + cpu: 10m + memory: 64Mi + multicluster-apiserver: + replicas: 1 + resources: + limits: + cpu: 400m + memory: 512Mi + requests: + cpu: 100m + memory: 128Mi + registration-operator-hub: + replicas: 1 + resources: + limits: + cpu: 300m + memory: 512Mi + requests: + cpu: 100m + memory: 128Mi + ocm-addon-config: + global: + enableDualStack: true + type: Opaque + path: applications/cnstack-multicluster-2.2.1-configuration.yaml + process: value + strategy: overwrite +status: {} +--- +apiVersion: sealer.aliyun.com/v1alpha1 +kind: Config +metadata: + creationTimestamp: "2024-02-28T07:37:46Z" + name: cnstack-2.3.0-configuration +spec: + data: | + apiVersion: v1 + kind: Secret + metadata: + creationTimestamp: null + labels: + adp.aliyuncs.com/application-configuration: "true" + adp.aliyuncs.com/application-name: cnstack + name: cnstack-configuration + namespace: acs-system + stringData: + components: | + chart-editor: + helmAgent: + resources: + limits: + cpu: 300m + memory: 300Mi + requests: + cpu: 50m + memory: 50Mi + main: + jvm: + maxMeta: 96m + xmn: 128m + xms: 256m + xmx: 256m + xss: 512k + resources: + limits: + cpu: 500m + memory: 600Mi + requests: + cpu: 300m + memory: 450Mi + nodeSelector: + node-role.kubernetes.io/cnstack-infra: "" + replicaCount: 2 + cnstack-controller-manager: + crds-install: + enabled: true + global: + versionMode: standard + nodeSelector: + node-role.kubernetes.io/cnstack-infra: "" + replicas: 2 + resources: + limits: + cpu: 2 + memory: 4Gi + requests: + cpu: 300m + memory: 300Mi + versionMode: standard + cnstack-ui: + audit-server: + replicas: 2 + resources: + requests: + cpu: 300m + memory: 300Mi + cn-console: + replicas: 2 + resources: + requests: + cpu: 300m + memory: 500Mi + cn-doc-center: + replicas: 2 + resources: + requests: + cpu: 100m + memory: 300Mi + cnstack-portal: + replicas: 2 + resources: + requests: + cpu: 300m + memory: 300Mi + global: + nodeSelector: + node-role.kubernetes.io/cnstack-infra: "" + versionMode: standard + cnstacklet: + agent: + replicas: 2 + resources: + limits: + cpu: 2 + memory: 4Gi + requests: + cpu: 300m + memory: 300Mi + cnstack-resource: + enabled: true + crds-install: + enabled: true + global: + nodeSelector: + node-role.kubernetes.io/cnstack-infra: "" + versionMode: standard + hnc: + enabled: true + manager: + replicas: 2 + resources: + limits: + cpu: 1 + memory: 1Gi + requests: + cpu: 100m + memory: 150Mi + cost-manager: + collector: + resources: + limits: + cpu: 1 + memory: 2Gi + requests: + cpu: 100m + memory: 300Mi + manager: + resources: + limits: + cpu: 3 + memory: 6Gi + requests: + cpu: 200m + memory: 100Mi + nodeSelector: + node-role.kubernetes.io/cnstack-infra: "" + opencost: + resources: + limits: + cpu: 3 + memory: 6Gi + requests: + cpu: 300m + memory: 200Mi + replicas: 2 + disaster-recovery: + cn_opcc: + enabled: true + harbor: + chartmuseum: + replicas: 1 + resources: + limits: + cpu: 500m + memory: 1024Mi + requests: + cpu: 100m + memory: 256Mi + core: + replicas: 2 + resources: + limits: + cpu: 1 + memory: 2Gi + requests: + cpu: 100m + memory: 256Mi + jobservice: + replicas: 2 + resources: + limits: + cpu: 1 + memory: 1Gi + requests: + cpu: 100m + memory: 256Mi + notary: + server: + replicas: 1 + resources: + limits: + cpu: 500m + memory: 1Gi + requests: + cpu: 200m + memory: 256Mi + signer: + replicas: 1 + resources: + limits: + cpu: 500m + memory: 1Gi + requests: + cpu: 100m + memory: 256Mi + portal: + replicas: 2 + resources: + limits: + cpu: 1 + memory: 1Gi + requests: + cpu: 100m + memory: 256Mi + postgresql: + instances: 3 + resources: + limits: + cpu: 1000m + memory: 2Gi + requests: + cpu: 200m + memory: 512Mi + storageSize: 20Gi + registry: + controller: + resources: + requests: + cpu: 100m + memory: 256Mi + registry: + resources: + limits: + cpu: 1 + memory: 2Gi + requests: + cpu: 100m + memory: 256Mi + replicas: 2 + trivy: + replicas: 1 + resources: + limits: + cpu: 1 + memory: 1Gi + requests: + cpu: 200m + memory: 512Mi + iam: + emissary-ingress: + controllerResources: + requests: + cpu: 200m + memory: 512Mi + replicas: 2 + resources: + requests: + cpu: 300m + memory: 512Mi + global: + nodeSelector: + node-role.kubernetes.io/cnstack-infra: "" + postgresql: + enabled: true + iam-server: + replicas: 2 + resources: + requests: + cpu: 300m + memory: 64Mi + initalize: + firstPasswordForceChange: false + keycloak: + replicas: 2 + resources: + requests: + cpu: 1 + memory: 512Mi + postgresql: + dataVolumeSize: 5Gi + instances: 3 + resources: + requests: + cpu: 250m + memory: 256Mi + ingress-controller: + resources: + requests: + cpu: 0 + memory: 512Mi + logging: + loki: + audit: + enabled: true + highAvailability: true + resources: + requests: + cpu: 50m + memory: 256Mi + retention_period: 30d + sizeRetention: + enable: false + storage: localPV + storageSize: 5Gi + controllerPanel: + enabled: true + highAvailability: true + resources: + requests: + cpu: 200m + memory: 1Gi + retention_period: 7d + sizeRetention: + enable: true + storage: localPV + storageSize: 40Gi + projects: + enabled: true + highAvailability: false + resources: + requests: + cpu: 200m + memory: 1Gi + retention_period: 7d + sizeRetention: + enable: true + storage: localPV + storageSize: 40Gi + vector: + resources: + requests: + cpu: 0 + memory: 64Mi + minio-minio: + resources: + limits: + cpu: "1" + memory: 2Gi + requests: + cpu: "1" + memory: 2Gi + storageSize: 50Gi + monitor: + controller: + replicaCount: 2 + requests: + cpu: 100m + memory: 128Mi + edge-agent: + resources: + requests: + cpu: "0" + memory: 384Mi + global: + kubeRbacProxy: + daemonSetResources: + requests: + cpu: "0" + memory: 16Mi + resources: + requests: + cpu: 10m + memory: 16Mi + kubectl: + resources: + requests: + cpu: 200m + memory: 64Mi + notification: + transParamsWithContent: false + gpu-exporter: + resources: + requests: + cpu: "0" + memory: 64Mi + grafana: + replicaCount: 2 + resources: + requests: + cpu: 100m + memory: 128Mi + kube-state-metrics: + replicaCount: 1 + resources: + requests: + cpu: 100m + memory: 512Mi + monitor-rules: + switches: + ackd: + lZero: + dashboards: true + exporter: true + rules: + alert: true + record: true + npd: + dashboards: true + exporter: true + rules: + alert: true + record: true + registry: + dashboards: true + exporter: true + rules: + alert: true + record: true + yoda: + dashboards: true + exporter: true + rules: + alert: true + record: true + kube: + apiserver: + dashboards: true + exporter: true + rules: + alert: true + record: true + controllerManager: + dashboards: true + exporter: true + rules: + alert: true + record: true + coredns: + dashboards: true + exporter: true + rules: + alert: true + record: true + etcd: + dashboards: true + exporter: true + rules: + alert: true + record: true + kubeProxy: + dashboards: true + exporter: true + rules: + alert: true + record: true + kubelet: + dashboards: true + exporter: true + rules: + alert: true + record: true + scheduler: + dashboards: true + exporter: true + rules: + alert: true + record: true + monitor: + alertmanager: + dashboards: true + exporter: true + rules: + alert: true + record: true + gpuExporter: + dashboards: true + exporter: true + rules: + alert: true + record: true + grafana: + dashboards: true + exporter: true + rules: + alert: true + record: true + kubeStateMetrics: + dashboards: true + exporter: true + rules: + alert: true + record: true + nodeExporter: + dashboards: true + exporter: true + rules: + alert: true + record: true + victoria: + dashboards: true + exporter: true + rules: + alert: true + record: true + objects: + cluster: + rules: + alert: true + namespace: + rules: + alert: true + node: + rules: + alert: true + pod: + rules: + alert: true + pvc: + rules: + alert: true + workload: + rules: + alert: true + node-exporter: + resources: + requests: + cpu: "0" + memory: 128Mi + victoria: + replicaCount: 1 + resources: + requests: + cpu: 100m + memory: 128Mi + storageRetention: 2w + vmagent: + replicaCount: 1 + resources: + requests: + cpu: 250m + memory: 384Mi + vmalert: + replicaCount: 1 + resources: + requests: + cpu: 50m + memory: 256Mi + vmalertmanager: + repeatInterval: 5m + replicaCount: 2 + resources: + requests: + cpu: 50m + memory: 64Mi + vminsert: + replicaCount: 2 + resources: + requests: + cpu: 200m + memory: 256Mi + vmselect: + capacity: 2Gi + replicaCount: 2 + resources: + requests: + cpu: 200m + memory: 256Mi + vmstorage: + capacity: 50Gi + replicaCount: 2 + resources: + requests: + cpu: 200m + memory: 1Gi + operation: + function: + resources: + limits: + cpu: 100m + memory: 200Mi + requests: + cpu: 20m + memory: 10Mi + nodeSelector: + node-role.kubernetes.io/cnstack-infra: "" + nuclio: + resources: + limits: + cpu: 800m + memory: 256Mi + requests: + cpu: 100m + memory: 64Mi + operator: + replicaCount: 1 + resources: + limits: + cpu: 800m + memory: 256Mi + requests: + cpu: 100m + memory: 64Mi + operation-console: + nodeSelector: + node-role.kubernetes.io/cnstack-infra: "" + replicas: 2 + resources: + console: + limits: + cpu: 1 + memory: 1024Mi + requests: + cpu: 100m + memory: 128Mi + consoleUI: + requests: + cpu: 100m + memory: 128Mi + operator-lifecycle-manager: + catalog: + nodeSelector: + node-role.kubernetes.io/cnstack-infra: "" + tolerations: + - effect: NoSchedule + key: node-role.kubernetes.io/master + operator: Exists + - effect: NoSchedule + key: node-role.kubernetes.io/cnstack-infra + operator: Exists + olm: + nodeSelector: + node-role.kubernetes.io/cnstack-infra: "" + tolerations: + - effect: NoSchedule + key: node-role.kubernetes.io/master + operator: Exists + - effect: NoSchedule + key: node-role.kubernetes.io/cnstack-infra + operator: Exists + package: + nodeSelector: + node-role.kubernetes.io/cnstack-infra: "" + replicaCount: 2 + tolerations: + - effect: NoSchedule + key: node-role.kubernetes.io/master + operator: Exists + - effect: NoSchedule + key: node-role.kubernetes.io/cnstack-infra + operator: Exists + postgresql-operator: + kubectl: + tolerations: + - effect: NoSchedule + key: node-role.kubernetes.io/master + operator: Exists + - effect: NoSchedule + key: node-role.kubernetes.io/cnstack-infra + operator: Exists + nodeSelector: + node-role.kubernetes.io/cnstack-infra: "" + tolerations: + - effect: NoSchedule + key: node-role.kubernetes.io/master + operator: Exists + - effect: NoSchedule + key: node-role.kubernetes.io/cnstack-infra + operator: Exists + postgresql-postgresql: + instances: 0 + type: Opaque + path: applications/cnstack-2.3.0-configuration.yaml + process: value + strategy: overwrite +status: {} +--- +apiVersion: sealer.aliyun.com/v1alpha1 +kind: Config +metadata: + creationTimestamp: "2024-02-28T07:37:46Z" + name: alarm-1.0.6-image-mapping +spec: + data: | + metadata: + creationTimestamp: null + namespace: alarm + path: applications/alarm-1.0.6-image-mapping.yaml + process: value + strategy: merge +status: {} +--- +apiVersion: sealer.aliyun.com/v1alpha1 +kind: Config +metadata: + creationTimestamp: "2024-02-28T07:37:46Z" + name: cloud-component-mananger-0.2.0-image-mapping +spec: + data: | + metadata: + creationTimestamp: null + namespace: cloud-component-mananger + path: applications/cloud-component-mananger-0.2.0-image-mapping.yaml + process: value + strategy: merge +status: {} +--- +apiVersion: sealer.aliyun.com/v1alpha1 +kind: Config +metadata: + creationTimestamp: "2024-02-28T07:37:46Z" + name: cnstack-multicluster-2.2.1-image-mapping +spec: + data: | + metadata: + creationTimestamp: null + namespace: cnstack-multicluster + path: applications/cnstack-multicluster-2.2.1-image-mapping.yaml + process: value + strategy: merge +status: {} +--- +apiVersion: sealer.aliyun.com/v1alpha1 +kind: Config +metadata: + creationTimestamp: "2024-02-28T07:37:46Z" + name: sofams-console-1.1.0-rc1-image-mapping +spec: + data: | + metadata: + creationTimestamp: null + namespace: sofams-console + path: applications/sofams-console-1.1.0-rc1-image-mapping.yaml + process: value + strategy: merge +status: {}