文:商派DevOps团队
- 前言
在最初我们使用使用开源工具自建 DevOps,项目管理、代码管理、持续集成、代码扫描等都是各自系统,账号数据都是独立,维护和使用过程复杂,所以我们自己建设了DevOps自动化平台来统一管理使用。
并且我们通过页面化的配置过程,来降低开发人员对容器和Kubernetes的技能要求,让所有人都可以通过我们的平台来快速的部署上线一个项目。
本次我们主要介绍DevOps自动化平台在我们公司公有部署项目中的一些实践。后续会继续介绍我们是怎么和项目管理工具结合、我们自有SAAS产品的一些实践。
1. 提高部署效率,规范部署流程
- 资源申请
DevOps自动化平台提供在线的资源申请,免去了过去种种申请资源的复杂流程。
在线即可申请 Kubernetes资源、域名资源、RDS、Redis等云服务资源。 - 可视化的发布配置
如果我们直接使用Kubernetes进行部署,那么需要我们研发人员配置复杂的Yaml文件。
现在提供可视化的配置,包括部署的应用、版本、所需资源、副本数量、配置文件等,都可以在DevOps自动化平台上配置。
而像Kubernetes服务的存活检查、健康检查、优雅上下线、扩所容策略等,也都可以通过可视化配置,并且提供默认模版。研发人员无需再去研究复杂的配置项,即可完成服务的配置。
完成配置后,即可一键触发构建流程,进行完整的持续集成、发布过程。 - 审批流程
通过设置上线审批流程来代替之前的邮件确认or口头确认,真正做到上线过程管控:谁负责,谁审批。审批通知通过钉钉推送消息至对应节点负责人,依次审批通过后开始构建部署流程。
- 过程同步
构建部署过程实时同步。通过钉钉机器人发送通知,让所有团队成员同步知晓上线状态。避免出现信息差。
2. 便捷的服务管理
- 更方便的扩容
在传统部署场景,面对突发流量时的扩容,是非常困难且不可靠的。得益于容器化和Kubernetes本身对于自动化扩缩容的支持,我们可以方便的配置自动化扩容策略,实现自动化扩容。而对于不适用自动化扩容的场景或者客户,我们也可以在DevOps自动化平台一键式扩容,大大提高了应对突发流量的效率和能力。
- 快速回滚
通过DevOps自动化平台部署的应用,会保留最近几次的版本记录,可以做到一键回滚代码和配置。方便出现问题后快速恢复。
- 日志
对于公有云部署的应用,我们通过Filebeat把应用日志实时收集到Elasticsearch中,,同时在DevOps自动化平台也集成了日志查询权限管控,应用对应的研发人员可以很方便的查找日志,排查定位问题。
3. 总结
- 提高效率降低成本
使用DevOps自动化平台后,我们将上线发布的人员从运维转移到研发,研发人员独立完成项目上线部署.
同时不用多个作业系统来回切换操作,在同一平台即可完成所有上线过程。 - 规范化作业流程
统一了资源申请流程,简化了资源申请操作过程
增加了审批流操作,避免无授权的上线操作