當前位置:
首頁 > 最新 > 如何構建Kubernetes CI/CD流水線

如何構建Kubernetes CI/CD流水線

持續集成/持續交付(CI/CD)的主題,在服務變得越來越細化、更新越來越頻繁的當下,顯得愈發重要。它讓公司能夠按照一種一致的、可重複操作的方式完全自動化地完成代碼的搭建、測試和部署。

市場中有不少不同的CI/CD工具可供用戶使用,它們中的很多將可以和Kubernetes進行原生集成。

本文將介紹如何使用託管的GitLab.com解決方案來實現CI/CD。不過本文中討論到的Kubernetes集成是通用的,其他的CI/CD工具只要提供了Kubernetes介面,就同樣可以按本文的方法、使用服務賬號來與Kubernetes進行對接。

先決條件

1. 用於部署工作負載的Rancher 2.0集群

2. 登陸gitlab.com

設置GitLab.com

我們準備使用GitLab提供的一個模版,首先第一步先通過網址https://gitlab.com/users/sign_in登陸gitlab.com

創建項目

第一步先創建項目

點擊New project

選擇【從模版創建/Create from template】標籤

點擊

圖標下的

設置【項目名稱/Project name】

點擊【創建項目/Create Project】

等待項目完成導入

將Kubernetes端點添加到你的項目中

下面選擇

點擊【Kubernetes集群/Kubernetes cluster】,接著選擇【添加現有集群/Add existing cluster】

上面所有的欄位都需要填入內容,我會在下文介紹如何填寫。

API URL

API URL是GitLab用於和你的集群中那些用於部署工作負載的Kubernetes API進行通信的URL。根據Kubernetes集群運行的位置,你需要確保埠是打開的狀態,這樣才能讓gitlab.com和Kubernetes集群的:

進行通信。

為了檢索API URL,我們將在Rancher伺服器上運行一個控制Kubernets集群的腳本,這一步會生成一個kubeconfig文件,文件中包含了我們使用GitLab配置Kubernetes設置所需要的信息。

登陸到運行Rancher Server的伺服器

從https://gist.github.com/superseb/f6cd637a7ad556124132ca39961789a4下載get_kubeconfig_custom_cluster_rancher2.sh文件中的內容

在伺服器上創建一個文件並把內容複製到裡面

使用命令chmod +x 讓文件能夠執行

使用命令./ 運行腳本

這會在本地目錄中生成一個kubeconfig文件

運行命令cat kubeconfig | grep server:

https的值是需要添加到API URL欄位的值

CA證書

CA證書是需要的,因為這些證書通常是自定義證書,它們不在GitLab伺服器的證書存儲區中,它們可以讓連接受到保護。

在API URL指令生成的kubeconfig文件所在文件夾下進行如下操作:

運行cat kubeconfig | grep certificate-authority-data,這會提供給你一個base64編碼的證書字元串,GitLab中的欄位需要PEM格式

把編碼的字元串存到一個文件中,比如cert.base64

運行base64 -d cert.base64 > cert.pem

返回一個pem格式的證書,你可以把它拷貝到GitLab中的CA證書欄位里

Token

為了讓gitlab.com實例能夠與集群通信,我們將為它創建一個服務賬號。我們還要給GitLab創建一個命名空間來部署應用程序。

為了簡化操作,我們將所有內容都放到了一個文件中,可以在http://x.co/rm082018找到。

為了創建必要的條件,我們需要運行下面的命令:

kubectl apply -f http://x.co/rm082018(.kube/config文件中用的是默認集群,如果要使用其他的,可以選擇添加-kubeconfig)

這樣會創建出一個服務賬號並且生成一個token,我們需要在GitLab Kubernetnes配置pane中使用到該token。

獲取secret execute:kubectl describe secrets/gitlab-secret -n gitlab-managed-apps | grep token:

複製token並將其粘貼到GitLab配置中

項目命名空間

如果你已經按照這篇文章以及我提供的Kubernetes 文件執行到了這一步,那麼下面你需要將Project Namespace設置為gitlab-managed-apps。如果你已經更新了Kubernetes文件,那麼需要將它改為你設置的命名空間。

Rancher Server 2.0設置

作為GitLab模板項目的一部分,它們部署了一個PostgresSQL pod。這意味著你需要有一個動態存儲配置程序。如果你沒有這些設置,那麼你需要進入到你需要部署的集群上的目錄,啟動Library NFS配置程序。我們目前暫不建議將這用於生產環境,不過它能讓auto devops功能正常工作。

開啟Auto Devops

在GitLab界面,進入Setting-CI/CD並且擴展Auto DevOps。

點擊【開啟Auto DevOps/Enable Auto Devops】的按鈕。

在Domain部分中,它要求你指定將用於訪問要部署服務的DNS名稱。DNS名稱應該指向集群上部署服務的入口。在測試中,你可以使用.nip.io,它將解析為指定的主機ip。

點擊【保存更改/Save changes】,這會自動發布你的流水線並且啟動作業運行。

你可以進入CI/CD – Pipelines中查看進度,在production階段結束時,你應該能看到可以訪問應用程序的http地址了

希望這篇博客可以帶你成功部署一個很棒的CI/CD流水線。另外,正如文章開頭所言,文中的Kubernetes部分適用於大多數CI/CD Kubernetes集成。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 RancherLabs 的精彩文章:

多Kubernetes集群角色管理

TAG:RancherLabs |