成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

持續集成和部署方面的3個優秀實踐

譯文
運維 系統運維
本文介紹了三大主題:自動化持續集成/持續部署(CI/CD)配置、使用Git代碼倉庫用于常見的CI/CD工件以及參數化Jenkins管道。

[[249849]]

【51CTO.com快譯】 本文介紹了三大主題:自動化持續集成/持續部署(CI/CD)配置、使用Git代碼倉庫用于常見的CI/CD工件以及參數化Jenkins管道。

術語介紹

先不妨定義幾個術語。CI/CD是一種讓團隊可以快速自動測試、打包和部署應用程序的實踐。它常常通過利用名為Jenkins的服務器來實現,該服務器充當CI/CD編排器。Jenkins偵聽特定的輸入(常常是代碼簽入后的Git鉤子),被觸發后啟動管道。

管道由開發團隊及/或運維團隊編寫的代碼組成,這些代碼指示Jenkins在CI/CD過程中執行哪些操作。這個管道常常類似于“構建我的代碼,然后測試代碼,如果那些測試通過,將我的應用程序部署到下一個***環境(通常是開發、測試或生產環境)。”企業常常有更復雜的管道,結合工件倉庫和代碼分析器之類的工具,但這提供了大體例子。

我們已搞明白了關鍵術語,不妨深入了解幾個***實踐。

1. 自動化是關鍵

想在PaaS上運行CI/CD,需要在集群上配置適當的基礎設施。在這個例子中,我將使用OpenShift。

很容易實現“Hello, World”。只要運行oc new-app jenkins- 就行了,你有了一臺運行中的Jenkins服務器,隨時可以上路。然而在企業中使用復雜得多。除了Jenkins服務器外,管理員還常常需要部署代碼分析工具(比如SonarQube)和工件倉庫(比如Nexus)。然后,他們要創建管道以執行CI/CD,并創建Jenkins從節點以減輕主節點的負載。大多數這些實體受到OpenShift資源的支持,需要創建這些資源才能部署所需的CI/CD基礎設施。

最終,可能需要復制部署CI/CD組件所需的手動步驟,你可能不是執行那些步驟的人。為了確保生成結果時快速、無錯誤、并與以前一模一樣,應該在創建基礎設施的方式中包含自動化方法。這可以是Ansible playbook、Bash腳本或者希望自動部署CI/CD基礎設施的任何其他方式。

我使用Ansible和OpenShift-Applier角色來自動化我的實現。你可能覺得這些工具很有價值,也可能覺得別的工具更適合你和貴企業。無論怎樣,你會發現自動化大大減少了重新創建CI/ CD組件所需的工作量。

配置Jenkins主節點

除了一般的“自動化”外,我想單單挑出Jenkins主節點,談談管理員可以利用OpenShift自動化Jenkins配置的幾種方法。來自Red Hat Container Catalog中的Jenkins映像隨附安裝了OpenShift-Sync插件(https://github.com/openshift/jenkins-sync-plugin)。

想創建Jenkins管道,要創建類似這樣的OpenShift BuildConfig: 

  1. apiVersion: v1  
  2. kind: BuildConfig  
  3. ...  
  4. spec:    
  5.   source:        
  6.     git:    
  7.       ref: master        
  8.       uri: <repository-uri>    
  9.   ...    
  10.   strategy:      
  11.     jenkinsPipelineStrategy:     
  12.       jenkinsfilePath: Jenkinsfile       
  13.     type: JenkinsPipeline 

OpenShift-Sync插件會注意到,擁有策略jenkinsPipelineStrategy的BuildConfig已創建,可將它轉換成Jenkins管道,從Git源代碼指定的Jenkinsfile來獲取。還可以使用內聯式Jenkinsfile,而不是從Git代碼倉庫來獲取一個。欲知詳情,請參閱說明文檔。

想創建Jenkins從節點,創建以下列定義開始的OpenShift ImageStream: 

  1. apiVersion: v1  
  2. kind: ImageStream  
  3. metadata:  
  4.   annotations:  
  5.     slave-label: jenkins-slave  
  6.     labels:  
  7.       role: jenkins-slave  
  8. … 

請注意這個ImageStream中定義的元數據。OpenShift-Sync插件會將標簽是role: jenkins-slave的任何ImageStream轉換成Jenkins從節點。Jenkins從節點將以來自slave-label標注的值命名。

ImageStreams非常適合簡單的Jenkins從節點配置,但是一些團隊發現有必要配置一些基本細節,比如資源限制、就緒和活性探針以及實例上限。這時ConfigMaps可以派上用場: 

  1. apiVersion: v1  
  2. kind: ConfigMap  
  3. metadata:  
  4.   labels:  
  5.   role: jenkins-slave  
  6. ...  
  7. data:  
  8.   template1: |-  
  9.     <Kubernetes pod template> 

注意仍需要role: jenkins-slave標簽將ConfigMap轉換成Jenkins從節點。Kubernetes pod模塊包括一段很長的XML,可根據貴企業的喜好來配置每個細節。想查看該XML以及將ImageStreams和ConfigMaps轉換成Jenkins從節點方面的更多信息,請參閱說明文檔。

從上面三個例子中可以看出,沒有一項操作要求管理員手動更改Jenkins控制臺。通過使用OpenShift資源,Jenkins能以一種輕松自動化的方式來配置。

2. 共享就是關愛

第二個***實踐是維護常見CI/CD工件的Git倉庫。主要想法是,防止團隊重新發明輪子。設想你的團隊需要執行藍/綠部署到OpenShift環境的工作,作為管道的CD階段的一部分。團隊中負責編寫管道的成員可能不是OpenShift專家,他們也沒能力從頭開始編寫這種功能。幸好,有人已經編寫了一個將該功能整合到常見CI/CD倉庫中的函數,因此你的團隊可以使用該函數,而不是花時間編寫一個。

在此基礎上更進一步,貴企業可能決定要維護整條管道。你可能發現,團隊在編寫功能相似的管道。那些團隊使用一條來自共同倉庫的參數化管道而不是各自從頭開始編寫會來得更高效。

3. 少就是多

如上所述,第三條***實踐是參數化CI/CD管道。參數化可防止管道泛濫,使你的CI/CD系統更容易維護。設想我有多個地區來部署應用程序。要是沒有參數化,每個地區都需要一條不同的管道。

想參數化編寫成OpenShift構建配置的管道,將env這節添加到配置中: 

  1. ...  
  2. spec:  
  3.   ...  
  4.   strategy:  
  5.     jenkinsPipelineStrategy:  
  6.       env:  
  7.       - name: REGION  
  8.         value: US-West           
  9.       jenkinsfilePath: Jenkinsfile       
  10.     type: JenkinsPipeline 

有了這個配置,我可以將REGION這個參數傳遞給管道,以便將應用程序部署到指定的地區。

一些企業可能決定將CI/CD管道分成獨立的CI管道和CD管道,通常是由于在部署之前要有某個審批環節。設想我有四個映像和三個不同的環境要部署。要是沒有參數化,我需要12條CD管道以支持所有的部署方案。這很快就會失控。為了讓CD管道的維護更容易,企業會發現參數化映像和環境、好讓一條管道執行多條管道的工作來得更明智。

結束語

企業層面的CI/CD往往比許多企業預料的來得復雜。幸好有了Jenkins,有好多方法可以無縫提供自動化機制。維護常見CI/CD工件的Git倉庫也會簡化工作,因為團隊可以從維護的依賴項來獲取,而不是從頭開始自行編寫。***,參數化CI/CD管道將減少需要維護的管道的數量。

原文標題:3 best practices for continuous integration and deployment,作者:Austin Dewey

【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】

責任編輯:龐桂玉 來源: 51CTO
相關推薦

2021-07-23 10:17:17

網絡攻擊存儲供應鏈

2023-01-16 08:00:00

2015-09-29 10:08:26

DockerJava持續集成

2022-01-24 10:26:46

Kubernetes微服務

2017-02-27 18:35:23

集成交付部署

2016-08-05 17:19:37

持續集成持續交付系統運維

2016-03-22 13:25:14

2019-04-18 10:35:30

持續集成工具Buddy

2019-10-08 09:55:18

物聯網智能建筑安全

2023-03-19 11:47:57

Taro小程序持續集

2012-02-17 09:33:52

虛擬化桌面虛擬化

2017-10-19 09:47:55

容器化微服務集成

2017-03-17 08:59:55

持續部署Microservic架構

2021-03-31 09:00:00

管道集成工具

2015-06-29 09:37:57

阿里員工持續集成

2009-06-14 18:05:58

ibmdwWebSphere

2015-07-27 11:32:24

Docker持續集成Docker部署

2024-04-25 14:27:32

順序消息事務消息

2020-08-10 06:33:04

DevOps持續集成機器學習

2022-11-30 10:34:17

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产一区二区三区在线看 | 亚洲欧美在线一区 | 一区二区三区欧美 | 在线 丝袜 欧美 日韩 制服 | 中文字幕亚洲无线 | 亚洲一区国产精品 | 久久午夜国产精品www忘忧草 | 欧美精品v国产精品v日韩精品 | 精品久久成人 | 韩日一区二区 | 日韩视频―中文字幕 | 毛片的网址 | 91精品国产综合久久久久久 | 亚洲精品女人久久久 | 久久久www | 涩涩视频网 | 精品久久99| 国产精品欧美一区二区三区 | 91资源在线观看 | 91成人 | 性色网站 | 99久久国产 | 一级片视频免费 | 国产高清精品一区二区三区 | 精品乱码一区二区三四区视频 | 欧美日韩亚洲国产综合 | 亚洲精品成人网 | 韩日视频在线观看 | 国产精品一区二区久久 | 一区二区三区四区日韩 | 国产精品久久久久久久久久免费 | 色av一区二区 | 精品亚洲一区二区三区 | 18性欧美 | 羞羞色在线观看 | 久久精品国产99国产精品 | 拍真实国产伦偷精品 | 毛片链接 | 欧美一级在线 | 国产综合av| 亚洲精品二区 |