写在前边
刚来深圳的那段时间里,周末去参加了不少线下活动,可能是由于自己没有在大厂的工作经历,从 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 内置了对秘密撤销的支持。保险柜不仅可以撤销单个秘密,还可以撤销秘密树,例如特定用户读取的所有秘密,或特定类型的所有秘密。撤销有助于关键滚动以及在入侵情况下锁定系统。