容器服务slack运维机器人

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: ## 初识slack 几年前开始创业,组建团队的第一天,我们首先讨论和考虑的不是高屋建瓴的业务场景和目标,而是整个团队的协同和沟通的问题。选择使用什么作为团队的IM,选择什么作为BUG的记录,选择什么作为需求的跟踪,这些基础设施的存在无形中提高了整个团队的生产力,保证了协作的顺畅和流程。由于团队的成员有些是外国人,而在国外GEEK圈中风光无限的SLACK也就顺理成章的被老外们安利到了团队中。

初识slack

几年前开始创业,组建团队的第一天,我们首先讨论和考虑的不是高屋建瓴的业务场景和目标,而是整个团队的协同和沟通的问题。选择使用什么作为团队的IM,选择什么作为BUG的记录,选择什么作为需求的跟踪,这些基础设施的存在无形中提高了整个团队的生产力,保证了协作的顺畅和流程。由于团队的成员有些是外国人,而在国外GEEK圈中风光无限的SLACK也就顺理成章的被老外们安利到了团队中。

那么slack是个什么东西呢。

    Slack 是聊天群组 + 大规模工具集成 + 文件整合 + 统一搜索。截至2014年底,Slack 已经整合了电子邮件、短信、Google Drives、Twitter、Trello、Asana、GitHub 等 65 种工具和服务,把可以把各种碎片化的企业沟通和协作集中到一起。

slack不仅仅是一个聊天的IM工具,在团队中的他的职责更多是工具集成,slack支持非常丰富的系统集成。
20150930185234_34720.png
你可以在slack中看到在github中的代码提交记录,可以修复jira中的需求issue,可以触发jenkins中的单元测试,甚至可以直接部署远程服务器的代码。

虽然后来离开了团队,但是slack的使用习惯还是保持到了现在。关于slack的workflow,大家可以参考这篇文章

关于触发器

容器服务作为阿里云的CaaS层的产品,与传统的PaaS产品不同,容器服务更多的侧重在提供容器集群的管理能力以及与三方系统的集成能力。对于三方集成,最常见的一种方式就是触发器,比如github提供了webhook机制可以在代码提交的时候通知其他的系统,这种简单快捷的方式在持续集成的系统中非常常见。

容服务提供了重新部署与自动扩容扩缩容两种触发器,如下:
2052da86c5aa475411bab00728573ab8.png

可以简单的使用GET或者POST请求的方式调用这两个地址,从而达到重新部署与扩缩容的目的。容器服务本身提供了集群级别的openapi,应用级别的兼容docker的api,那么为什么还需要提供这种使用curl、wget甚至浏览器访问都可以调用的API。

这就要从这几个API的定位讲起,阿里云大部分的产品是IaaS的产品,这些产品只要将自身提供的能力做到性能、易用性以及原子性功能的更优即可。但是容器服务是CaaS层的产品,是对IaaS层的更高级的抽象,我们需要关心不只只是容器如何部署,更多是和开发如何结合,如何符合大家的编程模型或者适应大家的编程模型。而大家的编程模型又各不相同,我们不应该用PaaS的方式去规约开发者的使用习惯以及限制自身系统的能力,更合理的做法是提供原子性的功能,可以集成现有的系统与编程模型。而最简单的方式就是触发器。

容器服务的slack集成

那么是否有能力让slack集成容器服务,通过slack来运维容器呢。其实用slack做运维并非是一个新潮的词汇,GEEK们用slack在aws上管理云资源,做持续集成,大部分依赖slack的一个令人称赞的功能,slack机器人。

下面我们从0部署一个可以运维容器服务的slack机器人。

步骤0 创建slack的team与机器人

首先要学会使用slack的基本功能,然后学会创建一个slack机器人并取得token,这个步骤在本文中就不过多的赘述了。

步骤1 部署应用并创建触发器

在容器服务上部署一个demo的应用,并创建触发器。

2048:
  image: 'blackicebird/2048:latest'
  labels:
    aliyun.scale: '1'
    aliyun.routing.port_80: 2048
  restart: always

点击应用详情页面的创建触发器,即可创建自动扩容的触发器或者重新部署的触发器。
4eed6562d2b3c03b4d1b0b3285acd8ad.png

步骤2 部署slack robot
newtown:
    image: registry.aliyuncs.com/ringtail/newtwon:latest
    restart: always
    environment:
        - debug=true
        - key=<如果需要图灵聊天机器人,需填写此项,此项为图灵机器人的appkey>
        - token=<slack机器人的token>

其中key是图灵机器人的key,这个值选填,如果不填写,请删除key,图灵机器人只是为了增加这个项目的趣味性。token是slackbot的token,您可以通过slack的team管理中找到。

附录:
图灵机器人:http://www.tuling123.com/

步骤3 可以玩耍了

在这个slack robot中包含了两个基本模块,记忆模块与容器服务模块。命令的格式如下

记忆模块:    
记住 key value    //设置key,如果在别的模块使用,可以采用$key的方式
记住 key              // 获取 key
记住 全部         // 列出全部key 


容器服务模块:    
容器服务 触发 <触发器地址>  // curl url,建议用<>括起来网址,因为回显到slack的时候回自动触发。     

下面我们利用slack robot进行一次简单的运维 -- 容器扩容

83638b5db1e06a9961ef0e1144cf683f.png

主题命令如下

记住 2048触发器 <你的触发器地址>    

记住 2048触发器    

容器服务 触发 $2048触发器    

输入 “容器服务 触发 $2048触发器的后“,查看容器的服务列表,可以发现容器已经处在伸缩中了。

fe57371918c31dbc34dec235d9631950.png
稍后可以发现容器已经扩容完成,欢迎大家探究更多的好玩的方式。
ec2c9da02ae2bff223a7d2572d0f6f41.png

项目仓库

纽敦的仓库:https://github.com/ringtail/newtwon (出于对newton的尊敬改用newtown)

相关实践学习
Docker镜像管理快速入门
本教程将介绍如何使用Docker构建镜像,并通过阿里云镜像服务分发到ECS服务器,运行该镜像。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
3月前
|
运维 监控 安全
调用钉钉机器人API接口将堡垒机安全运维告警单发给运维人员
调用钉钉机器人API接口将堡垒机安全运维告警单发给运维人员
83 0
|
9天前
|
运维 Kubernetes Devops
构建高效自动化运维体系:DevOps与容器技术融合实践
【4月更文挑战第15天】 在当今快速发展的信息技术时代,传统的IT运维模式已难以满足业务敏捷性的需求。本文旨在探讨如何通过整合DevOps理念和容器技术来构建一个高效的自动化运维体系。文章将详细阐述DevOps的核心原则、容器技术的基础知识,以及两者结合的优势。此外,文中还将分享一系列实践经验,包括持续集成/持续部署(CI/CD)流程的搭建、微服务架构的应用,以及监控和日志管理策略的优化,以期帮助企业实现快速、可靠且安全的软件交付过程。
|
27天前
|
运维 Kubernetes 监控
构建高效稳定的容器化运维环境
在现代IT基础设施中,容器技术以其轻量级、快速部署和易于管理的特性成为企业数字化转型的重要支撑。本文将深入探讨如何构建一个高效且稳定的容器化运维环境,涵盖从容器选择、集群管理到持续集成与持续部署(CI/CD)的最佳实践。文章旨在为运维工程师提供一套系统的解决方案,以应对日益复杂的业务需求和技术挑战。
|
1月前
|
运维 监控 Devops
构建高效自动化运维体系:基于容器技术的持续集成与持续部署实践
在数字化转型的浪潮中,企业的IT基础设施和软件交付模式正经历着深刻的变革。传统的运维方式已难以满足快速迭代、灵活扩展的现代业务需求。本文将探讨如何通过容器技术实现高效的自动化运维体系,重点分析持续集成(CI)与持续部署(CD)的实践方法及其对企业运维效率的影响。通过引入微服务架构、容器编排、DevOps文化等概念,我们旨在为读者提供一套全面的自动化运维解决方案,以支持业务的敏捷性和可扩展性。
|
1月前
|
运维 应用服务中间件 调度
微服务容器化的运维
【2月更文挑战第27天】
|
1月前
|
运维 应用服务中间件 调度
|
1月前
|
运维 资源调度 数据安全/隐私保护
容器化运维镜像仓库和资源调度
【2月更文挑战第14天】容器运维平台的两个关键组成,镜像仓库和资源调度。
|
2月前
|
运维 Java 开发者
深入浅出:使用Docker容器化改善Java应用的部署与运维
在当今快速迭代的软件开发周期中,确保应用的一致性、可移植性与易于管理成为了开发与运维团队面临的重大挑战。本文旨在介绍如何通过Docker容器技术,有效地解决这些问题,特别是针对Java应用。我们将从Docker的基本概念出发,逐步深入到实际操作,展示如何将传统的Java应用容器化,以及这一过程如何帮助简化部署流程、提高应用的可靠性和可伸缩性。不同于常规的技术文章,本文试图以一种更加易于理解和实践的方式,让读者能够快速掌握容器化技术,并将其应用于日常的开发与运维工作中。
90 0
|
2月前
|
Kubernetes Linux 开发工具
容器开发运维人员的 Linux 操作机配置优化建议
容器开发运维人员的 Linux 操作机配置优化建议
|
2月前
|
消息中间件 运维 应用服务中间件
容器化运维:构建高可用RabbitMQ集群的Docker Compose指南
容器化运维:构建高可用RabbitMQ集群的Docker Compose指南
171 0