自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

持續(xù)集成和部署方面的3個(gè)優(yōu)秀實(shí)踐

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

[[249849]]

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

術(shù)語介紹

先不妨定義幾個(gè)術(shù)語。CI/CD是一種讓團(tuán)隊(duì)可以快速自動(dòng)測(cè)試、打包和部署應(yīng)用程序的實(shí)踐。它常常通過利用名為Jenkins的服務(wù)器來實(shí)現(xiàn),該服務(wù)器充當(dāng)CI/CD編排器。Jenkins偵聽特定的輸入(常常是代碼簽入后的Git鉤子),被觸發(fā)后啟動(dòng)管道。

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

我們已搞明白了關(guān)鍵術(shù)語,不妨深入了解幾個(gè)***實(shí)踐。

1. 自動(dòng)化是關(guān)鍵

想在PaaS上運(yùn)行CI/CD,需要在集群上配置適當(dāng)?shù)幕A(chǔ)設(shè)施。在這個(gè)例子中,我將使用OpenShift。

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

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

我使用Ansible和OpenShift-Applier角色來自動(dòng)化我的實(shí)現(xiàn)。你可能覺得這些工具很有價(jià)值,也可能覺得別的工具更適合你和貴企業(yè)。無論怎樣,你會(huì)發(fā)現(xiàn)自動(dòng)化大大減少了重新創(chuàng)建CI/ CD組件所需的工作量。

配置Jenkins主節(jié)點(diǎn)

除了一般的“自動(dòng)化”外,我想單單挑出Jenkins主節(jié)點(diǎn),談?wù)劰芾韱T可以利用OpenShift自動(dòng)化Jenkins配置的幾種方法。來自Red Hat Container Catalog中的Jenkins映像隨附安裝了OpenShift-Sync插件(https://github.com/openshift/jenkins-sync-plugin)。

想創(chuàng)建Jenkins管道,要?jiǎng)?chuàng)建類似這樣的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插件會(huì)注意到,擁有策略jenkinsPipelineStrategy的BuildConfig已創(chuàng)建,可將它轉(zhuǎn)換成Jenkins管道,從Git源代碼指定的Jenkinsfile來獲取。還可以使用內(nèi)聯(lián)式Jenkinsfile,而不是從Git代碼倉庫來獲取一個(gè)。欲知詳情,請(qǐng)參閱說明文檔。

想創(chuàng)建Jenkins從節(jié)點(diǎn),創(chuàng)建以下列定義開始的OpenShift ImageStream: 

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

請(qǐng)注意這個(gè)ImageStream中定義的元數(shù)據(jù)。OpenShift-Sync插件會(huì)將標(biāo)簽是role: jenkins-slave的任何ImageStream轉(zhuǎn)換成Jenkins從節(jié)點(diǎn)。Jenkins從節(jié)點(diǎn)將以來自slave-label標(biāo)注的值命名。

ImageStreams非常適合簡(jiǎn)單的Jenkins從節(jié)點(diǎn)配置,但是一些團(tuán)隊(duì)發(fā)現(xiàn)有必要配置一些基本細(xì)節(jié),比如資源限制、就緒和活性探針以及實(shí)例上限。這時(shí)ConfigMaps可以派上用場(chǎng): 

  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標(biāo)簽將ConfigMap轉(zhuǎn)換成Jenkins從節(jié)點(diǎn)。Kubernetes pod模塊包括一段很長(zhǎng)的XML,可根據(jù)貴企業(yè)的喜好來配置每個(gè)細(xì)節(jié)。想查看該XML以及將ImageStreams和ConfigMaps轉(zhuǎn)換成Jenkins從節(jié)點(diǎn)方面的更多信息,請(qǐng)參閱說明文檔。

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

2. 共享就是關(guān)愛

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

在此基礎(chǔ)上更進(jìn)一步,貴企業(yè)可能決定要維護(hù)整條管道。你可能發(fā)現(xiàn),團(tuán)隊(duì)在編寫功能相似的管道。那些團(tuán)隊(duì)使用一條來自共同倉庫的參數(shù)化管道而不是各自從頭開始編寫會(huì)來得更高效。

3. 少就是多

如上所述,第三條***實(shí)踐是參數(shù)化CI/CD管道。參數(shù)化可防止管道泛濫,使你的CI/CD系統(tǒng)更容易維護(hù)。設(shè)想我有多個(gè)地區(qū)來部署應(yīng)用程序。要是沒有參數(shù)化,每個(gè)地區(qū)都需要一條不同的管道。

想?yún)?shù)化編寫成OpenShift構(gòu)建配置的管道,將env這節(jié)添加到配置中: 

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

有了這個(gè)配置,我可以將REGION這個(gè)參數(shù)傳遞給管道,以便將應(yīng)用程序部署到指定的地區(qū)。

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

結(jié)束語

企業(yè)層面的CI/CD往往比許多企業(yè)預(yù)料的來得復(fù)雜。幸好有了Jenkins,有好多方法可以無縫提供自動(dòng)化機(jī)制。維護(hù)常見CI/CD工件的Git倉庫也會(huì)簡(jiǎn)化工作,因?yàn)閳F(tuán)隊(duì)可以從維護(hù)的依賴項(xiàng)來獲取,而不是從頭開始自行編寫。***,參數(shù)化CI/CD管道將減少需要維護(hù)的管道的數(shù)量。

原文標(biāo)題:3 best practices for continuous integration and deployment,作者:Austin Dewey

【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】

責(zé)任編輯:龐桂玉 來源: 51CTO
相關(guān)推薦

2023-01-16 08:00:00

2021-07-23 10:17:17

網(wǎng)絡(luò)攻擊存儲(chǔ)供應(yīng)鏈

2015-09-29 10:08:26

DockerJava持續(xù)集成

2017-02-27 18:35:23

集成交付部署

2022-01-24 10:26:46

Kubernetes微服務(wù)

2016-08-05 17:19:37

持續(xù)集成持續(xù)交付系統(tǒng)運(yùn)維

2016-03-22 13:25:14

2019-04-18 10:35:30

持續(xù)集成工具Buddy

2019-10-08 09:55:18

物聯(lián)網(wǎng)智能建筑安全

2023-03-19 11:47:57

Taro小程序持續(xù)集

2012-02-17 09:33:52

虛擬化桌面虛擬化

2017-10-19 09:47:55

容器化微服務(wù)集成

2021-03-31 09:00:00

管道集成工具

2017-03-17 08:59:55

持續(xù)部署Microservic架構(gòu)

2015-06-29 09:37:57

阿里員工持續(xù)集成

2009-06-14 18:05:58

ibmdwWebSphere

2015-07-27 11:32:24

Docker持續(xù)集成Docker部署

2024-04-25 14:27:32

順序消息事務(wù)消息

2020-08-10 06:33:04

DevOps持續(xù)集成機(jī)器學(xué)習(xí)

2015-09-24 09:43:08

阮一峰持續(xù)集成
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)