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,与他联系。
了解更多,敬请关注甲骨文开发者社区......





