Spring Cloud + GitLab + Docker + K8S持續集成搭建筆記

閒言

我以前比較少記技術筆記,就算記也很簡略,自認為記性比較好嘛,哈哈~

再則呢,就算忘了,以前能搞定,再遇到一次也一樣能搞定,對吧。

直到有一天出了這麼件事:

那天遇到一個坑,搞了好一會兒就沒找到滿意的方案,於是想起某同事上月貌似也搞過這方面的,應該也會遇到這坑,於是QQ上問了下。果然很快給了方案過來,我看了後稱讚這方案不錯啊。

然後對方回了個信息過來:...客氣了,這方案是我上月問你的時候你教我的。。。

我:。。。

Spring Cloud + GitLab + Docker + K8S持續集成搭建筆記

從那以後,我記筆記就勤快認真多了。。。

趁最近有時間,整理了一下Spring Cloud + GitLab + Docker + K8S的搭建筆記,放在GitHub上,若有紕漏,歡迎指正。

詳細筆記及模板工程地址

https://github.com/johnhuang-cn/spring-cloud-k8s-ci-template

主要內容

  • Spring Cloud Hello World工程基於SpringCloud 2.0.3,含Eureka,Feign/Hystrix,Gateway
  • GitLab及持續集成配置
  • Docker及本地Docker倉庫
  • Kubernetes Minikube搭建及部署

預備環境

CentOS7 Linux主機兩臺:

主機A: Docker本地倉庫,GitLab及GitLab Runner環境,本文檔中IP為192.168.1.211

主機B:Kubernetes Minikube環境, 本文檔中IP為192.168.1.201

預備知識

1. 掌握基本Spring Boot開發

2. 掌握Linux,Git,Maven基礎操作

3. 瞭解Kubernetes基礎知識

4. 瞭解Docker基本概念和命令

5. 瞭解持續集成基礎知識

6. 瞭解Spring Cloud各基本組件:Eureka Server/Client,Feign,Gateway

基本步驟及原理

GitLab內置有CI功能,可代替Jenkins完成大部分的編譯打包發佈場景。常見的CI過程直接由GitLab完成要方便些。要讓GitLab啟動CI,需要在工程根目錄添加.GitLab-ci.yml文件,在該文件裡編寫CI腳本。

通常一個spring boot工程部署到K8S的過程是這樣的:

1. 用Maven打包成jar

2. 生成docker鏡像

3. 將生成的鏡像push到docker鏡像庫

4. 用kubectl將鏡像發佈到K8S集群

為什麼使用Docker:

1. 打包編譯和運行過程使用Docker不會汙染主機環境,由於Docker的無狀態特性,每次啟動都是全新幹淨的環境,確保每次打包編譯和運行都是全新的

2. 將應用程序打成Docker,可以實現一次編譯,到處運行

3. 用Docker簡化了部署,直接操作容器服務就可以了,基本可以忽略Linux操作系統間的差別,不需要每套服務器分別安裝配置,不需要記複雜的Linux各項配置。

用了Spring Cloud為什麼還要使用K8S:

1. K8S提供的滾動更新對運維來說十分方便,可以實現平滑升級,也可以在升級失敗後,快速回滾到上一版本

2. K8S可以方便地進行彈性伸縮

3. 自動修復,自動重啟

下面開始設置完成這4個步驟所需的環境和腳本。

架構圖

Spring Cloud + GitLab + Docker + K8S持續集成搭建筆記

組成:Gateway api網關 > 消費端 > 服務端 和 一個註冊中心,共4個Spring Boot項目

Spring Cloud + GitLab + Docker + K8S持續集成搭建筆記

章節目錄

Spring Cloud + GitLab + Docker + K8S持續集成搭建筆記

Spring Cloud + GitLab + Docker + K8S持續集成搭建筆記


分享到:


相關文章: