DevOps:工具篇

一、 什么是DevOps露筒?

Devops作為敏捷開(kāi)發(fā)的基石呐伞,脫離了DevOps談敏捷開(kāi)發(fā),只會(huì)變得的不“敏捷”慎式,它助力于敏捷開(kāi)發(fā)以用戶的需求進(jìn)化為核心伶氢,采用迭代、循序漸進(jìn)的方法進(jìn)行軟件開(kāi)發(fā)瘪吏,以達(dá)到項(xiàng)目快速交付癣防,一個(gè)敏捷開(kāi)發(fā)的流程圖大致如下:


image.png

“DevOps”從字面意思上很簡(jiǎn)單,就是 Development(開(kāi)發(fā))和 Operations (運(yùn)維)的組合掌眠。這個(gè)“開(kāi)發(fā)”不能片面的理解為寫代碼劣砍,應(yīng)該是一個(gè)開(kāi)發(fā)階段或過(guò)程,在這個(gè)階段需要做大量的可行性分析扇救、成本預(yù)算等刑枝,這個(gè)在其他行業(yè)也是一樣,三峽大壩是世界上最大的水利工程迅腔,在修建它之前做了大量可行性研究装畅,并為此提早幾十年先修建了一座小型的葛洲壩電站,從中積累了大量的經(jīng)驗(yàn)沧烈。而“運(yùn)維”要考慮后期通過(guò)何種方式升級(jí)掠兄,如何監(jiān)控服務(wù),如何快速定位和解決問(wèn)題等锌雀。而實(shí)際上蚂夕,它是一組過(guò)程、方法與系統(tǒng)的統(tǒng)稱腋逆,到目前為止沒(méi)有一個(gè)標(biāo)準(zhǔn)婿牍,我覺(jué)得只要有助于團(tuán)隊(duì)之間合作,能夠加快項(xiàng)目交付就是一套好的DevOps惩歉,就應(yīng)該大力使用它等脂,反之則不要用。如何建立一套有效的DevOps工具鏈撑蚌,我覺(jué)得可以從以下幾方面入手:

  • 團(tuán)隊(duì)扁平化上遥,降低溝通成本,促使項(xiàng)目經(jīng)理争涌、產(chǎn)品經(jīng)理粉楚、開(kāi)發(fā)團(tuán)隊(duì)、測(cè)試團(tuán)隊(duì)、運(yùn)維團(tuán)隊(duì)有效的協(xié)作
image.png
  • 一些工具如leangoo模软、jira的看板圖伟骨、燃盡圖等,可以明確任務(wù)撵摆,明確責(zé)任


    image.png
  • 快速響應(yīng),快速調(diào)整害晦,快速迭代


    image.png
  • 實(shí)時(shí)監(jiān)控特铝,對(duì)項(xiàng)目監(jiān)控、對(duì)人員監(jiān)控壹瘟、對(duì)服務(wù)監(jiān)控


    image.png

二鲫剿、 實(shí)現(xiàn)DevOps所需工具?

  • 項(xiàng)目管理工具(PM):Jira代碼管理
  • 代碼管理工具:SVN稻轨、GibLab等
  • 持續(xù)集成工具:Jenkins灵莲、Gitlab-CI
  • 鏡像倉(cāng)庫(kù):Registry、Harbor
  • 部署環(huán)境:Docker殴俱、K8S
  • 部署腳本:Shell政冻、Python等
image.png

三、 安裝和配置

1. 安裝Jenkins

$ cat <<EOF > start.sh
#!/bin/bash
HOST_NAME=jenkins.kq
GITLAB_DIR=`pwd`

docker run \
 -u root \
 --hostname \${HOST_NAME} \
 --name jenkins \
 --rm \
 -d \
 -p 9080:9080 \
 -p 50000:50000 \
 -v ${GITLAB_DIR}:/opt/jenkins \
 -v /var/run/docker.sock:/var/run/docker.sock \
 jenkinsci/blueocean
EOF
$ chmod u+x start.sh
$ ./start.sh

安裝插件
解決插件安裝慢問(wèn)題线欲,替換后重新啟動(dòng)服務(wù)

  • 替換 google 為 baidu
  • 替換 updates.jenkins-ci.org/download 為mirrors.tuna.tsinghua.edu.cn/jenkins
$ vi /root/.jenkins/updates/default.json

修改配置
將jenkins中匿名用戶可讀選中明场,跨站的訪問(wèn)去掉

image.png

輸入一個(gè)令牌
image.png

在Gitlab中添加Hook(root登錄)


image.png

其他代碼管理工具配置方式類似

2. 安裝GitLab

docker安裝方式

$ cat <<EOF > start.sh
#!/bin/bash
HOST_NAME=gitlab.kq
GITLAB_DIR=`pwd`
docker stop gitlab
docker rm gitlab
docker run -d \
  --hostname \${HOST_NAME} \
  -p 8443:443 -p 9090:80 -p 2222:22 \
--name gitlab \
--memory=2048M \
  -v ${GITLAB_DIR}/config:/etc/gitlab \
  -v ${GITLAB_DIR}/logs:/var/log/gitlab \
  -v ${GITLAB_DIR}/data:/var/opt/gitlab \
  registry.cn-hangzhou.aliyuncs.com/imooc/gitlab-ce:latest
EOF

$ chmod u+x start.sh
$ ./start.sh

配置
安裝完成之后,可以在/etc/gitblab/gitlab.rb中按照需求修改配置李丰,

  • 主要需要修改external_url苦锨,改成gitlab.kq:9090
  • 或修改nginx配置,修改監(jiān)聽(tīng)端口趴泌,增加 ssl 配置舟舒,設(shè)置 header:
# external_url主要是配置拉取代碼是的地址,如果端口不是80嗜憔,需要修改成指定的端口
external_url 'http://gitlab.kq:9090'
# 這個(gè)是配置gitlab監(jiān)聽(tīng)在哪個(gè)地址上    
nginx['listen_addresses'] = ['127.0.0.1']
# 這個(gè)配置gitlab監(jiān)聽(tīng)在哪個(gè)端口上    
nginx['listen_port'] = 9090
# For GitLab
nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.example.com.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.example.com.key"
# proxy set header
nginx['proxy_set_headers'] = {
  "X-Forwarded-Proto" => "http",
  "CUSTOM_HEADER" => "VALUE"
 }

訪問(wèn):http://gitlab.kq:9090 賬號(hào):root/12345678

3. 安裝harhor

安裝harhor需要先安裝docker和docker-compose

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

在harbor安裝機(jī)器上生成證書(如果不用https訪問(wèn)秃励,此步驟略)

## 生成證書
$ mkdir -pv  /etc/harbor/pki/ & cd /etc/harbor/pki/
$ openssl genrsa -out harbor-ca.key
$ openssl req -x509 -new -nodes -key harbor-ca.key  -subj "/CN=harbor.kq" -days 7120 -out harbor-ca.crt

## 添加harbor域名,域名要和證書中的域名保持一致
$ echo "192.168.x.x  harbor.kq" >> /etc/hosts 

修改harbor.yml文件吉捶,將hostname改成harbor莺治,配置證書位置(如果不用https訪問(wèn),此步驟略)

hostname: harbor

# http related config
http:
  # port for http, default is 80. If https enabled, this port will redirect to https port
  port: 80

# https related config
https:
  # https port for harbor, default is 443
  port: 443
  # 配置證書位置
  certificate: /etc/harbor/pki/harbor-ca.crt
  private_key: /etc/harbor/pki/harbor-ca.key
## 修改admin密碼  
harbor_admin_password: 123456  

安裝并啟動(dòng)harbor

$ gzip -dv  harbor-offline-installer-v1.10.1.tgz 
$ tar zxvf harbor-offline-installer-v1.10.1.tar
$ ./install.sh

# 在daemon.json "insecure-registries": ["harbor.kq"]帚稠,否則會(huì)push到docker.io上
$ vi /etc/docker/daemon.json 
{
    ......
    "insecure-registries": ["harbor.kq"]
}

# harbor是通過(guò)docker-compose 來(lái)啟動(dòng)的
$ cd /root/harbor
$ docker-compose up

# 如果啟動(dòng)時(shí)報(bào)錯(cuò)谣旁,把docker服務(wù)重啟試試
$ systemctl daemon-reload
$ service docker restart

在其他主機(jī)測(cè)試harbor

$ echo "192.168.x.x  harbor.kq" >> /etc/hosts 

## 拷貝證書到doker目錄下,否則登錄會(huì)報(bào): x509: cannot validate certificate
$ mkdir -p /etc/docker/certs.d/harbor.kq/
$ scp root@harbor.kq:/etc/harbor/pki/harbor-ca.crt /etc/docker/certs.d/harbor.kq/

# 在daemon.json "insecure-registries": ["harbor.kq"]滋早,否則會(huì)push到docker.io上
$ vi /etc/docker/daemon.json 
{
    ......
    "insecure-registries": ["harbor.kq"]
}

$ systemctl daemon-reload
$ service docker restart

訪問(wèn)頁(yè)面: http://192.168.x.x/ 用admin/123456登錄

創(chuàng)建一個(gè)公開(kāi)倉(cāng)庫(kù):oauth2榄审,創(chuàng)建私有倉(cāng)庫(kù)的話集群中所有節(jié)點(diǎn)都需要登錄才能拉取鏡像

$ docker login harbor.kq
Username: admin
Password: [123456]
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

## 推送一個(gè)Nginx鏡像到harbor上
## !8唆铩搁进!一定要加倉(cāng)庫(kù)名浪感,否則無(wú)法push
$ docker tag registry.cn-hangzhou.aliyuncs.com/moobox/nginx:latest harbor.kq/<倉(cāng)庫(kù)名>/nginx:latest
$ docker push harbor.kq/<倉(cāng)庫(kù)名>/nginx:latest   

harbor用久了,會(huì)占用大量磁盤空間饼问,執(zhí)行下面命令進(jìn)行垃圾回收

docker run -it --name gc --rm --volumes-from registry vmware/registry:2.6.2-photon garbage-collect  /etc/registry/config.yml

5. 安裝nexus

參考影兽,nexus里可以配置3種類型的倉(cāng)庫(kù),分別是proxy莱革、hosted峻堰、group

  • proxy是遠(yuǎn)程倉(cāng)庫(kù)的代理。比如說(shuō)在nexus中配置了一個(gè)central repository的proxy盅视,當(dāng)用戶向這個(gè)proxy請(qǐng)求一個(gè)artifact捐名,這個(gè)proxy就會(huì)先在本地查找,如果找不到的話闹击,就會(huì)從遠(yuǎn)程倉(cāng)庫(kù)下載镶蹋,然后返回給用戶,相當(dāng)于起到一個(gè)中轉(zhuǎn)的作用
  • hosted是宿主倉(cāng)庫(kù)赏半,用戶可以把自己的一些構(gòu)件贺归,deploy到hosted中,也可以手工上傳構(gòu)件到hosted里断箫。比如說(shuō)oracle的驅(qū)動(dòng)程序牧氮,ojdbc6.jar,在central repository是獲取不到的瑰枫,就需要手工上傳到hosted里
  • group是倉(cāng)庫(kù)組踱葛,在maven里沒(méi)有這個(gè)概念,是nexus特有的光坝。目的是將上述多個(gè)倉(cāng)庫(kù)聚合尸诽,對(duì)用戶暴露統(tǒng)一的地址,這樣用戶就不需要在pom中配置多個(gè)地址盯另,只要統(tǒng)一配置group的地址就可以了

創(chuàng)建一個(gè)阿里云proxy的代理庫(kù)

image.png

添加到maven-public組中

將創(chuàng)建的阿里云proxy庫(kù)性含,添加到maven-public組中,訪問(wèn)優(yōu)先級(jí)自上而下


image.png

在本地配置倉(cāng)庫(kù)地址:$HOME/.m2/setting.xml文件

<mirror>
    <id>maven-public</id>
    <mirrorOf>central</mirrorOf>
    <name>Nexus kq</name>
    <url>http://192.168.x.x:8082/repository/maven-public/</url>
</mirror>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末鸳惯,一起剝皮案震驚了整個(gè)濱河市商蕴,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌芝发,老刑警劉巖绪商,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異辅鲸,居然都是意外死亡格郁,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)例书,“玉大人锣尉,你說(shuō)我怎么就攤上這事【霾桑” “怎么了自沧?”我有些...
    開(kāi)封第一講書人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)树瞭。 經(jīng)常有香客問(wèn)我拇厢,道長(zhǎng),這世上最難降的妖魔是什么移迫? 我笑而不...
    開(kāi)封第一講書人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任旺嬉,我火速辦了婚禮管行,結(jié)果婚禮上厨埋,老公的妹妹穿的比我還像新娘。我一直安慰自己捐顷,他們只是感情好荡陷,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著迅涮,像睡著了一般废赞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上叮姑,一...
    開(kāi)封第一講書人閱讀 51,301評(píng)論 1 301
  • 那天唉地,我揣著相機(jī)與錄音,去河邊找鬼传透。 笑死耘沼,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的朱盐。 我是一名探鬼主播群嗤,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼兵琳!你這毒婦竟也來(lái)了狂秘?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤躯肌,失蹤者是張志新(化名)和其女友劉穎者春,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體清女,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡碧查,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片忠售。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡传惠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出稻扬,到底是詐尸還是另有隱情卦方,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布泰佳,位于F島的核電站盼砍,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏逝她。R本人自食惡果不足惜浇坐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望黔宛。 院中可真熱鬧近刘,春花似錦、人聲如沸臀晃。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)徽惋。三九已至案淋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間险绘,已是汗流浹背踢京。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留宦棺,地道東北人瓣距。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像渺氧,于是被迫代替她去往敵國(guó)和親旨涝。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 特別說(shuō)明: 本人平時(shí)混跡于 B 站侣背,不咋回復(fù)這里的評(píng)論白华,有問(wèn)題可以到 B 站視頻評(píng)論區(qū)留言找我視頻地址: http...
    擼帝閱讀 902評(píng)論 0 6
  • 5-4 持續(xù)集成與持續(xù)部署 課程介紹 那些大廠們,天天DevOps贩耐、持續(xù)集成的弧腥?到底在講些什么?這堂課來(lái)給你揭開(kāi)持...
    ioufev閱讀 3,611評(píng)論 1 7
  • 前言 隨著前后端分離應(yīng)用模式的推廣潮太,前端項(xiàng)目可獨(dú)立部署維護(hù)上線管搪,不再僅僅將前端開(kāi)發(fā)后打包的文件直接丟到一個(gè)文件目錄...
    維李設(shè)論閱讀 516評(píng)論 0 0
  • # 版本管理工具 ## git - 開(kāi)源的分布式版本控制系統(tǒng)虾攻,可以有效、高速地處理從很小到非常大的項(xiàng)目版本管理更鲁,創(chuàng)...
    夕望有你閱讀 394評(píng)論 0 1
  • Maven倉(cāng)庫(kù)的搭建 1. 倉(cāng)庫(kù)選型 這里經(jīng)過(guò)了解霎箍,好像沒(méi)有什么其他的選擇,Nexus就是一個(gè)不二之選澡为,網(wǎng)上的帖子...
    CodingForChange閱讀 774評(píng)論 0 0