CN117472407A - 基于k8s集群构建的平台升级方法、装置、设备及介质 - Google Patents
基于k8s集群构建的平台升级方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN117472407A CN117472407A CN202311491169.7A CN202311491169A CN117472407A CN 117472407 A CN117472407 A CN 117472407A CN 202311491169 A CN202311491169 A CN 202311491169A CN 117472407 A CN117472407 A CN 117472407A
- Authority
- CN
- China
- Prior art keywords
- software package
- platform
- tool component
- function
- difference information
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 64
- 238000010276 construction Methods 0.000 title claims abstract description 26
- 238000012790 confirmation Methods 0.000 claims abstract description 11
- 230000004044 response Effects 0.000 claims abstract description 5
- 230000006870 function Effects 0.000 claims description 115
- 238000004088 simulation Methods 0.000 claims description 21
- 238000004891 communication Methods 0.000 claims description 18
- 238000012545 processing Methods 0.000 claims description 15
- 230000003993 interaction Effects 0.000 claims description 3
- 241001440311 Armada Species 0.000 description 15
- 241000380131 Ammophila arenaria Species 0.000 description 9
- 230000008569 process Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 4
- 238000012512 characterization method Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 101001072091 Homo sapiens ProSAAS Proteins 0.000 description 1
- 101150096185 PAAS gene Proteins 0.000 description 1
- 102100036366 ProSAAS Human genes 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011022 operating instruction Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001960 triggered effect 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/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供一种基于k8s集群构建的平台升级方法、装置、设备及介质。所述平台当前使用软件包管理器管理所述平台上运行的应用程序。该方法包括:接收所述平台的升级请求,所述升级请求包括:第二软件包。调用工具组件通过所述软件包管理器获取第一软件包与所述第二软件包之间的配置差异信息;所述工具组件用于对所述平台进行容器编排和应用部署。输出所述配置差异信息,响应于基于所述配置差异信息返回的升级确认指示,基于所述第二软件包升级所述平台。本申请的方法,避免了平台升级后生成配置差异信息发现存在错误配置需要重新升级的情况,从而提高了平台升级的效率。
Description
技术领域
本申请涉及云平台领域,尤其涉及一种基于k8s集群构建的平台升级方法、装置、设备及介质。
背景技术
随着云计算技术的迅猛发展,越来越多的企业业务都逐渐迁移到云平台上。Kubernetes(k8s)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序,k8s中可以通过软件包管理工具Helm管理和部署k8s应用程序,以实现例如应用程序的安装、升级、卸载等管理。随着企业业务的扩张,需要对基于k8s的云平台的版本进行升级和迭代,为了确保升级过程中的云平台的配置正确性和一致性,通常需要进行云平台升级前后的配置对比。然而,目前配置对比的方法存在效率较低的问题。
因此,如何提高云平台升级过程中配置对比的效率是亟需解决的问题。
发明内容
本申请提供一种基于k8s集群构建的平台升级方法、装置、设备及介质,用以解决现有技术中如何提高云平台升级过程中配置对比的效率的问题。
第一方面,本申请提供一种基于k8s集群构建的平台升级方法,所述平台当前使用软件包管理器管理所述平台上运行的应用程序;所述方法包括:
接收所述平台的升级请求,所述升级请求包括:第二软件包;
调用工具组件通过所述软件包管理器获取第一软件包与所述第二软件包之间的配置差异信息;所述工具组件用于对所述平台进行容器编排和应用部署;
输出所述配置差异信息;
响应于基于所述配置差异信息返回的升级确认指示,基于所述第二软件包升级所述平台。
可选的,所述调用工具组件通过所述软件包管理器获取所述第一软件包与所述第二软件包之间的配置差异信息,包括:
调用所述工具组件通过所述软件包管理器执行下述操作:
确定是否存在标识相同的所述第一软件包和所述第二软件包;
对于标识相同的所述第一软件包和所述第二软件包,对比两者的配置信息,得到配置差异子信息;
基于各配置差异子信息,得到所述配置差异信息。
可选的,所述基于所述第二软件包升级所述平台,包括:
使用存在配置差异子信息的第二软件包替换对应的第一软件包。
可选的,所述调用工具组件通过所述软件包管理器获取所述第一软件包与所述第二软件包之间的配置差异信息,包括:
调用所述工具组件的模拟运行功能函数,以获取所述第一软件包与所述第二软件包之间的配置差异信息。
可选的,所述调用所述工具组件的模拟运行功能函数之前,所述方法还包括:
确定所述工具组件是否具有获取所述第一软件包与所述第二软件包之间的配置差异信息的功能;
所述调用所述工具组件的模拟运行功能函数,包括:
在确定所述工具组件具有获取所述第一软件包与所述第二软件包之间的配置差异信息的功能时,调用所述工具组件的模拟运行功能函数。
可选的,所述确定所述工具组件是否具有获取所述第一软件包与所述第二软件包之间的配置差异信息的功能,包括:
若所述升级请求含有调用所述模拟运行功能函数的目标命令,则执行所述确定所述工具组件是否具有获取所述第一软件包与所述第二软件包之间的配置差异信息的功能。
可选的,所述调用所述工具组件的模拟运行功能函数,以获取所述第一软件包与所述第二软件包之间的配置差异信息之前,还包括:
在所述工具组件中添加所述模拟运行功能函数。
可选的,所述在所述工具组件中添加所述模拟运行功能函数,包括:
在所述工具组件中的第一文件中创建所述模拟运行功能函数的定义;所述第一文件为用于描述和执行数据处理流程的脚本文件;
在所述工具组件的第二文件中构建所述模拟运行功能函数的对比功能函数;所述第二文件为用于定义和部署应用程序的配置文件;
根据所述模拟运行功能函数的定义,以及,所述对比功能函数,在所述工具组件中生成所述模拟运行功能函数。
第二方面,本申请提供一种基于k8s集群构建的平台升级装置,所述平台当前使用软件包管理器管理所述平台上运行的应用程序;所述装置包括:
接收模块,用于接收所述平台的升级请求,所述升级请求包括:第二软件包;
处理模块,用于调用工具组件通过所述软件包管理器获取第一软件包与所述第二软件包之间的配置差异信息;所述工具组件用于对所述平台进行容器编排和应用部署;
输出模块,用于输出所述配置差异信息;
升级模块,用于响应于基于所述配置差异信息返回的升级确认指示,基于所述第二软件包升级所述平台。
第三方面,本申请提供一种电子设备,包括:处理器、通信接口,以及存储器;所述处理器分别与所述通信接口和所述存储器通信连接;
所述存储器存储计算机执行指令;
所述通信接口与外部设备进行通信交互;
所述处理器执行所述存储器存储的计算机执行指令,以实现如第一方面中任一项所述的方法。
第四方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如第一方面中任一项所述的基于k8s集群构建的平台升级方法。
第五方面,本申请提供一种计算机程序产品,所述计算机程序产品被处理器执行时用于实现如第一方面中任一项所述的基于k8s集群构建的平台升级方法。
本申请提供的基于k8s集群构建的平台升级方法、装置、设备及介质,通过接收平台的升级请求,调用工具组件通过软件包管理器获取第一软件包与升级所用的第二软件包之间的配置差异信息并输出该配置差异信息,若接收到基于该配置差异信息返回的升级确认指示,则表征本次升级的配置信息不存在错误信息,可以基于该第二软件包进行平台的升级,避免了平台升级后生成配置差异信息发现存在错误配置需要重新升级的情况,从而提高了平台升级的效率。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为本申请提供的一种IAAS平台升级方法的流程示意图;
图2为本申请实施例提供的一种基于k8s集群构建的平台升级方法的流程示意图;
图3为本申请实施例提供的另一种基于k8s集群构建的平台升级方法的流程示意图;
图4为本申请实施例提供的又一种基于k8s集群构建的平台升级方法的流程示意图;
图5为本申请实施例提供的一种基于k8s集群构建的平台升级装置的结构示意图;
图6为本申请实施例提供的一种电子设备的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
本申请实施例涉及的基于k8s集群构建的平台升级方法可以用于任意一种通过软件包管理工具对k8s应用程序进行管理的基于k8s集群构建的云平台,该软件包管理工具例如可以是Helm工具,该云平台例如可以是基础设施即服务(Infrastructure as aService,IAAS)云平台、平台即服务(Platform as a Service,PAAS)云平台、软件即服务(Software as aService,SAAS)云平台等,本申请对于该云平台的类型不做限定。
为了便于理解,首先以OpenStack-Helm架构的IAAS平台为例,对目前的基于k8s集群构建的平台升级方法进行详细介绍。
图1为本申请提供的一种IAAS平台升级方法的流程示意图。如图1所示,该方法包括:
在接收到平台升级指令后,首先在升级IAAS平台前备份该平台中的容器配置信息、应用程序配置信息等信息,而后调用IAAS平台的用于部署和管理容器化的应用程序的Armada工具组件,通过Armada工具组件管理该k8s容器编排平台的软件包管理器Helm,以利用该软件包管理器Helm对平台升级指令中包括的用于升级该平台的chart软件包进行渲染,解析该chart软件包中包括的用于升级改平台的配置信息。同时,软件包管理器Helm根据该chart软件包中包括的用于升级改平台的配置信息对k8s中的容器上的应用程序进行更新升级,已完成对该平台的升级。
在完成对该平台的升级后,利用Armada工具组件,通过该软件包管理器Helm读取该平台升级后的容器配置信息、应用程序配置信息等信息,并将备份的升级前的容器配置信息、应用程序配置信息等信息与该升级后的容器配置信息、应用程序配置信息等信息进行一一比对,以对该次平台升级操作进行检验,判断是否存在误升级的配置信息,或者错误的配置信息等。
然而,通过图1所示的方法进行平台的升级,可能会存在以下几个问题:
问题1:对比平台升级前后的配置信息需要在完成升级后才能进行,若根据对比结果发现存在误升级的配置信息,或者错误的配置信息等情况时,需要重新进行升级操作,以修正配置信息,从而导致对比配置信息所需的时间较长,效率较低,平台的升级效率也较低的问题。
问题2:由于平台在升级过程中,会对该平台上提供的业务功能产生影响,例如响应较慢、无法正常使用业务功能等,而现有的方法可能需要多次执行升级操作,以确保升级的准确性,由于无法确保升级操作一次性成功,因此多次升级可能会对平台的业务提供服务造成影响。
问题3:若平台中存在历史遗留的配置信息错误问题,则先升级再对配置信息进行对比,即使能够发现配置信息存在的问题,但升级过程已经对平台提供的业务造成了影响,存在不必要的损失风险。
有鉴于此,本申请提供了一种基于k8s集群构建的平台升级方法,通过在软件包管理器中增加模拟运行功能函数,在平台升级前,调用软件包管理器中的模拟运行功能函数获取平台升级前的配置信息和升级请求中的配置信息,对比获得配置差异信息,再根据该配置差异信息进行平台升级,以使在平台升级前即可获得配置差异信息,避免通过重复升级操作确保升级无误,从而提高了平台升级的效率。
本申请提供的基于k8s集群构建的平台升级方法的执行主体可以是该平台的服务器,或者是该服务器的处理芯片,还可以是实现该基于k8s集群构建的平台升级方法的软件或程序代码,例如命令行工具、集成开发环境中用于升级的插件,或者自动化脚本等。
下面通过具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
图2为本申请实施例提供的一种基于k8s集群构建的平台升级方法的流程示意图。如图2所示,该方法可以包括:
S201、接收平台的升级请求。
其中,该平台可以是前述所说的任意一种基于k8s集群构建的云平台,该平台中通过软件包管理器管理该平台上运行的应用程序。该升级请求包括:第二软件包,该第二软件包例如可以是chart包,该第二软件包中包括用于升级该平台的配置信息,例如可以是升级该平台中的应用程序的配置信息,或者重新编排该平台中的容器的配置信息。该平台可以根据该第二软件包中包括的配置信息进行升级,升级后的该平台中的配置信息与该第二软件包中的配置信息相同。
S202、调用工具组件通过软件包管理器获取第一软件包与第二软件包之间的配置差异信息。
其中,该工具组件用于对该平台进行容器编排和应用部署,例如可以是前述所说的Armada工具组件,该软件包管理器例如可以是Helm,或者是其他任意用于对该平台进行容器编排和应用部署的软件包管理工具。以该软件包管理器为软件包管理器Helm、该平台为OpenStack架构为例,可以通过该Armada工具组件调用该软件包管理器对平台进行容器编排和应用部署。
该第一软件包例如可以是chart包,用于存储该平台当前的应用程序和容器的配置信息,在k8s集群中,可以通过软件包管理器从软件包中提取配置信息。通过该软件包管理器获取第一软件包的配置信息与第二软件包的配置信息,对二者进行对比,从而获取该配置差异信息。
S203、输出配置差异信息。
输出该配置差异信息用于使平台维护人员能够根据该配置差异信息确定本次平台升级操作对应的第二软件包中的配置信息是否存在错误,若存在错误,平台维护人员即可对该第二软件包中的配置信息进行调整,以消除该错误;若不存在错误,则可以返回基于配置差异信息的升级确认指示,以指示平台执行升级操作。
其中,该配置差异信息可以输出至平台维护人员的个人设备,例如输出至平台维护人员的电脑、手机、平板等,可以通过应用程序推送、短信、页面输出等输出该配置差异信息,本申请对于该配置差异信息的输出方式不作具体限定。
S204、响应于基于配置差异信息返回的升级确认指示,基于第二软件包升级平台。
若接收到基于配置差异信息返回的升级确认指示,则表征根据该配置差异信息已确定本次升级的配置信息不存在错误信息,可以进行升级,此时可以根据该第二软件包升级该平台,以使该平台中对应位置的配置信息与该第二软件包中包括的配置信息相同。
本申请实施例提供的方法,通过接收平台的升级请求,调用工具组件通过软件包管理器获取第一软件包与升级所用的第二软件包之间的配置差异信息并输出该配置差异信息,若接收到基于该配置差异信息返回的升级确认指示,则表征本次升级的配置信息不存在错误信息,可以基于该第二软件包进行平台的升级,避免了平台升级后生成配置差异信息发现存在错误配置需要重新升级的情况,从而提高了平台升级的效率。
下面,对于前述步骤S202中如何调用工具组件通过软件包管理器获取第一软件包与第二软件包之间的配置差异信息进行详细介绍。图3为本申请实施例提供的另一种基于k8s集群构建的平台升级方法的流程示意图。如图3所示,前述步骤S202可以调用软件包管理器执行下述操作:
S301、确定是否存在标识相同的第一软件包和第二软件包。
其中,该标识例如可以是软件包的名称、编号等,若第一软件包和第二软件包的标识相同,则表征二者所对应的配置信息用于配置平台中相同位置的配置参数。若存在标识相同的第一软件包和第二软件包,则表征是对平台中现有的配置参数进行更新,若不存在标识相同的第一软件包和第二软件包,则表征是为平台添加新的配置。
S302、对于标识相同的第一软件包和第二软件包,对比两者的配置信息,得到配置差异子信息。
其中,可以对该二者中相同配置条目的配置信息进行一一对比,若存在配置信息有差异的配置条目,则该配置条目及其对应的配置信息为一条配置差异子信息。
一种可能的实现方式,该对比两者的配置差异信息的方法可以通过调用工具组件中包括的用于获取配置差异信息的函数进行对比,例如可以在软件包管理器获取两者的配置信息后,将配置信息存储至预设位置,该工具组件从该预设位置提取配置信息,并使用该对比函数进行对比。
另一种可能的实现方式,通过软件包管理器提取两者的配置信息后,输出该两者的配置信息,以在外部进行配置信息的对比,例如可以通过其他设备进行对比,或者人工进行对比,在对比后,将配置差异信息输入至该工具组件。
S303、基于各配置差异子信息,得到配置差异信息。
根据该第一软件包和第二软件包中包括的所有配置差异子信息,生成该平台本次升级的配置差异信息。
对于前述S204中基于第二软件包升级平台,可以通过以下实现方式实现:
一种可能的实现方式,使用存在配置差异子信息的第二软件包替换对应的第一软件包。在确定配置差异信息后,获取存在配置差异子信息的第二软件包,并根据该存在配置差异子信息的第二软件包的标识,确定对应的第一软件包。在该平台中将该第一软件包替换为该第二软件包,并通过软件包管理器重新获取平台中的软件包的配置信息,以对平台中的容器进行重新编排、和/或、对应用程序进行重新部署。
另一种可能的实现方式,通过软件包管理器渲染所有第二软件包,以提取第二软件包中包括的配置信息,并根据该配置信息对平台中的容器进行重新编排、和/或、对应用程序进行重新部署。
在上述任意一种实现方式下,可以通过调用该工具组件的模拟运行功能函数获取第一软件包与第二软件包之间的配置差异信息。其中,该模拟运行功能函数用于根据该软件包管理器获取的第一软件包和第二软件包中配置信息进行对比,以生成配置差异信息。
可选的,该模拟运行功能函数可以是预先设置在工具组件中的,在调用该工具组件的时候,同步调用该模拟运行功能函数。示例性的,当该软件包管理器为Helm时,该调用该软件包管理器的工具组件为Armada工具组件,该Armada工具组件通过调用该Helm获取第一软件包和第二软件包中的配置信息,并通过模拟运行功能函数对比二者的配置信息,生成配置差异信息。
可选的,在调用工具组件中的模拟运行功能函数之前,该方法还可以确定该工具组件是否具有获取第一软件包与第二软件包之间的配置差异信息的功能。若该工具组件不具有获取第一软件包与第二软件包之间的配置差异信息的功能,则需要在该工具组件中临时构建模拟运行功能函数,以实现获取配置差异信息的功能;若该工具组件具有获取第一软件包与第二软件包之间的配置差异信息的功能,则在确定工具组件具有获取第一软件包与所述第二软件包之间的配置差异信息的功能时,调用该工具组件中的模拟运行功能函数。
一种可能的实现方式,可以通过升级请求中携带的命令触发确定工具组件是否具有获取第一软件包与第二软件包之间的配置差异信息的功能的操作,若该升级请求含有调用模拟运行功能函数的目标命令,则执行确定该工具组件是否具有获取第一软件包与第二软件包之间的配置差异信息的功能。示例性的,以该工具组件为Armada为例,该目标命令可以是通过调用软件包管理器通过第二软件包中包括的配置信息升级该平台的命令修改而来。该调用软件包管理器通过第二软件包中包括的配置信息升级该平台的命令例如可以如下所示:
{Armada apply--enable-chart-cleanup/tmp/mainifest.yaml–values/tmp/override.yaml};该目标命令例如可以如下所示:
{Armada apply--enable-chart-cleanup--dry-run/tmp/mainifest.yaml--values/tmp/override.yaml}
另一种可能的实现方式,可以在升级前预先检查该工具组件是否具有获取第一软件包与第二软件包之间的配置差异信息的功能。
下面,对于前述所说的模拟运行功能函数的构建过程进行详细介绍。
可选的,在调用工具组件的模拟运行功能函数,以获取第一软件包与第二软件包之间的配置差异信息之前,该方法还可以包括在工具组件中添加模拟运行功能函数。或者,还可以是预先在工具组件中添加了该模拟运行功能函数。
以在调用工具组件的模拟运行功能函数,以获取第一软件包与第二软件包之间的配置差异信息之前,在工具组件中添加模拟运行功能函数为例,该在工具组件中添加模拟运行功能函数可以通过以下步骤实现:
图4为本申请实施例提供的又一种基于k8s集群构建的平台升级方法的流程示意图。如图4所示,该方法可以包括:
S401、在工具组件中的第一文件中创建模拟运行功能函数的定义。
其中,该第一文件为用于描述和执行数据处理流程的脚本文件。以工具组件为Armada为例,该第一文件为Armada中的apply.py文件,在该apply.py文件中新增该模拟运行功能函数的定义。该模拟运行功能函数的定义用于定义该模拟运行功能函数的功能,以及控制该Armada如何运行该模拟运行功能函数。
示例性的,该模拟运行功能函数(假设函数名为--dry-run)的定义可以如下所示:
@click.option('--dry-run',help="Just show changes",is_flag=True,default=False)
def apply_create(
ctx,locations,api,disable_update_post,disable_update_pre,
enable_chart_cleanup,metrics_output,use_doc_ref,set,tiller_host,
tiller_port,tiller_namespace,timeout,values,wait,target_manifest,
bearer_token,debug,dry_run)
S402、在工具组件的第二文件中构建模拟运行功能函数的对比功能函数。
其中,该第二文件为用于定义和部署应用程序的配置文件。继续以工具组件为Armada为例,该第一文件为Armada中的chart_deploy.py文件,该对比功能函数包括获取第一软件包的配置信息、获取第二软件包的配置信息、对比第一软件包和第二软件包的配置差异信息三个功能模块。下面分别对该三块功能模块进行介绍。
获取第一软件包的配置信息功能模块:
该对比功能函数通过获取该平台升级前的版本应用程序或服务的部署版本,以该部署版本作为存储该第一软件包的配置信息的数据的数据名称,并通过调用软件包管理器获取升级前该平台中第一软件包中的配置信息,将该第一软件包中的配置信息作为存储该第一软件包的配置信息的数据的数据值。根据上述数据名称和数据值,存储该第一软件包的配置信息。
示例性的,以软件包为chart包,以数据名称为old_release,数据值为old_values为例,该获取第一软件包的配置信息的功能的实现代码可以如下所示:
def find_chart_release(self,known_releases,release_name)
old_release=self.find_chart_release(known_releases,release_name)
old_chart=old_release.chart
old_values_string=old_release.config.raw
old_values=yaml.safe_load(old_values_string)。
获取第二软件包的配置信息功能模块:
该对比功能函数获取第二软件包的信息,以第二软件包作为存储该第二软件包的配置信息的数据的数据名称,并通过调用软件包管理器获取第二软件包中的配置信息,将该第二软件包中的配置信息作为存储该第二软件包的配置信息的数据的数据值。根据上述数据名称和数据值,存储该第二软件包的配置信息。
示例性的,以软件包为chart包,以数据名称为new chart,数据值为values为例,该获取第二软件包的配置信息的功能的实现代码可以如下所示:
chartbuilder=ChartBuilder.from_chart_doc(ch)
new_chart=chartbuilder.get_helm_chart()
values=chart.get('values',{})
对比第一软件包和第二软件包的配置差异信息功能模块:
通过获取数据差异的函数实现对相同标识的第一软件包和第二软件包的配置信息的对比,该获取数据差异的函数例如可以是get_diff()函数。以get_diff()函数为例,该功能模块的实现代码可以如下所示:
self.get_diff(old_chart,old_values,new_chart,values)
S403、根据模拟运行功能函数的定义,以及,对比功能函数,在工具组件中生成模拟运行功能函数。
本申请实施例提供的方法,通过在工具组件中构建模拟运行功能函数,以使该工具组件在平台进行升级操作前,能够通过调用软件包管理器获取第一软件包和第二软件包的配置差异信息,避免了平台升级后生成配置差异信息发现存在错误配置需要重新升级的情况,从而提高了平台升级的效率。
图5为本申请实施例提供的一种基于k8s集群构建的平台升级装置的结构示意图。如图5所示,该基于k8s集群构建的平台升级装置可以包括:接收模块11,处理模块12,输出模块13,升级模块14。
接收模块11,用于接收该平台的升级请求,该升级请求包括:第二软件包。
处理模块12,用于调用工具组件通过该软件包管理器获取第一软件包与该第二软件包之间的配置差异信息。该工具组件用于对该平台进行容器编排和应用部署。
输出模块13,用于输出该配置差异信息。
升级模块14,用于响应于基于该配置差异信息返回的升级确认指示,基于该第二软件包升级该平台。
在一种可能的实现方式下,处理模块12,具体用于调用该工具组件通过该软件包管理器执行下述操作:确定是否存在标识相同的该第一软件包和该第二软件包。对于标识相同的该第一软件包和该第二软件包,对比两者的配置信息,得到配置差异子信息。基于各配置差异子信息,得到该配置差异信息。
在该实现方式下,可选的,升级模块14,具体用于使用存在配置差异子信息的第二软件包替换对应的第一软件包。
在上述任意一种实现方式下,处理模块12,具体用于调用该工具组件的模拟运行功能函数,以获取该第一软件包与该第二软件包之间的配置差异信息。
其中,可选的,处理模块12,在调用该工具组件的模拟运行功能函数之前,还用于确定该工具组件是否具有获取该第一软件包与该第二软件包之间的配置差异信息的功能,在确定该工具组件具有获取该第一软件包与该第二软件包之间的配置差异信息的功能时,调用该工具组件的模拟运行功能函数。
可选的,处理模块12,具体用于若该升级请求含有调用该模拟运行功能函数的目标命令,则执行该确定该工具组件是否具有获取该第一软件包与该第二软件包之间的配置差异信息的功能。
在另一种可能得实现方式下,处理模块12,在调用该工具组件的模拟运行功能函数,以获取该第一软件包与该第二软件包之间的配置差异信息之前,还用于在该工具组件中添加该模拟运行功能函数。
在该实现方式中,处理模块12,具体用于在该工具组件中的第一文件中创建该模拟运行功能函数的定义。在该工具组件的第二文件中构建该模拟运行功能函数的对比功能函数。根据该模拟运行功能函数的定义,以及,该对比功能函数,在该工具组件中生成该模拟运行功能函数。其中,该第一文件为用于描述和执行数据处理流程的脚本文件。该第二文件为用于定义和部署应用程序的配置文件。
本申请实施例提供的基于k8s集群构建的平台升级装置,可以执行上述方法实施例中的基于k8s集群构建的平台升级方法,其实现原理和技术效果类似,在此不再赘述。
图6为本申请实施例提供的一种电子设备的结构示意图。其中,该电子设备用于执行前述所说的基于k8s集群构建的平台升级方法,例如可以是前述所说的云平台的服务器等。如图6所示,该电子设备600可以包括:至少一个处理器601、存储器602、通信接口603。
存储器602,用于存放程序。具体地,程序可以包括程序代码,程序代码包括计算机操作指令。
存储器602可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
处理器601用于执行存储器602存储的计算机执行指令,以实现前述方法实施例所描述的方法。其中,处理器601可能是一个CPU,或者是特定集成电路(ApplicationSpecific Integrated Circuit,简称为ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路。
处理器601通过通信接口603可以与外部设备进行通信交互,外部设备例如可以是发出升级请求的电子设备、接收配置差异信息的电子设备等。在具体实现上,如果通信接口603、存储器602以及处理器601独立实现,则通信接口603、存储器602以及处理器601可以通过总线相互连接并完成相互间的通信。总线可以是工业标准体系结构(Industry StandardArchitecture,简称为ISA)总线、外部设备互连(Peripheral Component,简称为PCI)总线或扩展工业标准体系结构(Extended Industry Standard Architecture,简称为EISA)总线等。总线可以分为地址总线、数据总线、控制总线等,但并不表示仅有一根总线或一种类型的总线。
可选的,在具体实现上,如果通信接口603、存储器602和处理器601集成在一块芯片上实现,则通信接口603、存储器602和处理器601可以通过内部接口完成通信。
本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random AccessMemory)、磁盘或者光盘等各种可以存储程序代码的介质,具体的,该计算机可读存储介质中存储有程序指令,程序指令用于上述实施例中的方法。
本申请还提供一种程序产品,该程序产品包括执行指令,该执行指令存储在可读存储介质中。计算设备的至少一个处理器可以从可读存储介质读取该执行指令,至少一个处理器执行该执行指令使得计算设备实施上述基于k8s集群构建的平台升级方法。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (10)
1.一种基于k8s集群构建的平台升级方法,其特征在于,所述平台当前使用软件包管理器管理所述平台上运行的应用程序;所述方法包括:
接收所述平台的升级请求,所述升级请求包括:第二软件包;
调用工具组件通过所述软件包管理器获取第一软件包与所述第二软件包之间的配置差异信息;所述工具组件用于对所述平台进行容器编排和应用部署;
输出所述配置差异信息;
响应于基于所述配置差异信息返回的升级确认指示,基于所述第二软件包升级所述平台。
2.根据权利要求1所述的方法,其特征在于,所述调用工具组件通过所述软件包管理器获取所述第一软件包与所述第二软件包之间的配置差异信息,包括:
调用所述工具组件通过所述软件包管理器执行下述操作:
确定是否存在标识相同的所述第一软件包和所述第二软件包;
对于标识相同的所述第一软件包和所述第二软件包,对比两者的配置信息,得到配置差异子信息;
基于各配置差异子信息,得到所述配置差异信息。
3.根据权利要求2所述的方法,其特征在于,所述基于所述第二软件包升级所述平台,包括:
使用存在配置差异子信息的第二软件包替换对应的第一软件包。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述调用工具组件通过所述软件包管理器获取所述第一软件包与所述第二软件包之间的配置差异信息,包括:
调用所述工具组件的模拟运行功能函数,以获取所述第一软件包与所述第二软件包之间的配置差异信息。
5.根据权利要求4所述的方法,其特征在于,所述调用所述工具组件的模拟运行功能函数之前,所述方法还包括:
确定所述工具组件是否具有获取所述第一软件包与所述第二软件包之间的配置差异信息的功能;
所述调用所述工具组件的模拟运行功能函数,包括:
在确定所述工具组件具有获取所述第一软件包与所述第二软件包之间的配置差异信息的功能时,调用所述工具组件的模拟运行功能函数。
6.根据权利要求5所述的方法,其特征在于,所述确定所述工具组件是否具有获取所述第一软件包与所述第二软件包之间的配置差异信息的功能,包括:
若所述升级请求含有调用所述模拟运行功能函数的目标命令,则执行所述确定所述工具组件是否具有获取所述第一软件包与所述第二软件包之间的配置差异信息的功能。
7.根据权利要求4所述的方法,其特征在于,所述调用所述工具组件的模拟运行功能函数,以获取所述第一软件包与所述第二软件包之间的配置差异信息之前,还包括:
在所述工具组件中添加所述模拟运行功能函数。
8.根据权利要求7所述的方法,其特征在于,所述在所述工具组件中添加所述模拟运行功能函数,包括:
在所述工具组件中的第一文件中创建所述模拟运行功能函数的定义;所述第一文件为用于描述和执行数据处理流程的脚本文件;
在所述工具组件的第二文件中构建所述模拟运行功能函数的对比功能函数;所述第二文件为用于定义和部署应用程序的配置文件;
根据所述模拟运行功能函数的定义,以及,所述对比功能函数,在所述工具组件中生成所述模拟运行功能函数。
9.一种基于k8s集群构建的平台升级装置,其特征在于,所述平台当前使用软件包管理器管理所述平台上运行的应用程序;所述装置包括:
接收模块,用于接收所述平台的升级请求,所述升级请求包括:第二软件包;
处理模块,用于调用工具组件通过所述软件包管理器获取第一软件包与所述第二软件包之间的配置差异信息;所述工具组件用于对所述平台进行容器编排和应用部署;
输出模块,用于输出所述配置差异信息;
升级模块,用于响应于基于所述配置差异信息返回的升级确认指示,基于所述第二软件包升级所述平台。
10.一种电子设备,其特征在于,包括:处理器,通信接口以及存储器,所述处理器分别与所述通信接口和所述存储器通信连接;
所述存储器存储计算机执行指令;
所述通信接口与外部设备进行通信交互;
所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求1-8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311491169.7A CN117472407A (zh) | 2023-11-09 | 2023-11-09 | 基于k8s集群构建的平台升级方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311491169.7A CN117472407A (zh) | 2023-11-09 | 2023-11-09 | 基于k8s集群构建的平台升级方法、装置、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117472407A true CN117472407A (zh) | 2024-01-30 |
Family
ID=89637678
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311491169.7A Pending CN117472407A (zh) | 2023-11-09 | 2023-11-09 | 基于k8s集群构建的平台升级方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117472407A (zh) |
-
2023
- 2023-11-09 CN CN202311491169.7A patent/CN117472407A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107979508B (zh) | 微服务测试方法及装置 | |
CN108830720B (zh) | 智能合约运行方法、装置、系统和计算机可读存储介质 | |
US20180219972A1 (en) | Joint servicing of software packages | |
CN107203465B (zh) | 系统接口测试方法及装置 | |
CN111857765B (zh) | 用于药物设计系统的插件系统及其生成方法和更新方法 | |
CN111459813B (zh) | 测试处理方法及装置 | |
US10896109B2 (en) | Non-monotonic eventual convergence for desired state configuration | |
CN109753300B (zh) | 一种算法升级方法、计算任务发送方法及相关装置 | |
CN112379940B (zh) | 一种可执行文件处理方法、装置、电子设备及存储介质 | |
US20230229423A1 (en) | Pushing a firmware update patch to a computing device via an out-of-band path | |
CN113986402A (zh) | 函数调用方法、装置、电子设备及存储介质 | |
CN115291946A (zh) | 鸿蒙系统移植方法、装置、电子设备及可读介质 | |
CN114721686A (zh) | 配置数据更新方法、装置、电子设备和存储介质 | |
CN114490103A (zh) | 一种操作系统接口调用方法、装置以及电子设备 | |
CN111913753A (zh) | 一种windows系统云迁移中启动方式的变更方法及系统 | |
CN116450165A (zh) | 一种快速搭建环境及部署程序的方法、系统、终端及存储介质 | |
CN113032004A (zh) | 在开发环境中管理开发作业的方法、设备和程序产品 | |
CN116541035A (zh) | 容器编排引擎的升级方法、系统、设备及介质 | |
CN116225617A (zh) | 容器实例的管理迁移方法、装置和电子设备及存储介质 | |
CN115639779A (zh) | 用于分发和执行工业控制器中的软件扩展的系统和方法 | |
CN117472407A (zh) | 基于k8s集群构建的平台升级方法、装置、设备及介质 | |
CN111475226B (zh) | 电子装置、微服务调用方法和计算机可读存储介质 | |
CN104090845A (zh) | 一种游戏自动测试方法、系统及相关设备 | |
CN113805858A (zh) | 持续部署脚本语言开发的软件的方法和装置 | |
CN113515299A (zh) | 软件开发工具包sdk热升级方法、装置、设备及存储介质 |
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 |