日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

阿里云Kubernetes服务上从零搭建GitLab+Jenkins+GitOps应用发布模型的实践全纪录

發布時間:2024/8/23 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 阿里云Kubernetes服务上从零搭建GitLab+Jenkins+GitOps应用发布模型的实践全纪录 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關于GitOps的介紹,可以參考?GitOps:Kubernetes多集群環境下的高效CICD實踐

1. 在?容器服務控制臺?創建kubernetes集群

1.1 新建Kubernetes集群:

1.2 新建命名空間gitops

我們將會把gitlab和jenkins全部部署到此命名空間下

2. 創建GitLab應用 (可選項,可以對接已有GitLab環境)

容器服務控制臺上依次點擊?市場?->?應用目錄?->?gitlab-ce?:

在?參數?中設置externalUrl和gitlabRootPassword后選擇gitops命名空間并創建應用,本次實踐中?externalUrl?設置為?http://ls-gitlab.example.com/, 如果沒有dns解析的話,可以在創建成功后直接使用ip

容器服務控制臺上依次點擊?路由與負載均衡?->?服務?查看gitlab應用的訪問地址,大約2分鐘后可訪問gitlab并登陸:

3. 設置GitLab并上傳示例源碼項目

3.1 新建private group application

創建private group application:

3.2 新建并上傳private project application-demo

創建private project application-demo, 示例源碼地址:

https://code.aliyun.com/haoshuwei/application-demo.git

從master新建一個分支latest:

設置master和latest分支只有管理員才能merge和push代碼的操作:

3.3 新建private group builds

3.4 新建并上傳private project preview-pipeline staging-pipeline production-pipeline

preview-pipeline示例源碼地址為:

https://code.aliyun.com/haoshuwei/preview-pipeline.git

staging-pipeline示例源碼地址為:

https://code.aliyun.com/haoshuwei/staging-pipeline.git

production-pipeline示例源碼地址為:

https://code.aliyun.com/haoshuwei/production-pipeline.git

上傳3個構建項目之前需要替換以下字段:
IMAGE_REPO: ?應用容器鏡像要上傳到哪個鏡像倉庫,鏡像倉庫地址
dingTalkToken: 釘釘通知所使用的釘釘機器人accessToken
Fetch Git Repo?->?credentialsId?: 用于Jenkins拉取git項目的證書名稱,需要在Jenkins中創建名為gitlab的證書
Fetch Git Repo?->?url?: Jenkins拉取git repo的url

preview-pipeline:

staging-pipeline

production-pipeline

3.5 注冊一個普通開發者用戶developer

管理員用戶登錄后將developer用戶添加為application組的developer member:

此時developer用戶只有application組下projects的權限, 沒有builds組的權限:

3.6 生成一個apiToken用于Jenkins配置gitlabConnection

生成并復制保存apiToken:

4. 創建Jenkins應用

容器服務控制臺上依次點擊?市場?->?應用目錄?->?jenkins:

在?參數?中設置Master.AdminPassword的值,并更改rbac.install的值為true,選擇gitops命名空間后點擊創建:

容器服務控制臺上依次點擊?路由與負載均衡?->?服務?查看jenkins應用的訪問地址,大約1分鐘后可訪問jenkins并登陸:

5. 配置Jenkins并創建構建任務

5.1 配置gitlabConnection

系統管理 -> 系統設置 -> Gitlab:

配置完畢后點擊 Save 保存。

5.2 新建構建任務preview-pipeline

5.2.1 新建任務,輸入名稱選擇流水線類型并點擊創建:

5.2.2 Build Triggers 區域勾選 GitLab 插件配置如圖所示:

點擊 Advanced 進行高級選項配置如圖所示:

復制并保存GitLab webhook URL和Secret token的值用于在Gitlab上配置webhook。

5.2.3 Pipeline區域配置preview-pipeline構建項目的git repo

完成配置后點擊 保存。

5.3 新建構建任務staging-pipeline

5.3.1 新建任務,輸入名稱選擇流水線類型并點擊創建:

5.3.2 Build Triggers 區域勾選 GitLab 插件配置如圖所示:

點擊 Advanced 進行高級選項配置如圖所示:

復制并保存GitLab webhook URL和Secret token的值用于在Gitlab上配置webhook。

5.3.3 Pipeline區域配置staging-pipeline構建項目的git repo

完成配置后點擊 保存。

5.4 新建構建任務production-pipeline

5.4.1 新建任務,輸入名稱選擇流水線類型并點擊創建:

5.4.2 Build Triggers 區域勾選 GitLab 插件配置如圖所示:

點擊 Advanced 進行高級選項配置如圖所示:

復制并保存GitLab webhook URL和Secret token的值用于在Gitlab上配置webhook。

5.4.3 Pipeline區域配置production-pipeline構建項目的git repo

完成配置后點擊 保存。

5.5 創建docker registry auth secret:

$ docker login registry.cn-hangzhou.aliyuncs.com $ kubectl -n gitops create secret generic jenkins-docker-cfg --from-file=/root/.docker/config.json

5.6 創建clusterrolebinding授予serviceaccount default對gitops命名空間的管理權限

clusterrolebinding.yaml:

apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata:name: gitops-cluster-admin subjects:- kind: ServiceAccountname: defaultnamespace: gitops roleRef:kind: ClusterRolename: cluster-adminapiGroup: rbac.authorization.k8s.io $ kubectl create -f clusterrolebinding.yaml

5.7 設置匿名用戶的可讀權限

系統管理 ->全局安全管理-> Authorization -> 勾選 Allow anonymous read access 并保存:

6. 配置GitLab webhook

進入application-demo項目的webhook配置頁面:

6.1 配置觸發jenkins job preview-pipeline的觸發器

所圖所示:

6.2 配置觸發jenkins job staging-pipeline的觸發器

所圖所示:

6.3 配置觸發jenkins job production-pipeline的觸發器

所圖所示:

7. GitOps模型發布應用

7.1 developer用戶做以下操作

7.1.1 在application-demo項目上新建一個開發分支features/change-index-1

7.1.2 修改src/main/resources/static/index.html中的kubernetes.svg為jenkins.svg并提交修改

7.1.3 創建請求合并到latest分支的Merge Request

Open MergeRequest的動作會觸發jenkins job preview-pipeline的自動構建,并完成以下stages:
(1)拉取http://xxx.xxx.xxx/builds/preview-pipeline.git項目并按照Jenkins定義的內容繼續執行以下內容
(2)Fetch Git Repo: 拉取應用源碼項目http://xxx.xxx.xxx.xxx/application/application-demo.git
(3)Maven Build: 打包
(4)Maven Test: 測試
(5)Docker Build And Publish: docker鏡像構建和推送
(6)Kubectl Deploy: 部署應用到Kubernetes集群(本示例使用的是本集群的一個動態創建的命名空間preview-xxx)
(7)Post Actions: 釘釘通知

developer可以查看Merge Request頁面的內容

點擊可跳轉至jenkins構建日志:

7.1.4 構建完成后可以看到一個application-demo應用的預覽頁面

點擊預覽應用:

也可以直接在釘釘群里查看應用訪問鏈接等信息:

7.1.5 應用預覽驗證后, developer可以申請管理員接受此合并

7.2 管理員合并指向latest分支的MergeRequest

合并MR:

Accept MR的動作或觸發staging-pipeline的構建,拉取application-demo項目的latest分支代碼并構建和部署到staging命名空間下

查看釘釘通知并訪問staging環境中的application-demo應用:

7.3 管理員創建latest到master分支的Merge Request并合并此指向master的Merge Request

Accept MR的動作或觸發production-pipeline的構建,拉取application-demo項目的master分支代碼并構建和部署到production命名空間下

查看釘釘通知并訪問production環境中的application-demo應用:


原文鏈接
本文為云棲社區原創內容,未經允許不得轉載。

總結

以上是生活随笔為你收集整理的阿里云Kubernetes服务上从零搭建GitLab+Jenkins+GitOps应用发布模型的实践全纪录的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。