CN111338657B - 一种基于模板的helm参数批量配置方法 - Google Patents

一种基于模板的helm参数批量配置方法 Download PDF

Info

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
Application number
CN202010122176.XA
Other languages
English (en)
Other versions
CN111338657A (zh
Inventor
傅丰
潘峰
唐晓东
蔡卫卫
高传集
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shandong Huimao Electronic Port Co Ltd
Original Assignee
Shandong Huimao Electronic Port Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shandong Huimao Electronic Port Co Ltd filed Critical Shandong Huimao Electronic Port Co Ltd
Priority to CN202010122176.XA priority Critical patent/CN111338657B/zh
Publication of CN111338657A publication Critical patent/CN111338657A/zh
Application granted granted Critical
Publication of CN111338657B publication Critical patent/CN111338657B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version 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参数批量配置方法。
背景技术
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模板中读取。
CN202010122176.XA 2020-02-26 2020-02-26 一种基于模板的helm参数批量配置方法 Active CN111338657B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (10)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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