暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Chatbot,帮助您更好的运维Kubernetes集群

1610

ChatOps是GitHub的工程师2013年提出的一种概念:“Puttingtools in the middle of the conversation”是一种新兴的方式,用来解决团队与DevOps 各种工具/平台之间的整合。通过将工具引入对话中以实现聊天驱动开发。ChatOps 是一个将人、工具、过程与自动化在全透明的流程下连接起来的模型。它有助于在同一窗口内进行协作与管路控制。Kubernetes是谷歌贡献的容器编排与管理自动化的开源平台,经过近两年的发展,已经成为容器编排领域的事实标准。本文将使用甲骨文智能机器人云服务来运维Kubernetes集群,完成对ChatOps概念落地的一种尝试。本文将分三部分描述如何通过Chatbot运维Kubernetes集群。

1.使用Wercker自动化CI/CD流程

镜像是Kubernetes 集群运行的基础,本文使用Wercker构建的镜像进行操作。Wercker是基于Docker的自动化平台,开发者通过利用Wercker提供的平台和工具,自动生成应用并部署到各种云平台,Wercker详细使用方法可以参照官网教程:http://www.wercker.com。通过wercker yaml配置文件,定义build和push pipeline。Build pipeline构建一个mvn环境,并且通过执行mvn install命令完成springboot应用程序的打包构建。Push pipeline 通过在docker环境里执行docker push操作,将build步骤中执行完成的docker image镜像推送到docker hub中存储起来。

1.1定义wercker yaml配置文件

box: combient/java-mvnbuild:    steps:    # Build Spring Boot Sample application    - script:        name: Maven install                code: mvn installpush:    steps:    # Push to public docker repo    - internal/docker-push:         username: $DOCKER_USERNAME         password: $DOCKER_PASSWORD         tag: latest         repository: $DOCKER_REPOSITORY         registry: $DOCKER_REGISTRY         cmd: java -jar  pipeline/source/target/springbootdemo-0.0.1.war                          

1.2在wercker web console 中定义workflow

导入wercker yaml配置文件,通过图形化配置界面

定义pipeline 所依赖的环境变量:

2.使用甲骨文智能机器人云服务构建对话流程

2.1 创建KubernetesBot 机器人

2.2 定义意图及实体

定义意图包含查看镜像、发布镜像、维护部署、维护服务、发布命令等。并未每个意图提供一定的训练数据。

2.3 定义客户化组件

在bot流程定义中,引用客户化组件,提供bot调用后端Kubernetes API的能力。

bot集成客户化组件代码片段:

maintenanceDeploymentAction:    component: "System.Output"    properties:        text: "正在请求后台服务,查询可维护部署的信息....... "         keepTurn: true         maitenceDeploymentListNew:    component: "maintenanceDeployment"    properties:        resourceAction: "${resourceActionTypeSelected.value}"        resourceName:  "${resourceName.value}"    transitions:        actions:            cancel: "unresolvedIntent"            deploymentList: "maitenceDeploymentSelect"             maitenceDeploymentSelect:    component: "System.List"    properties:         prompt: "选择需要维护的部署:"        autoNumbering: true        options: ${cmdOutputString.value}         variable: resourceName        maxPrompts: 1    transitions:        next: "maitenceDeploymentSelectAction"        actions:            cancel: "unresolvedIntent"

2.4  增加微信渠道

3.通过Chatbot操作Kubernetes集群

3.1场景一:发布镜像到Kubernetes 集群运行

通过Kubernetes dashboard 查看pod状态:镜像部署成功

通过浏览器访问Kubernetes cluster 应用运行正常。

3.2 场景二:通过Chatbot扩展部署副本个数

直接输入“我要扩展部署wercker-springboot到6个”,Chatbot能够识别要对部署进行维护的意图,同时提取实体wercker-springboot作为deployment的名称,以及实体数字“6”,作为扩展的个数。

通过查询Kubernetes dashboard,6个wrecker-springboot pod 扩展成功,其中两个pod正在创建当中。

也可以通过Chatbot流程引导完成部署的扩展流程,达到一样的目的。

3.3通过 Chatbot执行 Kubernetes命令

可以通过Chatbot调用Kubernetes kubectl客户端,执行任意合法的kubectl 命令。

与通过CMD命令行窗口返回一致的结果

本文通过甲骨文提供的智能机器人云服务 ,将复杂的Kubernetes 集群运维问题简单化,欲了解更多信息,请访问www.oracle.com/bots, 使用IBCS快速构建满足需求的智能机器人。

作者简介

向志华,Oracle云平台高级售前顾问,专注 Application Development PaaS 产品及服务,同时关注Docker容器产品及Kubernetes容器调度产品方向。13年IT行业从业经验,擅长J2EE产品架构及开发。加入Oracle之前,供职于IBM,参与过OpenStack相关产品研发工作。您可以通过george.xiang@oracle.com,与他联系。



了解更多,敬请关注甲骨文开发者社区......


文章转载自甲骨文开发者社区,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论