CN116643950B - 一种基于FaaS的云原生应用自动化运维方法 - Google Patents
一种基于FaaS的云原生应用自动化运维方法 Download PDFInfo
- Publication number
- CN116643950B CN116643950B CN202310884360.1A CN202310884360A CN116643950B CN 116643950 B CN116643950 B CN 116643950B CN 202310884360 A CN202310884360 A CN 202310884360A CN 116643950 B CN116643950 B CN 116643950B
- Authority
- CN
- China
- Prior art keywords
- maintenance
- faas
- task
- automatic operation
- function
- 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
- 238000012423 maintenance Methods 0.000 title claims abstract description 164
- 238000000034 method Methods 0.000 title claims abstract description 27
- 239000008186 active pharmaceutical agent Substances 0.000 claims abstract description 18
- 238000004364 calculation method Methods 0.000 claims abstract description 14
- 238000012544 monitoring process Methods 0.000 claims abstract description 9
- 238000001914 filtration Methods 0.000 claims abstract description 5
- 230000006870 function Effects 0.000 claims description 62
- 238000010801 machine learning Methods 0.000 claims description 9
- 230000002159 abnormal effect Effects 0.000 claims description 8
- 238000011161 development Methods 0.000 claims description 8
- 238000012545 processing Methods 0.000 claims description 8
- 230000008520 organization Effects 0.000 claims description 6
- 238000005457 optimization Methods 0.000 claims description 5
- 238000005516 engineering process Methods 0.000 claims description 4
- 238000013468 resource allocation Methods 0.000 claims description 4
- 238000013473 artificial intelligence Methods 0.000 claims description 3
- 238000004422 calculation algorithm Methods 0.000 claims description 3
- 238000012217 deletion Methods 0.000 claims description 3
- 230000037430 deletion Effects 0.000 claims description 3
- 230000004044 response Effects 0.000 claims description 3
- 230000005856 abnormality Effects 0.000 claims description 2
- 238000005538 encapsulation Methods 0.000 claims 1
- 230000008859 change Effects 0.000 abstract description 8
- 230000007246 mechanism Effects 0.000 abstract description 7
- 230000001960 triggered effect Effects 0.000 abstract description 4
- 230000008901 benefit Effects 0.000 abstract description 3
- 238000007726 management method Methods 0.000 description 8
- 238000013515 script Methods 0.000 description 7
- 230000000694 effects Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 239000004744 fabric Substances 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000013475 authorization Methods 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 244000145841 kine Species 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- RTZKZFJDLAIYFH-UHFFFAOYSA-N Diethyl ether Chemical compound CCOCC RTZKZFJDLAIYFH-UHFFFAOYSA-N 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000008531 maintenance mechanism Effects 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
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000007637 random forest analysis Methods 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 230000000246 remedial effect Effects 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 239000000523 sample Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3006—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3051—Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3065—Monitoring arrangements determined by the means or processing involved in reporting the monitored data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3089—Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
-
- 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
- Y04—INFORMATION OR COMMUNICATION TECHNOLOGIES HAVING AN IMPACT ON OTHER TECHNOLOGY AREAS
- Y04S—SYSTEMS INTEGRATING TECHNOLOGIES RELATED TO POWER NETWORK OPERATION, COMMUNICATION OR INFORMATION TECHNOLOGIES FOR IMPROVING THE ELECTRICAL POWER GENERATION, TRANSMISSION, DISTRIBUTION, MANAGEMENT OR USAGE, i.e. SMART GRIDS
- Y04S10/00—Systems supporting electrical power generation, transmission or distribution
- Y04S10/50—Systems or methods supporting the power network operation or management, involving a certain degree of interaction with the load-side end user applications
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Stored Programmes (AREA)
Abstract
本发明提出一种基于FaaS的云原生应用自动化运维方法,包括:运维策略定义和整理;使用FaaS函数计算平台开发运维任务并提供API;自定义函数计算执行引擎扩展自动化运维功能;自动化运维策略描述和部署;运维执行引擎和事件监听;进行事件过滤、策略匹配、候选任务执行、任务调度和安全检查、异常处理和日志记录。本发明利用了FaaS函数计算能够高效、快速开发的优势,运维工程师可以快速利用FaaS编写出自动化运维任务,同时又利用了云原生应用底座Kubernetes的机制,监听应用变更事件,运维工程师可以通过CRD配置运维策略将系统事件与FaaS函数绑定,从而自动触发运维任务,实现简单、高效的自动化运维。
Description
技术领域
本发明涉及DevOps领域,具体涉及一种基于FaaS的云原生应用自动化运维方法。
背景技术
随着各个行业的数字化转型,诞生了越来越多的应用,众多应用带了高昂的运维成本,而且应用的稳定性也越来越重要,关乎到各个行业的正常运转,因此提升应用的运维效率非常关键。云原生是应用的最新范式,越来越成为一种主流,因此需要为云原生应用建立自动化运维能力。
云原生应用通常部署在Kubernetes平台上,Kubernetes平台已经内置了一些自动化运维能力,比如节点失效后,节点上的应用会自动重新调度;探针失效后,容器实例会自动重建等。但是除了这些标准的自动化运维手段之外,还有很多运维动作是无法标准化的,需要结合实际环境来进行,比如:如果要实现应用的自动化开通,需要在新部署应用时,与外部系统(比如:安全中心)进行交互,对应用进行注册和授权。这种非标准化的运维工作需要结合实际情况来完成。
为了实现全面自动化,需要将非标准化的运维动作也做到自动化,通常有如下几种实现方法:
1)Kubernetes平台中提供了一种Operator扩展机制,可以通过开发一个新的Operator来定制一些自动化运维功能,但是Operator的开发和调试比较复杂,而大部分现场运维工程师并非专业的开发人员,使用Operator来实现自动化运维难度大,无法规模推广。
2)运维工程师可以通过编写脚本的方式,简单、快速地实现一些自动化运维的功能,但是一方面脚本能够实现的功能有限,无法与Kubernetes平台深度融合,另外一方面,这样零散的脚本通常缺乏现代化的管理手段,无法支持版本管理、灰度发布、按需部署等特性,运维质量难以保障。
3) 运维工程师提出具体需求,由专业的开发团队来负责自动化运维任务的开发,并提供产品化的工具产品,但是从需求提出到最终版本发布,整个过程流程比较长,无法满足个性化需求快速响应的要求,并且要实现运维自动化的全面覆盖,成本也比较高。
因此,当前已有的方式都存在着各种缺点。
发明内容
为克服现有技术的不足,本发明提出一种基于FaaS的云原生应用自动化运维方法,其利用了FaaS函数计算能够高效、快速开发的优势,运维工程师可以快速利用FaaS编写出自动化运维任务,同时又利用了云原生应用底座Kubernetes的机制,监听应用变更事件,运维工程师可以通过CRD配置运维策略将系统事件与FaaS函数绑定,从而自动触发运维任务,实现简单、高效的自动化运维。
为实现上述目的,一种基于FaaS来实现云原生应用自动化运维的方法,包括:
步骤S1:整理自动化运维策略;
步骤S2:使用FaaS函数计算平台开发运维任务并提供API;
步骤S3:在FaaS函数计算平台新增函数计算执行引擎,函数计算执行引擎扩展自动化运维功能;
步骤S4:描述和部署步骤S1中的自动化运维策略;
步骤S5:新增运维执行引擎以及进行事件监听;
步骤S6:进行事件过滤、策略匹配、候选任务执行、任务调度和安全检查、异常处理和日志记录;
进一步地,步骤S3具体为在FaaS函数计算平台上,新增一个自定义函数计算执行引擎,用于扩展自动化运维功能,执行引擎封装运维任务,简化任务的开发工作。
进一步地,步骤S4具体为在Kubernetes平台上新增一个名为Orchestration的自定义CRD资源,通过创建Orchestration对象实例,描述自动化运维策略,包括运维对象、触发事件、对应的运维任务API以及异常处理方式信息。
进一步地,步骤S5具体为新增一个运维执行引擎,通过Kubernetes的API Server(应用程序接口服务器)模块的RESTful接口以Watch模式监听平台上各种资源的创建、更新、删除和异常事件。
进一步地,步骤S6具体为:
步骤S61:运维执行引擎根据自动化运维策略中的规则,对从事件监听中采集到的事件进行过滤和匹配;
步骤S62:匹配的事件触发相应的运维任务,通过调用FaaS函数来执行;
步骤S63:任务调度和安全检查确保高风险任务得到管理员确认后才执行;
步骤S64:对于异常情况,根据策略定义进行处理,选择忽略异常或进行重试;步骤S65:函数调用信息被记录到日志文件中。
进一步地,还包括引入机器学习和人工智能,具体如下:
步骤S71: 收集和分析历史运维数据,识别出与故障相关的模式和特征;
步骤S72:基于机器学习模型,预测系统中潜在的故障风险,并采取相应的自动化运维措施;
步骤S73:利用机器学习算法优化任务调度,以提高资源利用率和响应速度。
进一步地,还包括自动化决策和智能优化,具体如下:
步骤S81:设计并实现自动化决策引擎,根据预定义的规则和策略,自动决策任务的执行顺序和优先级;
步骤S82:基于实时监测的运维数据,例如CPU利用率、内存使用量等,动态调整任务的资源分配,以优化运维效率和性能。
进一步地,还包括区块链技术应用,具体如下:
步骤S91:选择合适的区块链平台,例如Hyperledger Fabric、Ethereum等,部署区块链网络;
步骤S92:设计智能合约和链码,用于记录运维任务执行的信息和日志;
步骤S93:将关键的运维任务执行信息和日志记录到区块链上,确保数据的不可篡改性和可追溯性。
与现有技术相比,本发明的有益效果是:
1.本发明提供了一种基于FaaS的云原生应用自动化运维方法,充分利用了Serverless的优势,不仅开发效率高,并且能够充分利用FaaS底层平台的支撑能力,适合一线运维工程师快速地开发自定义运维任务;
2.本发明提供了一种基于FaaS的云原生应用自动化运维方法,充分利用Kubernetes的插件机制,将规则信息以Kubernetes的CRD的方式进行管理,方便运维工程师通过YAML配置进行统一的管理,支持GitOps等现代化运维方式;
3.本发明提供了一种基于FaaS的云原生应用自动化运维方法,通过Kubernetes的事件变更机制,能够覆盖云原生应用的部署、升级、弹性伸缩、异常重启等各种生命周期事件,解决大部分的运维自动化的要求,无须引入新的内容;
4.本发明提供了一种基于FaaS的云原生应用自动化运维方法,用户可以快速创建、编辑自动化运维任务,实时生效,无须复杂的编译、构建、发布等流程,流程环节少,可以高效,快速地构建起一套自动化运维机制。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明流程图;
图2是整体方案示意图;
图3是运维执行引擎的原理示意图。
具体实施方式
下面将结合附图、通过对本发明的优选实施方式的描述,更加清楚、完整地阐述本发明的技术方案。
相关英文名词说明:
1.Kubernetes:是一个开源的容器编排系统,用于自动化部署,扩展和管理容器化应用程序;
2.Deployments:Kubernetes中一种标准的资源对象,一个云原生应用通常由一个或者多个Deployment组成;
3.FaaS:即Function as a Service,是Serverless的一种模式,用户只需要编写一个函数即可以对外提供一个服务;
4.CRD:即Custom Resource Definition的缩写,是Kubernetes扩展机制的一部分,用户可以通过CRD来自定义某种资源类型,从而将自定义的资源信息记录到Kubernetes中;
5.Orchestration:在计算机科学中,Orchestration(编排)通常指自动配置,协调和管理计算机系统和服务;
6.RESTful:是一种软件架构风格,定义了一组约束条件和原则,遵循这些原则可以设计出简单的、可扩展的网络应用程序;
7.Watch模式:在Kubernetes中,Watch模式是指通过API监视资源的变化;
8.API:应用程序接口(Application Programming Interface),是一组预定义的规则和规格,使得不同的软件应用程序可以交互和通信;
9.Hyperledger Fabric:是一个开源的区块链框架实现,通过允许链代码在容器中独立执行来支持分布式应用程序;
10.Ethereum:是一个开源的区块链平台,支持智能合约功能。
如图1所示,本发明具体如下:
运维工程师结合自身工作经验和项目实际情况,整理自动化运维策略,定义出动作要求:当系统发生某事件时,自动执行某运维任务。
运维工程师使用FaaS函数计算平台,用Python等编程语言完成S1所述的运维任务的开发,对外提供一个可以调用的API接口,运维工程师在FaaS函数计算平台上新增一个自定义函数计算执行引擎,在自定义引擎中针对自动化运维功能进行扩展,提供公共的自动化运维基础功能,比如将到主机上执行命令、Kubernetes平台执行命令等封装为函数,从而简化运维任务FaaS函数的开发工作。
在Kubernetes平台上新增一个名为Orchestration的CRD(Custom ResourceDefinition,即Kubernetes用户自定义资源),CRD通过运维对象、触发事件、对应的运维任务API、运维任务执行异常的处理方式等字段描述S1所述自动化运维策略,表示当运维对象出现某事件后,则触发对应的运维任务的执行。
运维工程师根据运维要求,利用CRD扩展,使用YAML在Kubernetes上新增相对应的Orchestration实例,描述自动化运维策略。
增一个运维执行引擎,读取Kubernetes中用户定义的CRD信息,加载策略。
执行引擎通过Kubernetes的API Server模块的RESTful接口,以Watch模式获取Kubernetes平台上各种资源的创建、更新、删除和异常事件。
执行引擎,采集到的整个平台的事件中,基于自动化运维策略,根据对象名称、对象类型、事件类型进行过滤,得到匹配的、需要触发具体动作的事件。
执行引擎,根据匹配到的事件,检查规则的生失效状态,如果正常,则将该策略中对应的FaaS函数的调用放入任务执行的候选队列。
执行引擎定时从候选执行队列中取出当前需要调用的函数列表,对待执行函数进行合并处理,相同的任务在单位周期内仅执行一次即可,无须重复执行。
执行引擎执行对候选队列中的任务进行安全检查,针对高风险的自动化任务发送短信通知给管理人员确认,管理员确认后再自动执行。
FaaS函数的调用,如果执行失败,根据自动化运维策略则中定义的异常的处理方式来进行处理。方式一为忽略异常,即不做任何补救措施,方式二为重试,即再次尝试执行运维任务直到成功。
执行引擎的所有的函数调用的信息应该记录到日志文件中,包括成功的调用和失败的调用,方便回溯系统的变更。
当运维工程师需要新增或者修改自动化运维策略时,仅需要在FaaS函数计算平台上更新函数代码逻辑以及增删Kubernetes上的CRD对象即可,无须变动运维执行引擎和Kubernetes底座,可以实现快速构建自动化运维策略而不影响整体平台稳定性。
运维工程师将创建FaaS函数的脚本、FaaS函数代码本身、创建CRD的脚本等存放到代码仓库上,并进行版本管理。从而实现自动化运维工作的代码化和可追溯。
作为一种具体的实施例还包括引入机器学习和人工智能,具体如下:
收集历史运维数据:从日志文件、监控系统或其他数据源中收集包含事件记录和故障信息的数据。
数据预处理和特征工程:清洗数据、进行异常值处理,并提取关键特征,如时间戳、事件类型、关联的资源等。
训练机器学习模型:使用监督学习算法(如随机森林、神经网络等),训练模型以预测故障风险或自动化运维任务的执行优先级。
效果应用:根据机器学习模型的预测结果,自动触发相应的自动化运维任务或调整任务执行优先级。
作为一种具体的实施例还包括自动化决策和智能优化,具体如下:
定义自动化决策引擎规则:制定规则集,包括任务执行顺序、资源分配策略等。
实时运维数据采集:通过监控系统或指标收集器获取实时的系统性能指标、资源利用率等信息。
自动化决策和优化:根据预定义的规则和实时数据,使用自动化决策引擎进行任务执行顺序调整、资源分配优化等决策操作。
效果应用:根据自动化决策引擎的结果,自动调整任务执行顺序,优化资源利用率,并根据实时数据实现自动化决策。
作为一种具体的实施例还包括可视化和交互界面,具体如下:
设计可视化界面:创建仪表板,包括系统状态、任务执行情况、资源利用率等图表和指标。
添加交互功能:允许用户配置自动化策略、手动触发运维任务、查看任务执行日志等功能。
效果应用:将可视化界面和交互功能集成到的自动化运维平台中,让用户可以直观地监控和管理运维任务,并进行必要的配置和操作。
作为一种具体的实施例还包括区块链技术应用,具体如下:
选择区块链平台和技术架构:例如使用Hyperledger Fabric搭建私有区块链网络。
设计智能合约和链码:创建智能合约和链码,用于记录运维任务执行信息和日志。
将关键信息记录到区块链上:将运维任务执行的关键信息、事件记录和日志记录等存储到区块链上,确保数据的不可篡改性和可追溯性。
效果应用:通过区块链技术,确保自动化运维任务执行信息的安全性和可靠性,并提供可追溯的数据记录。
图2为整体方案示意图。如图所示,整个方法涉及到FaaS平台,Kubernetes平台和运维执行引擎模块。其中FaaS平台提供了函数计算的能力,用户只需要提交函数代码即可以快速完成功能的实现,由FaaS平台统一提供各种非功能性支撑能力,比如快速发布、按需部署、按需启动、灰度发布等,可以大幅降低运维开发人员的使用和运维成本。Kubernetes是容器集群管理系统,云原生应用运行在Kubernetes平台内,云原生应用的各种变更,比如新建应用、应用扩缩容、实例重启等都会对应于Kubernetes平台上资源对象的变化。产生变更事件。运维执行引擎为本方法新增的模块,用来连接Kubernetes的事件和FaaS上编写的函数功能。
图3为运维执行引擎的原理示意图。如图所示,其关键原理如下:
A1)运维执行引擎使用Kubernetes API Server提供的RESTFul的API接口,对NameSpace、Deployment、Pod、CRD等资源进行watch,比如:/api/v1/namespaces/ns1/pods?watch=true,表示对ns1这个namespace下的所有的Pod进行订阅,API Server会返回Pod的所有的变更事件。当收到Kubernetes事件后,先对事件信息进行规整,然后开始下一步处理流程。
A2)运维执行引擎首先判断此事件是否为Orchestration规则的更新,如果是,转到步骤A3,否则继续步骤A4。
A3)如A2所述,当发现Orchestration存在更新事件时,表明用户此时修改了自动化运维规则,因此根据事件信息解析出存在变更的规则,使用API Server的API接口查询详细信息并加载到程序中。
A4)运维执行引擎根据事件信息遍历所有的自动化运维规则,判断此事件是否能够匹配到运维规则,如果匹配到则将规则对应的自动化运维任务放入待执行队列。
A5)从A4所述的待执行队列中读取待执行的运维任务,并对任务进行合并,将多个事件触发的相同任务进行合并,执行精简后的任务。
下面通过一个具体的实施例来对本发明做进一步说明。
本实施例以部署应用时自动向安全中心进行注册为例来进行说明。通常在一个复杂的应用系统中,会通过安全中心来进行统一的认证和权限管理,当部署一个新的应用时,需要将新应用的信息上报到安全中心,以进行权限管理。传统模式下,这一过程通常由运维工程师在进行系统部署时手工进行处理,先收集新系统的信息,并通过邮件等方式反馈给安全中心的运维人员,而通过本方法,可以实现这一过程的自动化。
具体实施步骤如下:
A1)使用开源的TriggerMesh软件搭建一个FaaS平台,TriggerMesh是基于Knative的开源Serverless平台,提供了一种简单的FaaS函数计算能力,通过TriggerMesh运维工程师可以使用一条Kubectl命令将Python脚本等创建为函数服务,由TriggerMesh提供版本管理、调度等通用支撑能力,降低运维工程师的研发和管理门槛。
A2)使用kubectl apply -f function.yaml命令创建一个TriggerMesh的Function,runtime选python,使用Python来编写安全中心注册逻辑,即根据Kubernetes的Deployment对象信息,调用安全中心的接口,将应用的信息注册到安全中心,并生成应用的唯一编码,方便安全管理员进行审批授权等操作。函数计算定义function.yaml的关键内容表示如下:
apiVersion: extensions.triggermesh.io/v1alpha1
kind: Function # 创建一个Function的CRD资源;
metadata:
name: sec-gw-new-app-reg # 函数计算的名称;
spec:
runtime: python # 函数计算的执行引擎(语言类型);
public: true
entrypoint: endpoint
code: | # 以下为Python脚本的内容,主要是安全中心的注册逻辑,这个简略表示;
import sec-gateway
def endpoint(event, context):
return sec-gateway.init(event.get("spec"))
执行完成后,使用kubectl get function可以查看到刚才创建的函数对应的API调用地址,本示例为http:// sec-gw-new-app-reg.default.10.254.56.66.sslip.io。通过这种方式,运维工程师可以把自动化运维任务通过Yaml文件定义出来,并等存放到Git仓库中,实现GitOps,提升质量。
A3)使用Kubectl命令在Kubernetes平台上创建一个名为Orchestration的CRD资源类型,然后创建本实例所述的自动化运维规则实例,其内容概要如下:
apiVersion: zcm/v1alpha1
kind: Orchestration # 创建一个Orchestration的CRD资源;
metadata:
name: new-app-init-security # 自动化运维策略的名称;
spec:
rules:
- name: deployment security handler # 自动化运维策略下一条运维规则的名称;
plural: deployments # 本规则针对Kubernetes的deployment对象;
filter: * # 本规则对此对象下的所有实例都适用;
enabled: true
events: ["create"] # 本规则对此对象下的新增事件适用;
webhookUrl: http:// sec-gw-new-app-reg.default.10.254.56.66.sslip.io # 本规则对应的运维任务;
failurePolicy: ignore # 运维任务失败时的异常处理方式;
可以看出此规则表示当系统新增一个deployment时,触发调用webhookUrl字段约定的接口。当用户需要新增、编辑或者删除自动化运维规则时,只需要通过使用Kubernetes的kubectl命令更新这些CRD的信息即可,极大地方便了运维工程师。
A4)使用Python语言开发一个应用程序,并通过Kubernetes API Server的这个RESTful接口来获取Deployment的所有变更事件:/apis/apps/v1/namespaces/ns1/deployments?watch=true,同时从Kubernetes的CRD资源中加载步骤A3所述的规则。由于云原生应用是部署Kubernetes上的,因此所有的事件Kubernetes都能捕捉,可以覆盖大部分的自动化运维场景。
A5)当收到Deployment事件消息后,根据A3所述的规则进行判断,根据资源名称、过滤条件、事件类型等判断是否满足规则条件,如果满足则调用webhookUrl所指定的API地址,并最终完成任务执行。整个过程运维工程师仅需要掌握几个命令以及两个YAML的编写格式即可,无须复杂的流程,可以高效、快速地构建起自动化机制。
上述具体实施方式仅仅对本发明的优选实施方式进行描述,而并非对本发明的保护范围进行限定。在不脱离本发明设计构思和精神范畴的前提下,本领域的普通技术人员根据本发明所提供的文字描述、附图对本发明的技术方案所作出的各种变形、替代和改进,均应属于本发明的保护范畴。本发明的保护范围由权利要求确定。
Claims (5)
1.一种基于FaaS来实现云原生应用自动化运维的方法,其特征在于,包括:
步骤S1:整理自动化运维策略;
步骤S2:使用FaaS函数计算平台开发运维任务并提供API;
步骤S3:在FaaS函数计算平台新增函数计算执行引擎,函数计算执行引擎扩展自动化运维功能;
步骤S4:描述和部署步骤S1中的自动化运维策略,具体为在Kubernetes平台上新增一个名为Orchestration的自定义CRD资源,通过创建Orchestration对象实例,描述自动化运维策略,包括运维对象、触发事件、对应的运维任务API以及异常处理方式信息
步骤S5:新增运维执行引擎以及进行事件监听,具体为新增一个运维执行引擎,通过Kubernetes的API Server模块的RESTful接口以Watch模式监听平台上各种资源的创建、更新、删除和异常事件;
步骤S6:进行事件过滤、策略匹配、候选任务执行、任务调度和安全检查、异常处理和日志记录,具体为:
步骤S61:运维执行引擎根据自动化运维策略中的规则,对从事件监听中采集到的事件进行过滤和匹配;
步骤S62:匹配的事件触发相应的运维任务,通过调用FaaS函数来执行;
步骤S63:任务调度和安全检查确保高风险任务得到管理员确认后才执行;
步骤S64:对于异常情况,根据策略定义进行处理,选择忽略异常或进行重试;步骤S65:函数调用信息被记录到日志文件中。
2.根据权利要求1所述的一种基于FaaS来实现云原生应用自动化运维的方法,其特征在于,步骤S3具体为在FaaS函数计算平台上,新增一个自定义函数计算执行引擎,用于扩展自动化运维功能,执行引擎封装运维任务,简化任务的开发工作。
3.根据权利要求1所述的一种基于FaaS来实现云原生应用自动化运维的方法,其特征在于,还包括引入机器学习和人工智能,具体如下:
步骤S71: 收集和分析历史运维数据,识别出与故障相关的模式和特征;
步骤S72:基于机器学习模型,预测系统中潜在的故障风险,并采取相应的自动化运维措施;
步骤S73:利用机器学习算法优化任务调度,以提高资源利用率和响应速度。
4.根据权利要求1所述的一种基于FaaS来实现云原生应用自动化运维的方法,其特征在于,还包括自动化决策和智能优化,具体如下:
步骤S81:设计并实现自动化决策引擎,根据预定义的规则和策略,自动决策任务的执行顺序和优先级;
步骤S82:基于实时监测的运维数据,动态调整任务的资源分配,优化运维效率和性能。
5.根据权利要求1所述的一种基于FaaS来实现云原生应用自动化运维的方法,其特征在于,还包括区块链技术应用,具体如下:
步骤S91:选择区块链平台,部署区块链网络;
步骤S92:设计智能合约和链码,用于记录运维任务执行的信息和日志;
步骤S93:将关键的运维任务执行信息和日志记录到区块链上,确保数据的不可篡改性和可追溯。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310884360.1A CN116643950B (zh) | 2023-07-19 | 2023-07-19 | 一种基于FaaS的云原生应用自动化运维方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310884360.1A CN116643950B (zh) | 2023-07-19 | 2023-07-19 | 一种基于FaaS的云原生应用自动化运维方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116643950A CN116643950A (zh) | 2023-08-25 |
CN116643950B true CN116643950B (zh) | 2023-10-20 |
Family
ID=87643705
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310884360.1A Active CN116643950B (zh) | 2023-07-19 | 2023-07-19 | 一种基于FaaS的云原生应用自动化运维方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116643950B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117270936B (zh) * | 2023-10-10 | 2024-03-19 | 武汉碧涯科技有限公司 | 一种云平台运维方法及系统 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107368365A (zh) * | 2017-07-25 | 2017-11-21 | 携程旅游信息技术(上海)有限公司 | 云平台自动运维方法、系统、设备及存储介质 |
CN107807859A (zh) * | 2017-10-24 | 2018-03-16 | 郑州云海信息技术有限公司 | 一种FaaS框架及其工作方法、开发运维FaaS框架的系统 |
CN109934361A (zh) * | 2019-02-25 | 2019-06-25 | 江苏电力信息技术有限公司 | 一种基于容器和大数据的自动化运维平台模型 |
CN110704164A (zh) * | 2019-09-30 | 2020-01-17 | 珠海市新德汇信息技术有限公司 | 一种基于Kubernetes技术的云原生应用平台构建方法 |
CN111984269A (zh) * | 2020-08-20 | 2020-11-24 | 第四范式(北京)技术有限公司 | 提供应用构建服务的方法及应用构建平台 |
CN112839109A (zh) * | 2021-03-04 | 2021-05-25 | 广州市品高软件股份有限公司 | 一种基于云函数和bpmn规范的云资源编排方法 |
CN113553238A (zh) * | 2021-07-23 | 2021-10-26 | 浪潮云信息技术股份公司 | 云平台资源异常自动处理系统及方法 |
WO2022037612A1 (zh) * | 2020-08-20 | 2022-02-24 | 第四范式(北京)技术有限公司 | 提供应用构建服务的方法及应用构建平台、应用部署方法和系统 |
CN114548833A (zh) * | 2022-04-22 | 2022-05-27 | 神州数码系统集成服务有限公司 | 一种一体化智慧运维控制方法、系统及运维平台 |
CN114942824A (zh) * | 2022-04-14 | 2022-08-26 | 中国联合网络通信集团有限公司 | FaaS平台函数预热方法、系统、电子设备及存储介质 |
CN115145683A (zh) * | 2022-06-22 | 2022-10-04 | 北京火山引擎科技有限公司 | 云服务实现方法及装置 |
US11614925B1 (en) * | 2021-09-27 | 2023-03-28 | Sap Se | Data model infrastructure as a service |
-
2023
- 2023-07-19 CN CN202310884360.1A patent/CN116643950B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107368365A (zh) * | 2017-07-25 | 2017-11-21 | 携程旅游信息技术(上海)有限公司 | 云平台自动运维方法、系统、设备及存储介质 |
CN107807859A (zh) * | 2017-10-24 | 2018-03-16 | 郑州云海信息技术有限公司 | 一种FaaS框架及其工作方法、开发运维FaaS框架的系统 |
CN109934361A (zh) * | 2019-02-25 | 2019-06-25 | 江苏电力信息技术有限公司 | 一种基于容器和大数据的自动化运维平台模型 |
CN110704164A (zh) * | 2019-09-30 | 2020-01-17 | 珠海市新德汇信息技术有限公司 | 一种基于Kubernetes技术的云原生应用平台构建方法 |
CN111984269A (zh) * | 2020-08-20 | 2020-11-24 | 第四范式(北京)技术有限公司 | 提供应用构建服务的方法及应用构建平台 |
WO2022037612A1 (zh) * | 2020-08-20 | 2022-02-24 | 第四范式(北京)技术有限公司 | 提供应用构建服务的方法及应用构建平台、应用部署方法和系统 |
CN112839109A (zh) * | 2021-03-04 | 2021-05-25 | 广州市品高软件股份有限公司 | 一种基于云函数和bpmn规范的云资源编排方法 |
CN113553238A (zh) * | 2021-07-23 | 2021-10-26 | 浪潮云信息技术股份公司 | 云平台资源异常自动处理系统及方法 |
US11614925B1 (en) * | 2021-09-27 | 2023-03-28 | Sap Se | Data model infrastructure as a service |
CN114942824A (zh) * | 2022-04-14 | 2022-08-26 | 中国联合网络通信集团有限公司 | FaaS平台函数预热方法、系统、电子设备及存储介质 |
CN114548833A (zh) * | 2022-04-22 | 2022-05-27 | 神州数码系统集成服务有限公司 | 一种一体化智慧运维控制方法、系统及运维平台 |
CN115145683A (zh) * | 2022-06-22 | 2022-10-04 | 北京火山引擎科技有限公司 | 云服务实现方法及装置 |
Non-Patent Citations (2)
Title |
---|
基于K8S的Docker分布式容器自动化运维系统的设计与实现;金子威;中国优秀硕士学位论文全文数据库 信息科技辑(第第5期期);I139-140 * |
基于KubeEdge的云边协同技术架构的探索;陈卫;郑炜;汤毅;;微型电脑应用(第07期);155-157 * |
Also Published As
Publication number | Publication date |
---|---|
CN116643950A (zh) | 2023-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Granchelli et al. | Towards recovering the software architecture of microservice-based systems | |
US9729615B2 (en) | System and method for collaborative designing, development, deployment, execution, monitoring and maintenance of enterprise applications | |
CN111047190A (zh) | 一种基于交互式学习技术的多元化业务建模框架系统 | |
JP7551745B2 (ja) | Mlベースのイベント・ハンドリング | |
Martínez et al. | A big data-centric architecture metamodel for Industry 4.0 | |
Salehie et al. | Self-adaptive software: Landscape and research challenges | |
TWI713846B (zh) | 領域模組運算單元,含有一企業之一模型之系統,單板運算單元,運算單元之網格,提供傳播可追溯性之方法,及非暫時性電腦程式產品 | |
WO2021001845A1 (en) | System and method for modelling and monitoring processes in organizations using digital twins | |
EP2228726B1 (en) | A method and system for task modeling of mobile phone applications | |
US20100114618A1 (en) | Management of Variants of Model of Service | |
Kirchhof et al. | Montithings: Model-driven development and deployment of reliable iot applications | |
US20090144703A1 (en) | Method and system for versioning a software system | |
CN113778500A (zh) | 一种基于DevOps的软件开发生命周期管理平台 | |
CN103441900A (zh) | 集中式跨平台自动化测试系统及其控制方法 | |
Kounev et al. | The descartes modeling language | |
CN116643950B (zh) | 一种基于FaaS的云原生应用自动化运维方法 | |
Davami et al. | Fog-based architecture for scheduling multiple workflows with high availability requirement | |
Vierhauser et al. | Developing a dsl-based approach for event-based monitoring of systems of systems: Experiences and lessons learned (e) | |
CN111324599A (zh) | 一种区块链实验系统及管理方法 | |
CN114528186A (zh) | 一种模型管理方法、装置及模型管理服务器 | |
CN114968272A (zh) | 一种算法运行方法、装置、设备、存储介质 | |
Cahon et al. | Building with paradisEO reusable parallel and distributed evolutionary algorithms | |
CN110766163B (zh) | 用于实施机器学习过程的系统 | |
CN116360739A (zh) | 一种基于可视化业务逻辑开发系统 | |
Leitão et al. | Petri net based methodology for the development of collaborative production systems |
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 |