柚子快報激活碼778899分享:DevOps運維開發(fā)一體化
研發(fā)分享了DevOp的實踐,發(fā)現我們項目組還在使用傳統(tǒng)的方案開發(fā)項目。
CI與CD工具確實能提交交付的能力,自動化是大方向。
以下兩幅圖都是關于Devops的工具鏈,近年來由于云計算,互聯(lián)網的發(fā)展,促進了DevOps的基礎設施及工具鏈的發(fā)展,涌現了一大批優(yōu)秀的工具,這些工具包括開發(fā)、測試、運維的各各領域,例如:GitHub、Git/SVN、Docker、Jenkins、Hudson、Ant/Maven/Gradle、Selenium、QUnit、JMeter等。下圖是DevOps相關的工具集:
DevOps 的工具鏈
DevOps中包括版本控制&協(xié)作開發(fā)工具、自動化構建和測試工具、持續(xù)集成&交付工具、部署工具、維護工具、監(jiān)控,警告&分析工具等等,補充了一些國內的服務,可以讓你更好的執(zhí)行實施 DevOps 工作流。
版本控制&協(xié)作開發(fā):GitHub、GitLab、BitBucket、SubVersion、Coding、Bazaar
自動化構建和測試:Apache Ant、Maven 、Selenium、PyUnit、QUnit、JMeter、Gradle、PHPUnit、Nexus
持續(xù)集成&交付:Jenkins、Capistrano、BuildBot、Fabric、Tinderbox、Travis CI、flow.ci Continuum、LuntBuild、CruiseControl、Integrity、Gump、Go
容器平臺: Docker、Rocket、Ubuntu(LXC)、第三方廠商如(AWS/阿里云)
配置管理:Chef、Puppet、CFengine、Bash、Rudder、Powershell、RunDeck、Saltstack、Ansible
微服務平臺:OpenShift、Cloud Foundry、Kubernetes、Mesosphere
服務開通:Puppet、Docker Swarm、Vagrant、Powershell、OpenStack Heat
日志管理:Logstash、CollectD、StatsD
監(jiān)控,警告&分析:Nagios、Ganglia、Sensu、zabbix、ICINGA、Graphite、Kibana
代碼管理(SCM):GitHub、GitLab、BitBucket、SubVersion
構建工具:Ant、Gradle、maven
自動部署:Capistrano、CodeDeploy
持續(xù)集成(CI):Bamboo、Hudson、Jenkins
配置管理:Ansible、Chef、Puppet、SaltStack、ScriptRock GuardRail
容器:Docker、LXC、第三方廠商如AWS
編排:Kubernetes、Core、Apache Mesos、DC/OS
服務注冊與發(fā)現:Zookeeper、etcd、Consul
腳本語言:python、ruby、shell
日志管理:ELK、Logentries
系統(tǒng)監(jiān)控:Datadog、Graphite、Icinga、Nagios
性能監(jiān)控:AppDynamics、New Relic、Splunk
壓力測試:JMeter、Blaze Meter、loader.io
預警:PagerDuty、pingdom、廠商自帶如AWS SNS
HTTP加速器:Varnish
消息總線:ActiveMQ、SQS
應用服務器:Tomcat、JBoss
Web服務器:Apache、Nginx、IIS
數據庫:MySQL、Oracle、PostgreSQL等關系型數據庫;cassandra、mongoDB、redis等NoSQL數據庫
項目管理(PM):Jira、Asana、Taiga、Trello、Basecamp、Pivotal Tracker
2.1.Git/GitLab介紹安裝使用
2.1.1.介紹
Git是一個版本控制系統(tǒng),GitLab是一個遠程的Git倉庫,GitLab與GitHub及國內的碼云類似,用戶在GitLab上注冊賬號,上傳項目到GitLab,通過GitLab對項目進行版本控制。
2.1.2.安裝 Git及GitLab
查詢user.age和uesr.sex
git config user.age
git config user.sex
設置:
git config --global user.age “itcast”
git config --global user.sex"baidaguo@baidaguo.cn"
2.1.3.在GitLab創(chuàng)建項目
進入首頁 點擊New Project
輸入對應信息并提交,創(chuàng)建成功后,進入項目主頁,通過項目主頁即可訪問項目內容,并得到項目的Git項目倉庫地址:
2.1.4.使用Git管理項目(Idea繼承Git并對項目進行管理)
2.1.5.從GitLab檢出項目
2.1.6.提交代碼到GitLab
提交到暫存區(qū)->確認無誤->push
如果用過svn的話都懂得 大差不差 總體沒有什么難度
2.2.Docker
介紹就不多說 是在不知道是個啥玩意可看:
引用百度百科(百度百科Docker)
Docker 源代碼托管在 Github 上, 基于go語言并遵從Apache2.0協(xié)議開源。
官網:docker官網
2.2.1.組成
1、Docker daemon(Docker守護進程):
Docker守護進程是部署在操作系統(tǒng)上,負責支撐Docker Container的運行以及本地Image的管理。
2、Docker client:
用戶不直接操作Docker daemon,用戶通過Docker client訪問Docker,Docker client提供pull、run等操作命令。
3、Docker Image:
Docker 鏡像就是一個只讀的模板。
例如:一個鏡像可以包含一個完整的 ubuntu 操作系統(tǒng)環(huán)境,里面僅安裝了 Tomcat或用戶需要的其它應用程序。
鏡像可以用來創(chuàng)建 Docker 容器。
Docker 提供了一個很簡單的機制來創(chuàng)建鏡像或者更新現有的鏡像,用戶甚至可以直接從其他人那里下載一個已經做好的鏡像來直接使用。
4、Docker Container:
Docker 利用容器來運行應用。容器是從鏡像創(chuàng)建的運行實例。它可以被啟動、開始、停止、刪除。每個容器都是相互隔離的、保證安全的平臺。打個比方,鏡像相當于類,容器相當于對象。
5、Docker Registry:
Docker 倉庫分為公開倉庫(Public)和私有倉庫(Private)兩種形式
最大的公開倉庫是 Docker Hub,存放了數量龐大的鏡像供用戶下載。
用戶也可以在本地網絡內創(chuàng)建一個私有倉庫。
當用戶創(chuàng)建了自己的鏡像之后就可以使用 push 命令將它上傳到公有或者私有倉庫,這樣下次在另外一臺機器上使用這個鏡像時候,只需要從倉庫上 pull 下來就可以了。
2.2.2.部署微服務到Docker
1.安裝
centos7:
直接通過yum安裝即可:yum install -y docker
啟動docker:service docker start
查詢docker版本:docker version
centos6:
rpm -ivh http://dl.Fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum install -y docker-io
service docker start
2.部署
1、工程最終打成 Jar包
2、創(chuàng)建Docker鏡像
3、創(chuàng)建容器
4、啟動容器
3.打包(省略了 大家都會)
4.創(chuàng)建鏡像
上一步jar包拷貝到linux服務器先測試jar包是否可以運行:java -jar test-1.0-SNAPSHOT.jar
在test-1.0-SNAPSHOT.jar 位置編寫Dockerfile文件
FROM java:8
ENV ARTIFACTID test
ENV ARTIFACTVERSION 1.0-SNAPSHOT
ENV HOME_PATH /home
WORKDIR $HOME_PATH
ADD /
A
R
T
I
F
A
C
T
I
D
?
ARTIFACTID-
ARTIFACTID?ARTIFACTVERSION.jar
H
O
M
E
P
A
T
H
/
HOME_PATH/
HOMEP?ATH/ARTIFACTID.jar
ENTRYPOINT [“java”, “-jar”, “test.jar”]
在Dockerfile文件所在目錄執(zhí)行:docker build -t test:1.0-SNAPSHOT.jar
鏡像創(chuàng)建成功,查詢鏡像:
[root@localhost xc-govern-center]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
test 1.0-SNAPSHOT ad14dcce6666 35 seconds ago 684 MB
5.創(chuàng)建容器
基于test:1.0-SNAPSHOT鏡像創(chuàng)建容器,容器名稱為test-demo
docker create --name test-demo -t -p 50101:50101 -e PORT=50101 -e EUREKA_SERVER=http://192.168.101.64:50101/eureka/,http://192.168.101.64:50102/eureka/ test:1.0-SNAPSHOT
創(chuàng)建成功后 可通過docker ps -a命令查看
6.啟動容器
docker start test-demo
7.停止與刪除
1、停止正在運行的容器
docker stop 容器名
例如:docker stop test-demo
2、刪除容器
docker rm 容器名
例如:docker rm test-demo
3、刪除鏡像
docker rmi 鏡像名或鏡像Id
例如:docker rmi test:1.0-SNAPSHOT
8.maven構建鏡像
a.編寫pom_docker.xml
b.將Dockerfile文件拷貝到src/main/resource下
c.刪除之前創(chuàng)建的xc-govern-center鏡像
d.進入工程根目錄(pom_docker.xml所在目錄)執(zhí)行:mvn -f pom_docker.xml clean package -DskipTests docker:build
創(chuàng)建鏡像成功,結果如下:
Successfully built 64682c9ba311
[INFO] Built xc-govern-center:1.0-SNAPSHOT
[INFO] Tagging xc-govern-center:1.0-SNAPSHOT with 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 7.409 s
[INFO] Finished at: 2018-07-19T14:21:16+08:00
[INFO] Final Memory: 52M/414M
[INFO] ------------------------------------------------------------------------
2.3.持續(xù)集成
問題描述:
傳統(tǒng)的軟件開發(fā)流程如下:
1、項目經理分配模塊給開發(fā)人員
2、每個模塊的開發(fā)人員并行開發(fā),并進行單元測試
3、開發(fā)完畢,將代碼集成部署到測試服務器,測試人員進行測試。
4、測試人員發(fā)現bug,提交bug、開發(fā)人員修改bug
5、bug修改完畢再次集成、測試。
問題描述:
1、模塊之間依賴關系復雜,在集成時發(fā)現大量bug
2、測試人員等待測試時間過長
3、軟件交付無法保障
解決上述問題的思考:
1、能否把集成測試時間提前?
2、能否使用自動化工具代替人工集成部署的過程?
持續(xù)集成的思想是每天要多次將代碼合并到主干,并進行集成、測試,這樣就可以提早發(fā)現錯誤,進行修正。持久集成也屬于DevOps
優(yōu)點:
1、自動化集成部署,提高了集成效率。
2、更快的修復問題。
3、更快的進行交付。
4、提高了產品質量。
1.此處測試項目集成流程如下:
2.環(huán)境搭建
a.安裝Jenkins 官網地址:Jenkins官網
具體安裝文檔網上都有的 沒有私信博主也可以
b.安裝GitLab(見上文)
c.pom
此文件相比工程原有pom.xml增加了docker-maven-plugin插件,其作用是構建docker鏡像并將鏡像推送到Docker私有倉庫(192.168.101.64:5000)
2.4.創(chuàng)建持續(xù)集成任務
1.Jenkins構建一個任務
2.配置git倉庫
a.配置git憑證
此憑證用于遠程從git倉庫克隆工程源代碼
輸入git倉庫的賬號和密碼,這里如果使用碼云,下邊需要配置碼云的賬號和密碼。
b.配置git倉庫地址,此地址即構建項目的地址
3.maven構建
1、使用shell腳本停止容器、刪除容器、刪除鏡像
遠程登錄192.168.101.64(測試服務器)
停止test-center容器
刪除test-center容器
刪除192.168.101.64:5000/test-center:1.0-SNAPSHOT鏡像
shell腳本如下:
自我介紹一下,小編13年上海交大畢業(yè),曾經在小公司待過,也去過華為、OPPO等大廠,18年進入阿里一直到現在。
深知大多數Linux運維工程師,想要提升技能,往往是自己摸索成長或者是報班學習,但對于培訓機構動則幾千的學費,著實壓力不小。自己不成體系的自學效果低效又漫長,而且極易碰到天花板技術停滯不前!
因此收集整理了一份《2024年Linux運維全套學習資料》,初衷也很簡單,就是希望能夠幫助到想自學提升又不知道該從何學起的朋友,同時減輕大家的負擔。
既有適合小白學習的零基礎資料,也有適合3年以上經驗的小伙伴深入學習提升的進階課程,基本涵蓋了95%以上Linux運維知識點,真正體系化!
由于文件比較大,這里只是將部分目錄大綱截圖出來,每個節(jié)點里面都包含大廠面經、學習筆記、源碼講義、實戰(zhàn)項目、講解視頻,并且后續(xù)會持續(xù)更新
如果你覺得這些內容對你有幫助,可以添加VX:vip1024b (備注Linux運維獲取)
系的自學效果低效又漫長,而且極易碰到天花板技術停滯不前!**
因此收集整理了一份《2024年Linux運維全套學習資料》,初衷也很簡單,就是希望能夠幫助到想自學提升又不知道該從何學起的朋友,同時減輕大家的負擔。 [外鏈圖片轉存中…(img-2OepUIPS-1712829407326)] [外鏈圖片轉存中…(img-hn26AI3K-1712829407327)] [外鏈圖片轉存中…(img-dEEk6PC1-1712829407327)] [外鏈圖片轉存中…(img-xuW4yfVn-1712829407328)] [外鏈圖片轉存中…(img-XO50oWdI-1712829407329)]
既有適合小白學習的零基礎資料,也有適合3年以上經驗的小伙伴深入學習提升的進階課程,基本涵蓋了95%以上Linux運維知識點,真正體系化!
由于文件比較大,這里只是將部分目錄大綱截圖出來,每個節(jié)點里面都包含大廠面經、學習筆記、源碼講義、實戰(zhàn)項目、講解視頻,并且后續(xù)會持續(xù)更新
如果你覺得這些內容對你有幫助,可以添加VX:vip1024b (備注Linux運維獲?。?[外鏈圖片轉存中…(img-F8SHEo1h-1712829407329)]
柚子快報激活碼778899分享:DevOps運維開發(fā)一體化
推薦鏈接
本文內容根據網絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉載請注明,如有侵權,聯(lián)系刪除。