CN111338657B - 一种基于模板的helm参数批量配置方法 - Google Patents
一种基于模板的helm参数批量配置方法 Download PDFInfo
- Publication number
- CN111338657B CN111338657B CN202010122176.XA CN202010122176A CN111338657B CN 111338657 B CN111338657 B CN 111338657B CN 202010122176 A CN202010122176 A CN 202010122176A CN 111338657 B CN111338657 B CN 111338657B
- Authority
- CN
- China
- Prior art keywords
- template
- values
- chart
- character
- armada
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 21
- 241001440311 Armada Species 0.000 claims abstract description 33
- 238000010276 construction Methods 0.000 claims abstract description 14
- 238000009877 rendering Methods 0.000 claims abstract description 14
- 241000380131 Ammophila arenaria Species 0.000 claims description 5
- 238000009434 installation Methods 0.000 claims description 5
- 238000010367 cloning Methods 0.000 claims description 3
- 230000001419 dependent effect Effects 0.000 claims description 3
- 238000012545 processing Methods 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开一种基于模板的helm参数批量配置方法,涉及数据处理技术领域,该方法基于所有chart的模板文件库和对应环境的基本配置文件库:在部署环境之外执行构建操作,读取部署环境的values配置,确定需要的chart及版本,预校验chart,收集chart的values.yaml并组合global.yaml,预渲染运行时变量;在部署环境中执行运行操作,将构建时确定的values配置和与环境相关的变量结合,组成armada的chart格式,以chart group的形式调用kubernetes集群中的tiller来部署chart。本方法实现了集群内大规模chart values的快速配置,解决了部署和运维kubernetes集群时大量chart的values.yaml难以统一管理、维护的难题,有效的提升了kubernetes集群的管理效率。
Description
技术领域
本发明涉及数据处理技术领域,具体的说是一种基于模板的helm参数批量配置方法。
背景技术
Helm是kubernetes集群应用最好的管理,编排方案之一。其原理是将同一种应用需要的所有集群组件的配置文件集中,抽取配置可变的values到yaml文件,这样的配置文件的集合称作chart。使用helm管理一个chart,可以有效的减少管理人员编排应用时可见的配置变量,更高效,快速的实现部署和管理。但是,随着集群内安装应用的增加,需要配置的变量依然会慢慢增多,并且一个集群内的应用变量很大一部分是全局变量,每个应用本身也会有自身的局部变量,当chart拥有多个子chart时,情况更加复杂。因此,helm是一种很好的kubernetes集群应用编排方案,但集群复杂的values会给部署人员带来很大的困扰。
对于多架构多集群的部署环境,不同集群和架构下部署的同一个应用values配置必然会有差异,如何控制这种差异,并在保证正确、全面的掌握chart配置的同时尽量精简整个环境需要控制的配置变量越发显得重要。
发明内容
本发明针对目前技术发展的需求和不足之处,提供一种基于模板的helm参数批量配置方法。
本发明的一种基于模板的helm参数批量配置方法,解决上述技术问题采用的技术方案如下:
一种基于模板的helm参数批量配置方法,基于所有chart的模板文件库和对应环境的基本配置文件库,
在部署环境之外执行构建操作,读取部署环境的values配置,
在部署环境中执行运行操作,将构建时确定的values配置和与环境相关的变量结合,组成armada的chart格式,以chart group的形式调用kubernetes集群中的tiller来部署chart。
具体的,对于一个chart,模板文件库中包含一份armada格式的chart name.yaml文件,以及一份chart的values.yaml文件的拷贝;拷贝的values文件作为jinjia2模板,从中将依赖于环境的变量以chart group的形式抽取出来;从模板中抽取出来的变量随着环境变更,会在运行时渲染到模板文件中,然后组合到chart name.yaml文件中发送给armada。
更具体的,模板文件库中包含armada格式的chart模板、values模板、Runtimevars模板;
Armada格式的chart模板具体定义了armada需要的chart信息,运行时将values填充计算出的实际values后调用armada api部署;
values模板包含所有chart的values模板,values模板以chart group的格式划分,即同个chart group的chart分享一个values模板,同时,global values对应的globalvalues模板可以作用于所有的chart group中的chart;
Runtime vars模板定义了运行时变量,以环境划分。
更具体的,values模板包含chart group values模板、global values模板、custom values模板以及version values;其中,version values中包含每个chart的具体来源,包含其git地址、分支、以及具体项目路径。
具体的,构建操作包括三个步骤:
步骤一、确定需要的chart及版本:从环境基本配置文件库获取安装chart的chart名称和版本、chart的代码源地址、镜像源地址;
步骤二、预校验chart,收集chart的values.yaml并组合global.yaml:根据步骤一确定的chart及版本克隆所有安装的chart,收集chart的values的global部分,组成global.yaml,以chart group的形式收集chart values,收集chart所有镜像,Helm lint预检测chart;
步骤三、预渲染运行时变量:使用chart的模板文件库中的运行时变量,以chartgroup的形式渲染chart的values模板,检测key值是否正确。
更具体的,执行构建操作后,生成部分构建信息至部署环境的基本配置文件库中,生成的信息包含:安装chart包含镜像列表,chart的values模板文件,运行时变量拷贝;生成的信息用于支持运行和部署人员出安装包。
具体的,运行操作包括两个步骤:
步骤一、渲染运行时变量:从基本配置文件库中获取manifest名称,chart values值,运行时变量渲染至values模板中;
步骤二、组合values模板和armada格式的chart模板:将渲染后的values变量组合到armada格式的chart模板的data.values中,形成一个完整的armada格式的chart模板,调用armada服务以chart group的形式开始部署。
更具体的,运行时变量具有与values模板同样的结构,运行渲染时依次将变量填充入对应的values模板;
Values作用顺序:custom values>chart values>global values;其中,customvalues直接从custom values模板中读取。
本发明的一种基于模板的helm参数批量配置方法,与现有技术相比具有的有益效果是:
1)本发明基于模板实现了集群内大规模chart values的快速配置,方便管理人员部署、升级、管理kubernetes集群,解决部署和运维kubernetes集群时大量chart的values.yaml难以统一管理、维护的难题,有效的提升了kubernetes集群的管理效率;
2)本发明执行过程中,从所有values中按照格式提取所有使用到的镜像名称和标签,方便统一管理和部署。
附图说明
附图1是本发明的基本配置文件库示意图;
附图2是本发明的chart模板文件库示意图。
具体实施方式
为使本发明的技术方案、解决的技术问题和技术效果更加清楚明白,以下结合具体实施例,对本发明的技术方案进行清楚、完整的描述。
实施例一:
本实施例提出一种基于模板的helm参数批量配置方法,基于所有chart的模板文件库和对应环境的基本配置文件库,
在部署环境之外执行构建操作,读取部署环境的values配置,
在部署环境中执行运行操作,将构建时确定的values配置和与环境相关的变量结合,组成armada的chart格式,以chart group的形式调用kubernetes集群中的tiller来部署chart。
参考附图1,通常,执行构建操作之前,基本配置文件库包含一个或多个manifest,每个manifest包含一个或多个chart group,每个chart group包含多个chart。基本配置文件库还包含Build vars,Build vars是环境信息配置文件,其中定义了chart的版本信息、chart源的拉取地址、chart中镜像源的拉取地址等。
本实施例中,对于一个chart,模板文件库中包含一份armada格式的chartname.yaml文件,以及一份chart的values.yaml文件的拷贝;拷贝的values文件作为jinjia2模板,从中将依赖于环境的变量以chart group的形式抽取出来;从模板中抽取出来的变量随着环境变更,会在运行时渲染到模板文件中,然后组合到chart name.yaml文件中发送给armada。
参考附图2,本实施例中,模板文件库中包含armada格式的chart模板、values模板、Runtime vars模板。其中:
Armada格式的chart模板具体定义了armada需要的chart信息,运行时将values填充计算出的实际values后调用armada api部署;
values模板包含所有chart的values模板,values模板以chart group的格式划分,即同个chart group的chart分享一个values模板,同时,global values对应的globalvalues模板可以作用于所有的chart group中的chart;
Runtime vars模板定义了运行时变量,以环境划分。
values模板包含chart group values模板、global values模板、custom values模板以及version values;其中,version values中包含每个chart的具体来源,包含其git地址、分支、以及具体项目路径。
本实施例中,构建操作包括三个步骤:
步骤一、确定需要的chart及版本:从环境基本配置文件库获取安装chart的chart名称和版本、chart的代码源地址、镜像源地址;
步骤二、预校验chart,收集chart的values.yaml并组合global.yaml:根据步骤一确定的chart及版本克隆所有安装的chart,收集chart的values的global部分,组成global.yaml,以chart group的形式收集chart values,收集chart所有镜像,Helm lint预检测chart;
步骤三、预渲染运行时变量:使用chart的模板文件库中的运行时变量,以chartgroup的形式渲染chart的values模板,检测key值是否正确。
执行构建操作后,生成部分构建信息至部署环境的基本配置文件库中,生成的信息包含:安装chart包含镜像列表,chart的values模板文件,运行时变量拷贝;生成的信息用于支持运行和部署人员出安装包。
本实施例中,运行操作包括两个步骤:
步骤一、渲染运行时变量:从基本配置文件库中获取manifest名称,chart values值,运行时变量渲染至values模板中;
步骤二、组合values模板和armada格式的chart模板:将渲染后的values变量组合到armada格式的chart模板的data.values中,形成一个完整的armada格式的chart模板,调用armada服务以chart group的形式开始部署。
本实施例中,运行时变量具有与values模板同样的结构,运行渲染时依次将变量填充入对应的values模板;
Values作用顺序:custom values>chart values>global values;其中,customvalues直接从custom values模板中读取。
本实施例实施之前:假定一个k8s集群有40个chart应用,每个chart应用的values变量平均有十个,按照传统方式,每次部署时需要管理400个values,管理繁琐。如果采用本实施例的方法,那么,首先将40个chart的values制作成模板,部署前以业务逻辑或者部署经验划分values中哪些是global values,哪些是其自身的values,若每个chart中平均有两个values变量属于global,则最终能少管理78个values。本方法更优的是,为每一个环境的values模板制作一个整体的模板,部署人员部署前只需修改那些真正依赖环境的values。
综上可知,采用本发明的一种基于模板的helm参数批量配置方法,基于模板实现了集群内大规模chart values的快速配置,方便管理人员部署、升级、管理kubernetes集群,解决部署和运维kubernetes集群时大量chart的values.yaml难以统一管理、维护的难题,有效的提升了kubernetes集群的管理效率;
以上应用具体个例对本发明的原理及实施方式进行了详细阐述,这些实施例只是用于帮助理解本发明的核心技术内容。基于本发明的上述具体实施例,本技术领域的技术人员在不脱离本发明原理的前提下,对本发明所作出的任何改进和修饰,皆应落入本发明的专利保护范围。
Claims (6)
1.一种基于模板的helm参数批量配置方法,其特征在于,基于所有chart的模板文件库和对应环境的基本配置文件库,
在部署环境之外执行构建操作,读取部署环境的values配置,构建操作包括:步骤一、确定需要的chart及版本:从环境基本配置文件库获取安装chart的chart名称和版本、chart的代码源地址、镜像源地址,步骤二、预校验chart,收集chart的values.yaml并组合global.yaml:根据步骤一确定的chart及版本克隆所有安装的chart,收集chart的values的global部分,组成global.yaml,以chart group的形式收集chart values,收集chart所有镜像,Helm lint预检测chart,步骤三、预渲染运行时变量:使用chart的模板文件库中的运行时变量,以chart group的形式渲染chart的values模板,检测key值是否正确;
在部署环境中执行运行操作,包括:步骤一、渲染运行时变量:从基本配置文件库中获取manifest名称,chart values值,运行时变量渲染至values模板中,步骤二、组合values模板和armada格式的chart模板:将渲染后的values变量组合到armada格式的chart模板的data.values中,形成一个完整的armada格式的chart模板,调用armada服务以chart group的形式开始部署。
2.根据权利要求1所述的一种基于模板的helm参数批量配置方法,其特征在于,对于一个chart,模板文件库中包含一份armada格式的chart name.yaml文件,以及一份chart的values.yaml文件的拷贝;拷贝的values文件作为jinjia2模板,从中将依赖于环境的变量以chart group的形式抽取出来;从模板中抽取出来的变量随着环境变更,会在运行时渲染到模板文件中,然后组合到chart name.yaml文件中发送给armada。
3.根据权利要求2所述的一种基于模板的helm参数批量配置方法,其特征在于,所述模板文件库中包含armada格式的chart模板、values模板、Runtime vars模板;
Armada格式的chart模板具体定义了armada需要的chart信息,运行时将values填充计算出的实际values后调用armada api部署;
values模板包含所有chart的values模板,values模板以chart group的格式划分,即同个chart group的chart分享一个values模板,同时,global values对应的globalvalues模板可以作用于所有的chart group中的chart;
Runtime vars模板定义了运行时变量,以环境划分。
4.根据权利要求3所述的一种基于模板的helm参数批量配置方法,其特征在于,所述values模板包含chart group values模板、global values模板、custom values模板以及version values;其中,version values中包含每个chart的具体来源,包含其git地址、分支、以及具体项目路径。
5.根据权利要求4所述的一种基于模板的helm参数批量配置方法,其特征在于,执行构建操作后,生成部分构建信息至部署环境的基本配置文件库中,生成的信息包含:安装chart包含镜像列表,chart的values模板文件,运行时变量拷贝;生成的信息用于支持运行和部署人员出安装包。
6.根据权利要求4所述的一种基于模板的helm参数批量配置方法,其特征在于,运行时变量具有与values模板同样的结构,运行渲染时依次将变量填充入对应的values模板;
Values作用顺序:custom values > chart values > global values;其中,customvalues直接从custom values模板中读取。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010122176.XA CN111338657B (zh) | 2020-02-26 | 2020-02-26 | 一种基于模板的helm参数批量配置方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010122176.XA CN111338657B (zh) | 2020-02-26 | 2020-02-26 | 一种基于模板的helm参数批量配置方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111338657A CN111338657A (zh) | 2020-06-26 |
CN111338657B true CN111338657B (zh) | 2023-12-01 |
Family
ID=71182009
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010122176.XA Active CN111338657B (zh) | 2020-02-26 | 2020-02-26 | 一种基于模板的helm参数批量配置方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111338657B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111813420B (zh) * | 2020-07-10 | 2024-05-17 | 浪潮云信息技术股份公司 | 一种对OpenStack集群进行自动化性能测试的方法 |
CN114363400A (zh) * | 2020-09-30 | 2022-04-15 | 电科云(北京)科技有限公司 | 基于云平台的应用编排方法、装置及计算机可读存储介质 |
CN112256348B (zh) * | 2020-10-23 | 2023-12-22 | 北京浪潮数据技术有限公司 | 一种云服务平台创建方法、系统及电子设备和存储介质 |
CN114201240B (zh) * | 2022-02-21 | 2022-05-27 | 联信弘方(北京)科技股份有限公司 | 配置helm chart的方法和装置 |
CN117407008B (zh) * | 2023-12-14 | 2024-04-19 | 之江实验室 | 一种面向微小型数据中心的系统组件集群部署方法及装置 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013149192A (ja) * | 2012-01-23 | 2013-08-01 | Hitachi Systems Ltd | バッチ処理パラメータ作成システム、バッチ処理パラメータ作成方法及びバッチ処理パラメータ作成プログラム |
CN108334987A (zh) * | 2018-02-08 | 2018-07-27 | 山东汇贸电子口岸有限公司 | 一种基于小波分解-神经网络的海浪波高预测方法 |
CN109634621A (zh) * | 2018-11-30 | 2019-04-16 | 武汉烽火信息集成技术有限公司 | Openstack平台部署方法、存储介质、电子设备及系统 |
CN109815704A (zh) * | 2019-01-24 | 2019-05-28 | 中国—东盟信息港股份有限公司 | 一种Kubernetes云原生应用的安全检测方法及其系统 |
KR101985635B1 (ko) * | 2018-12-14 | 2019-06-03 | 부산대학교 산학협력단 | 컨테이너 오케스트레이터 기반의 템플릿 스크립트 생성 방법 및 템플릿 스크립트 생성 장치 |
CN109981351A (zh) * | 2019-03-06 | 2019-07-05 | 浪潮通用软件有限公司 | 一种私有云部署方法 |
CN109995594A (zh) * | 2019-04-10 | 2019-07-09 | 广州致链科技有限公司 | 区块链网络资源管理方法、装置及区块链系统 |
CN110147241A (zh) * | 2019-04-16 | 2019-08-20 | 平安普惠企业管理有限公司 | 程序配置更新方法、电子装置、计算机设备及存储介质 |
CN110704048A (zh) * | 2019-09-29 | 2020-01-17 | 北京浪潮数据技术有限公司 | 一种应用发布方法及相关装置 |
CN110825633A (zh) * | 2019-11-01 | 2020-02-21 | 江苏科技大学 | 一种针对Java语言的软件缺陷检测与提取方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9563722B2 (en) * | 2012-11-13 | 2017-02-07 | Gridquant, Inc. | Sigma algebraic approximants as a diagnostic tool in power networks |
US10042734B2 (en) * | 2016-05-09 | 2018-08-07 | Sap Se | Context tracing for software logging |
-
2020
- 2020-02-26 CN CN202010122176.XA patent/CN111338657B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013149192A (ja) * | 2012-01-23 | 2013-08-01 | Hitachi Systems Ltd | バッチ処理パラメータ作成システム、バッチ処理パラメータ作成方法及びバッチ処理パラメータ作成プログラム |
CN108334987A (zh) * | 2018-02-08 | 2018-07-27 | 山东汇贸电子口岸有限公司 | 一种基于小波分解-神经网络的海浪波高预测方法 |
CN109634621A (zh) * | 2018-11-30 | 2019-04-16 | 武汉烽火信息集成技术有限公司 | Openstack平台部署方法、存储介质、电子设备及系统 |
KR101985635B1 (ko) * | 2018-12-14 | 2019-06-03 | 부산대학교 산학협력단 | 컨테이너 오케스트레이터 기반의 템플릿 스크립트 생성 방법 및 템플릿 스크립트 생성 장치 |
CN109815704A (zh) * | 2019-01-24 | 2019-05-28 | 中国—东盟信息港股份有限公司 | 一种Kubernetes云原生应用的安全检测方法及其系统 |
CN109981351A (zh) * | 2019-03-06 | 2019-07-05 | 浪潮通用软件有限公司 | 一种私有云部署方法 |
CN109995594A (zh) * | 2019-04-10 | 2019-07-09 | 广州致链科技有限公司 | 区块链网络资源管理方法、装置及区块链系统 |
CN110147241A (zh) * | 2019-04-16 | 2019-08-20 | 平安普惠企业管理有限公司 | 程序配置更新方法、电子装置、计算机设备及存储介质 |
CN110704048A (zh) * | 2019-09-29 | 2020-01-17 | 北京浪潮数据技术有限公司 | 一种应用发布方法及相关装置 |
CN110825633A (zh) * | 2019-11-01 | 2020-02-21 | 江苏科技大学 | 一种针对Java语言的软件缺陷检测与提取方法 |
Non-Patent Citations (1)
Title |
---|
Kubernetes高可用集群的部署实践;盛乐标;周庆林;游伟倩;张予倩;;电脑知识与技术(26);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111338657A (zh) | 2020-06-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111338657B (zh) | 一种基于模板的helm参数批量配置方法 | |
KR100952251B1 (ko) | 서비스 패키지에 의해 소프트웨어 제품을 업데이트하는 방법, 컴퓨터로 구현되는 방법, 컴퓨터 판독가능 저장 매체, 및 서비스 패키지 | |
US10740093B2 (en) | Advanced packaging techniques for improving work flows | |
CN109885316B (zh) | 基于kubernetes的hdfs-hbase部署方法及装置 | |
CN108319460B (zh) | 应用程序安装包的生成方法、装置、电子设备及存储介质 | |
US7631301B2 (en) | Customizing binary content files | |
CN112558980A (zh) | 多软件包管理方法及装置 | |
JP5350428B2 (ja) | 自動プログラム生成装置、方法及びコンピュータプログラム | |
CN106775744A (zh) | 一种生成静态库的方法和装置 | |
CN110780897B (zh) | 一种代码变更方法以及装置 | |
CN101826014A (zh) | 一种软件工程源代码的分割方法 | |
CN102279765A (zh) | 预编译托存托管代码 | |
CN101788892A (zh) | 标签打印系统 | |
CN111459539B (zh) | 基于镜像分层的持续集成流水线运行方法及装置 | |
US10338910B2 (en) | Multi-tenant upgrading | |
JP2012529093A (ja) | スクリーンキャプチャに関する方法、システムおよびコンピュータ・プログラム | |
CN113986223A (zh) | 一种基于元数据快速搭建系统的方法及装置 | |
CN107608672A (zh) | 一种ui模块管理器、ui模块管理方法和系统 | |
CN115576560A (zh) | 一种动态类加载器的热重载方法、装置、设备和介质 | |
CN114625376A (zh) | 数据传递方式转化方法、装置、电子设备及可读存储介质 | |
CN113867714A (zh) | 一种适配多语言的自动代码生成方法 | |
CN112860248B (zh) | 源代码生成方法及装置 | |
CN114489704A (zh) | 基于策略的版本编译部署方法及装置 | |
JP2007115155A (ja) | プログラム構造管理装置及びプログラム構造管理プログラム | |
US11714614B2 (en) | Code generation tool for cloud-native high-performance computing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |