[小团队自动化] 基于 Gitea+Drone CI+Vault 打造属于自己的CI/CD工作流

6,293 阅读5分钟

基于 Gitea+Drone CI+Vault 打造属于自己的CI/CD工作流


写在前边

刚来深圳的那段时间里,周末去参加了不少线下活动,可能是由于自己没有在大厂的工作经历,从2017年3月份大三在外边实习开始至今,一直都是运维开发(甚至前端)一把抓,所以很快就对 DevOps 产生了极大的兴趣,感觉 DevOps 与自己的工作状态十分贴合。

苦于刚来到现在这家公司的那段时间里,业务繁忙,一直没有时间做一个入门实践,只是写过一些定时上线的 Shell 脚本。

最近这段时间@Dee luo老哥独立埋头苦干,公司的前端项目也已经逐步完成了一套符合公司特征的基于GitLab + Drone CI + Vault 的CI/CD工作流。

你难以想象以前公司的前端项目工作流程多么落后,前端开发->推到 GitLab 仓库->后端pull到服务器->打包,现在前端开发完自行上传就开始自动打包和部署,省去人工的同时,也比人工更加的可靠。

近水楼台先得月,坐在老哥旁边的我一直蠢蠢欲动,终于等到过完春节的这段时间,最近几天没有什么业务和 Bug ,我觉得是时候大(踩)干(坑)一(自)场(虐)了。

感谢@Dee luo请假期间,也毫无怨言的给我指导,给我帮助,笔芯(反正他也看不到)。

工具介绍

Gitea

Gitea 是一个开源社区驱动的 Gogs 克隆, 是一个轻量级的代码托管解决方案,后端采用 Go 编写,采用 MIT 许可证.

Gitea的是创建一个极易安装,运行非常快速,安装和使用体验良好的自建 Git 服务。采用Go作为后端语言,只要生成一个可执行程序即可。并且它还支持跨平台,支持 Linux, macOS 和 Windows 以及各种架构,除了x86,amd64,还包括 ARM 和 PowerPC。

对于我来说,选择他的原因有两点

  • UI 好看,我喜欢
  • 资源占用低,最低要求为廉价树莓派,对我这种穷B来说,利好
  • 团队维护的开源,非常活跃

Drone

Drone是一种基于容器技术的持续交付系统。Drone使用简单的YAML配置文件(docker-compose的超集)来定义和执行Docker容器中的Pipelines。

Drone与流行的源代码管理系统无缝集成,包括GitHub,GitHub Enterprise,Bitbucket等。

Vault

Vault是一个管理Secrets并保护敏感数据的工具,来自HashiCorp,如果你对这个名字有点陌生,那么你一定知道Vagrant

Vault是一种安全访问 Secret 的工具。Secret就是您要严格控制访问的任何内容,例如API密钥,密码或证书。Vault为任何机密提供统一的界面,同时提供严格的访问控制并记录详细的审计日志。

现代系统需要访问大量Secret:数据库凭证,外部服务的API密钥,面向服务的体系结构通信的凭证等。了解谁正在访问哪些秘密已经非常困难且特定于平台。如果没有自定义解决方案,几乎不可能添加密钥滚动,安全存储和详细的审计日志。这是Vault介入的地方。

Vault的主要功能包括:

  • 安全秘密存储:任意密钥/值秘密可以存储在Vault中。Vault会在将这些机密写入持久存储之前加密这些机密,因此获取对原始存储的访问权限不足以访问您的机密。Vault可以写入磁盘,Consul等。
  • 动态秘密:Vault可以按需为某些系统生成机密,例如AWS或SQL数据库。例如,当应用程序需要访问S3存储桶时,它会要求Vault提供凭据,Vault将根据需要生成具有有效权限的AWS密钥对。创建这些动态机密后,Vault也会在租约到期后自动撤消它们。
  • 数据加密:Vault可以加密和解密数据而无需存储数据。这允许安全团队定义加密参数,并允许开发人员将加密数据存储在SQL等位置,而无需设计自己的加密方法。
  • 租赁和续订:Vault中的所有机密都有与之相关的租约。在租约结束时,Vault将自动撤销该秘密。客户可以通过内置续订API续订租约。
  • 撤销:Vault内置了对秘密撤销的支持。保险柜不仅可以撤销单个秘密,还可以撤销秘密树,例如特定用户读取的所有秘密,或特定类型的所有秘密。撤销有助于关键滚动以及在入侵情况下锁定系统。

Vault UI 操作

Vault CLI 操作

系列文章