【雲原生】持續集成和部署(Jenkins)

語言: CN / TW / HK

使用 helm 安裝 Jenkins 到k8s集羣,配置CI/CD
首先,添加 repo:

helm repo add jenkins https://charts.jenkins.io


其次,創建一個 k8s 名稱空間:

kubectl create ns jenkins


接着,安裝 jenkins:

bash helm install jenkins jenkins/jenkins -n jenkins


最後,查看登陸地址

export SERVICE_IP=$(kubectl get svc --namespace default jenkins --template '{{ range (index .status.loadBalancer.ingress 0) }}{{ .}}{{ end }}') && echo http://$SERVICE_IP:8080/login


CI/CD
CI(Continuous Integration)持續集成


CI的英文名稱是Continuous Integration,中文翻譯為:持續集成。


CI中,開發人員將會頻繁地向主幹提交代碼,這些新提交的代碼在最終合併到主幹前,需要經過編譯和自動化測試流進行驗證。 持續集成(CI)是在源代碼變更後自動檢測、拉取、構建和(在大多數情況下)進行單元測試的過程。持續集成的目標是快速確保開發人員新提交的變更是好的,並且適合在代碼庫中進一步使用。CI的流程執行和理論實踐讓我們可以確定新代碼和原有代碼能否正確地集成在一起。
CI 的目標是將集成簡化成一個簡單、易於重複的日常開發任務, 這樣有助於降低總體的構建成本並在開發週期的早期發現缺陷。 要想有效地使用 CI 必須轉變開發團隊的習慣,要鼓勵頻繁迭代構建, 並且在發現 bug 的早期積極解決。

CD (Continuous Delivery)持續交付和(Continuous Deployment)持續部署
持續交付(CD)


持續交付(CD)實際上是 CI 的擴展,其中軟件交付流程進一步自動化,以便隨時輕鬆地部署到生成環境中。 成熟的持續交付方案也展示了一個始終可部署的代碼庫。使用 CD 後,軟件發佈將成為一個沒有任何緊張感的例行事件。 開發團隊可以在日常開發的任何時間進行產品級的發佈,而不需要詳細的發佈方案或者特殊的後期測試。
完成 CI 中構建及單元測試和集成測試的自動化流程後,持續交付可自動將已驗證的代碼發佈到存儲庫。為了實現高效的持續交付流程,務必要確保 CI 已內置於開發管道。持續交付的目標是擁有一個可隨時部署到生產環境的代碼庫。

CD 集中依賴於部署流水線,團隊通過流水線自動化測試和部署過程。此流水線是一個自動化系統, 可以針對構建執行一組漸進的測試套件。CD 具有高度的自動化,並且在一些雲計算環境中也易於配置。在流水線的每個階段,如果構建無法通過關鍵測試會向團隊發出警報。否則,將繼續進入下一個測試, 並在連續通過測試後自動進入下一個階段。流水線的最後一個部分會將構建部署到和生產環境等效的環境中。 這是一個整體的過程,因為構建、部署和環境都是一起執行和測試的,它能讓構建在實際的生產環境可部署和可驗證。

持續部署(CD)


持續部署擴展了持續交付,以便軟件構建在通過所有測試時自動部署。在這樣的流程中, 不需要人為決定何時及如何投入生產環境。CI/CD 系統的最後一步將在構建後的組件/包退出流水線時自動部署。 此類自動部署可以配置為快速向客户分發組件、功能模塊或修復補丁,並準確説明當前提供的內容。採用持續部署的組織可以將新功能快速傳遞給用户,得到用户對於新版本的快速反饋,並且可以迅速處理任何明顯的缺陷。 用户對無用或者誤解需求的功能的快速反饋有助於團隊規劃投入,避免將精力集中於不容易產生回報的地方。
隨着 DevOps 的發展,新的用來實現 CI/CD 流水線的自動化工具也在不斷湧現。這些工具通常能與各種開發工具配合, 包括像 GitHub 這樣的代碼倉庫和 Jira 這樣的 bug 跟蹤工具。此外,隨着 SaaS 這種交付方式變得更受歡迎, 許多工具都可以在現代開發人員運行應用程序的雲環境中運行,例如 GCP 和 AWS。但是對於一個成熟的CI/CD管道(Pipeline)來説,最後的階段是持續部署。作為持續交付——自動將生產就緒型構建版本發佈到代碼存儲庫——的延伸,持續部署可以自動將應用發佈到生產環境。目前最受歡迎的自動化工具是 Jenkins。

持續部署意味着所有的變更都會被自動部署到生產環境中。持續交付意味着所有的變更都可以被部署到生產環境中,但是出於業務考慮,可以選擇不部署。如果要實施持續部署,必須先實施持續交付。持續交付並不是指軟件每一個改動都要儘快部署到產品環境中,它指的是任何的代碼修改都可以在任何時候實施部署。持續交付表示的是一種能力,而持續部署表示的則一種方式;持續部署是持續交付的最高階段。

一旦登陸 jenkins ,可以配置一系列 CI/CD動作:

CI
拉取代碼
構建/測試/打包
構建容器鏡像
CD
推送容器鏡像到鏡像中心
執行k8s命令,拉取鏡像
執行k8s命令,部署
執行k8s命令,滾動更新
———————————————

 

作者:「共飲一杯無」
原文鏈接:https://blog.csdn.net/qq_35427589/article/details/125940309
侵刪