链接:https://github.com/elastic/elasticsearch/tree/main/build-conventions

elasticsearch自动化更新

本专栏使用updatecli实现自动化版本更新与依赖管理

其配置通过编排文件updatecli-compose.yaml)实现,该文件罗列了称为Policies的自动化任务,每个任务通过配置文件(Values Files)获取项目特定细节,实际执行逻辑则来自容器镜像(Policy Sources),确保自动化过程可复现。

概览

在这里插入图片描述

章节导航

  1. Updatecli编排配置
  2. 值文件
  3. 策略
  4. 策略源(容器镜像)

第一章:Updatecli编排配置

欢迎来到使用Updatecli实现Elasticsearch项目版本更新自动化的首章教程~

维护Elasticsearch这类大型软件项目的依赖更新(包括基础容器镜像、库文件乃至内部工具)是项艰巨任务。

设想我们作为项目管理者,每天需要跟踪数十项待检查更新的内容!此时我们需要一个主清单来确保所有事项被覆盖且无遗漏。

这正是updatecli-compose.yaml文件的价值所在。

它如同Updatecli在项目中的主检查清单,虽不包含具体更新细节,但通过罗列所有待执行任务(即检查项),告知Updatecli需要更新哪些内容

何为updatecli-compose.yaml

该文件本质上是协调多个Updatecli任务的编排配置文件,是执行系列自动化更新的起点。它向updatecli compose命令传达:“这是本项目需运行的所有更新任务清单,每个任务的具体指令如下。”

参考简化版文件结构:

# `updatecli compose ...`的配置文件
policies:# 清单首项- name: 处理ironbank更新policy: ghcr.io/elastic/oblt-updatecli-policies/ironbank/templates:0.3.0@sha256:... # (策略细节简化)values:- .github/updatecli/values.d/scm.yml- .github/updatecli/values.d/ironbank.yml# 清单次项- name: 更新Updatecli策略policy: ghcr.io/updatecli/policies/autodiscovery/updatecli:0.8.0@sha256:... # (策略细节简化)values:- .github/updatecli/values.d/scm.yml- .github/updatecli/values.d/updatecli-compose.yml

该YAML文件核心是policies:列表(通过-标识),每项代表一个Updatecli需执行的更新任务。

每任务项包含:

  • name:人类可读的任务名称(如"处理ironbank更新"),便于理解任务目标
  • policy:指向具体执行指令或模板,即该任务的"操作手册"(详见策略章)
  • values:提供策略运行所需细节的文件列表,如同填写操作手册中的空白项(详见下一章值文件)

这种任务项的划分有点类似于Manus

运行机制

执行updatecli compose时,系统将:

  1. 读取updatecli-compose.yaml
  2. 遍历policies列表
  3. 获取每个策略的指令(通过policy引用)
  4. 加载values文件中的具体配置
  5. 执行策略

流程示意图:

在这里插入图片描述
IronBank是一个DeFi借贷协议,采用信用授权机制,允许用户无需抵押直接借款,主要服务于机构和高信用用户。

简言之,updatecli-compose.yaml作为中央调度器,统一管理项目所需的所有版本更新任务,确保通过单入口即可触发全量自动化更新。

总结

updatecli-compose.yaml是协调运行多个Updatecli任务的主入口,其作为检查清单具备两大功能:

  1. 罗列项目所需的全部更新任务(策略)
  2. 指引每个任务获取具体配置(值文件)

理解该文件的中心地位后,让我们深入探究策略配置的核心——值文件。

下一章:值文件


第二章:值文件

在上一章《Updatecli编排配置》中,我们了解到updatecli-compose.yaml文件是项目中Updatecli的主检查清单。它列出了所有需要运行的更新任务(策略),并指引Updatecli获取每个任务所需的具体配置。

这些"具体配置"就存储在值文件

值文件解决何种问题?

设想我们有一个操作手册(策略),描述如何更新容器镜像版本

这个手册是通用性的——它阐述着标准步骤:“查找最新版本”、“定位项目文件中镜像引用位置”、“用新版本替换旧版本”。

当项目中使用数十个不同镜像且分散在不同文件时,若为每个镜像编写独立手册将极其低效!

这正是值文件的用武之地。它们为通用操作手册提供特定场景下的专属配置,回答以下核心问题:

  • 跟踪哪个具体镜像?
  • 在哪个文件路径检索?
  • 需匹配的具体行或模式?

通过将这类项目专属信息存入独立文件,我们的操作手册(策略)得以保持通用性复用性

(可复用性的方案)

何为值文件?

值文件通常是采用key: value格式的YAML配置文件,类似为特定策略任务填写的定制表单。以下通过上章的示例片段展开说明:

# `updatecli compose ...`的配置文件
policies:- name: 处理ironbank更新policy: ghcr.io/elastic/oblt-updatecli-policies/ironbank/templates:0.3.0@sha256:...values:- .github/updatecli/values.d/scm.yml- .github/updatecli/values.d/ironbank.yml # <-- 此处即为值文件!

假设.github/updatecli/values.d/ironbank.yml内容如下(简化版):

# .github/updatecli/values.d/ironbank.yml - 简化示例
imageName: elasticsearch/elasticsearch # 需更新的镜像名称?
imageTag: 8.12.2 # 当前跟踪版本(或匹配模式)
dockerfilePath: x-pack/docker/elasticsearch/Dockerfile # 镜像引用所在文件路径

该值文件提供三项关键配置:

  • imageName:目标容器镜像名称
  • imageTag:当前版本标识(或版本模式)
  • dockerfilePath:镜像引用文件路径

策略如何消费值数据?

当Updatecli执行策略时,会加载值文件数据并将其实例化到策略中。通用策略通过占位符(如{{ .imageName }})动态获取专属配置,实现具体操作:

  1. 检索elasticsearch/elasticsearch的最新版本
  2. 扫描x-pack/docker/elasticsearch/Dockerfile文件
  3. 查找引用elasticsearch/elasticsearch的行(可能包含旧版本8.12.2
  4. 用新版本替换旧标识

底层运行机制

在这里插入图片描述

流程分解:

  1. updatecli compose读取主清单文件
  2. 定位策略项(如处理ironbank更新
  3. 解析策略模板引用地址
  4. 加载关联值文件scm.ymlironbank.yml
  5. 合并值数据并注入策略模板
  6. 策略实例化后执行具体更新操作

该过程对清单中每个策略循环执行,不同策略可复用同一模板配合不同值文件

(多态)

采用独立值文件的优势

优势描述示例
可复用性单一策略可服务多个更新任务用相同"镜像更新"策略配合valuesA.yml更新imageAvaluesB.yml更新imageB
关注点分离策略逻辑(如何更新)与项目数据(更新对象及位置)解耦"镜像更新"策略无需感知具体操作的是elasticsearch/elasticsearch镜像
可读性值文件直观展示任务目标查看ironbank.yml即可明确该任务针对特定Ironbank镜像
易维护性修改配置无需调整策略代码更新新镜像只需新建值文件或修改现有文件,策略模板保持不变

通过值文件机制,我们能在Elasticsearch等大型项目中高效管理海量依赖更新,构建灵活、清晰且易维护的自动化体系。

总结

值文件作为策略执行的燃料,具备两大特性:

  1. 配置驱动:通过键值对定制策略行为(如dockerfilePath指定操作文件)
  2. 环境隔离项目专属数据与通用策略逻辑物理分离

此设计使得版本更新流程既保持标准化,又能灵活适配项目演进需求。

下一章我们将深入探讨策略模板的设计哲学与实现细节,解密值数据如何驱动自动化操作。

下一章:策略

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/88582.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/88582.shtml
英文地址,请注明出处:http://en.pswp.cn/web/88582.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新手向:使用Python将多种图像格式统一转换为JPG

本文将详细解析一个专业的Python脚本&#xff0c;它能够将指定文件夹中的所有非JPG格式图像批量转换为JPG格式。这个脚本虽然代码量不大&#xff0c;但包含了文件操作、图像处理、异常处理等多个重要编程概念&#xff0c;非常适合初学者系统学习。环境准备在开始之前&#xff0…

深入剖析C++ RPC框架原理:有栈协程与分布式系统设计

深入剖析C RPC框架原理&#xff1a;有栈协程与分布式系统设计 &#x1f6e0;️ 第一部分&#xff1a;RPC框架核心原理与技术架构 &#x1f310; 1.1 RPC在分布式系统中的核心地位 远程过程调用&#xff08;RPC&#xff09;是现代分布式系统的基石&#xff0c;它实现了&#xf…

基于springboot+Vue的二手物品交易的设计与实现

基于springbootVue的二手物品交易的设计与实现 作者&#xff1a; Mr顺 | 某大厂全栈开发工程师 | CSDN新星计划导师 | Java领域优质创作者 技术栈&#xff1a; SpringBoot, JavaWeb, 数据库等。精通Java、微信小程序开发。 项目亮点&#xff1a; 完整可运行&#xff1a; 提供…

腾讯云轻量服务器创建快照免费API接口教程

接口简介 该API用于腾讯云轻量服务器系统盘快照创建&#xff0c;无需关机即可自动删除旧快照并创建新快照。特点包括&#xff1a; 不占用腾讯云快照配额支持自动备份策略适用于定时备份任务仅支持系统盘快照&#xff08;云硬盘需调用专用接口&#xff09; ​请求地址​ https…

C++中的智能指针(1):unique_ptr

一、背景普通指针是指向某块内存区域地址的变量。如果一个指针指向的是一块动态分配的内存区域&#xff0c;那么即使这个指针变量离开了所在的作用域&#xff0c;这块内存区域也不会被自动销毁。动态分配的内存不进行释放则会导致内存泄漏。如果一个指针指向的是一块已经被释放…

HTTPS安全机制:从加密到证书全解析

目录 1.HTTPS是什么 2.加密是什么 3.HTTPS的加密过程 3.1对称加密 3.2非对称加密 4.引入证书 4.1"中间人"攻击 4.2 引入证书机制 4.3 理解数据签名 4.4 非对称加密 对称加密 证书认证 5.常见问题 5.1 Fiddler等抓包工具&#xff0c;为啥能解析HTTPS的数据…

2024年深度学习技术主要发展分析

摘要&#xff1a;深度学习作为人工智能领域的战略级技术&#xff0c;在2024年持续取得突破性进展&#xff0c;持续重构现代战争规则&#xff0c;成为大国军事智能化竞争的核心角力点。对2024年深度学习技术热门领域的主要发展进行了综合评述。研究了深度学习技术的发展现状&…

Swift 枚举:深入理解与高效使用

Swift 枚举:深入理解与高效使用 引言 Swift 枚举(Enum)是 Swift 编程语言中的一种基本数据类型,它允许我们将一组相关的值组合在一起。枚举在 Swift 中有着广泛的应用,从简单的数据分类到复杂的业务逻辑处理,枚举都能发挥巨大的作用。本文将深入探讨 Swift 枚举的原理、…

从大模型到云游戏,国鑫SY8108G-G4如何化身“全能AI引擎”?

当大模型参数量突破万亿级&#xff0c;传统服务器在散热枷锁与扩展瓶颈前举步维艰。国鑫全新推出的 SY8108G-G4 8U8卡AI服务器 &#xff0c;以颠覆性架构支持8张600W GPU全速并行&#xff0c;结合CPU-GPU直连、冗余电源和弹性扩展三大优势&#xff0c;为AI训练、生成式创作、数…

在多个DHCP服务器的网络环境中选择指定的DHCP服务

问题 学校有两个网络&#xff0c;我电脑网线插在同一个交换机的同一个接口上&#xff0c;有时候获取的是172.27开头的IP&#xff0c;有时候获取的是192.168开头的IP。 通常第一次开机获取的是172.27的IP&#xff0c;插拔网线或重启网络接口后会变为192.168的IP。 两个网络各有…

【Nginx】实测Nginx增加第三方主动式健康检查模块

一、环境说明系统版本&#xff1a;CentOS 7.9内核版本&#xff1a;3.10.0-1160.119.1Nginx版本&#xff1a;1.26.3第三方检测模块及版本&#xff1a;nginx_upstream_check_module&#xff08;v0.4.0&#xff0c;兼容nginx 1.20&#xff09;二、nginx安装部署2.1 下载检测模块目…

pytest中mark的使用

在pytest中&#xff0c;mark&#xff08;标记&#xff09;是用于对测试用例进行分类、筛选或附加元数据的重要功能。以下是其核心使用方法&#xff1a; 1. ‌基本标记定义与使用‌ ‌注册标记‌&#xff1a;在pytest.ini中预先定义标记&#xff08;避免运行时警告&#xff09;&…

STM32N6--NPU简单介绍

关键词&#xff1a;STM32N6、生物神经元、神经网络处理单元&#xff08;NPU&#xff09;、数据流处理 参考链接&#xff1a; RM0486 Reference manual STM32N647/657xx Arm-based 32-bit MCUsST_中文论坛【资料合集】STM32N6超全资料合集&#xff08;定期更新&#xff09;B站_…

一款开源免费、通用的 WPF 主题控件包

前言 今天大姚给大家分享一款开源免费&#xff08;MIT License&#xff09;、通用的 WPF 主题控件包&#xff1a;Rubyer WPF。 WPF介绍 WPF是一个强大的桌面应用程序框架&#xff0c;用于构建具有丰富用户界面的 Windows 应用。它提供了灵活的布局、数据绑定、样式和模板、动…

windows安装python环境以及对应编辑器的详细流程

windows安装python环境以及对应编辑器的详细流程 一、安装 Python 环境 步骤 1&#xff1a;下载 Python 安装包 访问 Python 官网&#xff1a;https://www.python.org/downloads/windows/选择最新稳定版本&#xff08;如 Python 3.12.x&#xff09;&#xff0c;点击 Download W…

高保真组件库:下拉多选

制作一个高保真的下拉多选需要具备多种交互事件。 拖拽一个文本框并命名为“下拉文本输入框”和一个向下的箭头组合在一起,外观上看起来是下拉组件。为了美观调整一些边框颜色、圆角、文字左边距等。 拖拽一个矩形作为下拉选项的容器,启动阴影xy都为0 制作下拉选项:拖拽一个…

sqli-labs靶场通关笔记:第1-4关 联合注入

第1关&#xff1a;单引号闭合1.这是第1关的界面&#xff0c;让我们以id作为参数输入&#xff0c;方式为数值&#xff0c;这里输入?id1看一下。2.显示了id1的用户名和密码。分析&#xff1a;在sql注入漏洞中&#xff0c;第一步是要寻找注入点&#xff0c;即可以输入参数的地方&…

和服腰封改造:3种解构主义造型的东方美学新解

和服腰封改造&#xff1a;3种解构主义造型的东方美学新解在东京原宿的小巷里&#xff0c;一场关于和服腰封的"温柔革命"正在悄然发生。年轻设计师们将传统宽腰带拆解重构&#xff0c;创造出既保留东方神韵又充满当代气息的造型艺术。正如一位新锐设计师所说&#xff…

什么是强化学习(RL)--3

如果reward大多数情况下都是0&#xff0c;只有少数是很大的值。这种情况下就是稀疏reward的问题。比如你要教机械手臂拴螺丝&#xff0c;只有最后把螺丝栓进去才可以&#xff0c;其余机械手臂的位置都不可以。额外的reward帮agent学习。reward shaping射击游戏cs,这个游戏中&am…

彩虹云商城全解源码系统|人工客服系统

核心升级亮点 人工客服系统&#xff1a;新增智能工单在线IM双模式多端同步&#xff1a;PCH5小程序APP四端数据实时互通支付升级&#xff1a;支持数字人民币收款安全加固&#xff1a;内置Web应用防火墙(WAF) 部署教程 ▶ B站视频教程 包含&#xff1a; 宝塔环境配置&#xf…