[小團隊自動化] 基於 Gitea+Drone CI+Vault 打造屬於自己的CI/CD工作流

一冉再發表於2019-03-08

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


寫在前邊

剛來深圳的那段時間裡,週末去參加了不少線下活動,可能是由於自己沒有在大廠的工作經歷,從2017年3月份大三在外邊實習開始至今,一直都是運維開發(甚至前端)一把抓,所以很快就對 DevOpts 產生了極大的興趣,感覺 DevOpts 與自己的工作狀態十分貼合。

苦於剛來到現在這家公司的那段時間裡,業務繁忙,一直沒有時間做一個入門實踐,只是寫過一些定時上線的 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 操作

系列文章

相關文章