破冰,培訓(xùn)整體介紹,團(tuán)隊(duì)分組  | 
參訓(xùn)人員互相熟悉,并分成4個(gè)小組。講師對(duì)培訓(xùn)進(jìn)行整體介紹。 | 
 
                        DevOps和持續(xù)交付概述 | 
- DevOps的價(jià)值,知識(shí)體系;
 
- 通過案例分享了解實(shí)現(xiàn)DevOps的過程和收益。
 
- 持續(xù)交付所涉及的方法和實(shí)踐,增量式開發(fā),按故事交付,快速迭代,持續(xù)集成,持續(xù)部署。
 
 
 | 
| Docker技術(shù)概述 | 
- Docker技術(shù)的背景和對(duì)DevOps的價(jià)值
 
 
 | 
 
                        演示:基于容器的DevOps發(fā)布流水線整體場(chǎng)景 | 
- 使用Docker和容器技術(shù)構(gòu)建持續(xù)交付流水線
 
- 場(chǎng)景演示:容器化本地開發(fā)環(huán)境,容器化主機(jī),容器編排平臺(tái)Docker Swarm,私有鏡像倉(cāng)庫(kù),GitLab + Jenkins持續(xù)交付流水線;
 
- 并在以上環(huán)境中完成一個(gè)微服務(wù)架構(gòu)應(yīng)用從代碼到CI/CD,再到測(cè)試和生產(chǎn)環(huán)境的自動(dòng)化發(fā)布流程。
 
 
 | 
 
                        動(dòng)手實(shí)驗(yàn):搭建基礎(chǔ)環(huán)境并發(fā)布至測(cè)試環(huán)境 | 
- 各學(xué)員按照講師提供的操作手冊(cè)對(duì)docker基本操作進(jìn)行熟悉。
 
- 同時(shí)使用docker搭建gitlab,  jenkins和registry基礎(chǔ)環(huán)境,完成項(xiàng)目代碼初始化,jenkins節(jié)點(diǎn)配置和測(cè)試環(huán)境的自動(dòng)化部署。
 
 
 | 
 
                        容器編排平臺(tái)概述 | 
容器編排平臺(tái)的特點(diǎn)和價(jià)值,如何選擇適合自己的編排平臺(tái)(Docker  Swarm/k8s/Apache Mesos/Service Fabric) | 
 
                        持續(xù)交付工具鏈介紹 | 
構(gòu)建持續(xù)交付所需要的工具,以及如何使用這些工具支持迭代開發(fā),單元測(cè)試,代碼覆蓋率,自動(dòng)化構(gòu)建,自動(dòng)化部署,自動(dòng)化集成測(cè)試以及生產(chǎn)環(huán)境監(jiān)控 | 
 
                        演示:Docker  Swarm編排平臺(tái)的主要使用場(chǎng)景 | 
- 容器編排平臺(tái)Docker Swarm的搭建,服務(wù)部署和擴(kuò)縮容;
 
- 將Docker Swarm環(huán)境集成到Jenkins發(fā)布流水線 。
 
 
 | 
 
                        動(dòng)手實(shí)驗(yàn):使用容器化DevOps流水線開發(fā),測(cè)試和發(fā)布容器化應(yīng)用 | 
各學(xué)員在教師的指導(dǎo)下,按照操作手冊(cè),完成GitLab項(xiàng)目觸發(fā)器配置,Jenkins作業(yè)配置,Docker  Swarm集群初始化和自動(dòng)化部署;從而完成整條DevOps發(fā)布流水線的配置。 | 
 
                        動(dòng)手實(shí)驗(yàn):使用持續(xù)交付流水線快速發(fā)布產(chǎn)品 | 
在以上環(huán)境中完成特性分支建立,代碼編寫和簽入,Pull  Request提交,自動(dòng)化構(gòu)建,容器打包,容器上傳私有鏡像倉(cāng)庫(kù),發(fā)布容器到測(cè)試(docker machine)和生產(chǎn)環(huán)境(docker  swarm集群) | 
 
                        容器數(shù)據(jù)持久化 &  跨主機(jī)網(wǎng)絡(luò)解決方案 | 
- 深入了解容器CoW機(jī)制及其影響,數(shù)據(jù)卷的主要使用技巧,以及使用共享數(shù)據(jù)卷實(shí)現(xiàn)跨主機(jī)容器遷移。
 
- 深入了解容器網(wǎng)絡(luò)工作機(jī)制,使用overlay網(wǎng)絡(luò)實(shí)現(xiàn)跨主機(jī)容器網(wǎng)絡(luò)。
 
 
 | 
 
                        容器日志機(jī)制和監(jiān)控解決方案 | 
深入了解容器日志機(jī)制和監(jiān)控方式,使用ELK搭建企業(yè)級(jí)容器集群監(jiān)控平臺(tái),實(shí)現(xiàn)主機(jī),容器和應(yīng)用三層監(jiān)控機(jī)制。 | 
 
                        演示:生產(chǎn)機(jī)容器運(yùn)行環(huán)境改造 | 
- 在Docker Swarm環(huán)境中增加共享卷和overlay網(wǎng)絡(luò)支持,并實(shí)現(xiàn)集群環(huán)境下的容器在線遷移;
 
- 完成ELK監(jiān)控服務(wù)搭建并在Docker Swarm環(huán)境中部署監(jiān)控?cái)?shù)據(jù)采集器,配置Kibana儀表盤完成容器集群環(huán)境的監(jiān)控。
 
 
 | 
 
                        動(dòng)手實(shí)驗(yàn):改進(jìn)DevOps流水線,實(shí)現(xiàn)數(shù)據(jù)持久化(容器遷移),跨主機(jī)網(wǎng)絡(luò)(微服務(wù)集群),多主機(jī)監(jiān)控和Pipeline  as Code. | 
- 在講師的指導(dǎo)下,按照操作手冊(cè)在環(huán)境中添加數(shù)據(jù)持續(xù)久化,跨主機(jī)網(wǎng)絡(luò)和監(jiān)控系統(tǒng)。
 
- 莆趙諫??肪持惺褂?Docker作為容器化DevOps解決方案的能力。
 
- 改造當(dāng)前流水線使用Pipeline as Code方式。
 
 
 | 
| 動(dòng)手實(shí)驗(yàn)內(nèi)容 | 
1.實(shí)驗(yàn)環(huán)境獲取:自助完成基于Azure云平臺(tái)的實(shí)驗(yàn)環(huán)境創(chuàng)建和獲取。 
                        2.  基礎(chǔ)環(huán)境搭建:使用docker-compose 完成gitlab, jenkins, registry和cAdvisor的容器環(huán)境搭建。 
                        3.  導(dǎo)入實(shí)驗(yàn)項(xiàng)目代碼到gitlab:完成gitlab初始化并從GitHub導(dǎo)入實(shí)驗(yàn)項(xiàng)目代碼。 
                        4.  完成Jenkins初始化配置:完成訪問憑據(jù),遠(yuǎn)程服務(wù)器ssh連接和Jenkins構(gòu)建代理節(jié)點(diǎn)等初始化配置。 
                        在Jenkins中搭建CI/CD流水線完成到測(cè)試環(huán)境的部署:使用Jenkins  Job的方式完成從獲取代碼,編譯代碼到測(cè)試環(huán)境部署的過程 | 
| 動(dòng)手實(shí)驗(yàn)內(nèi)容 | 
1. 完成Docker  Swarm集群的搭建和初始化:使用ssh登錄個(gè)節(jié)點(diǎn)主機(jī)完成swarm join操作 
                        2. 學(xué)習(xí)Docker  Swarm的基本操作,管理節(jié)點(diǎn),管理服務(wù),服務(wù)擴(kuò)縮容等等。 
                        3. 配置Jenkins通過遠(yuǎn)程方式控制Swarm集群 
                        4. 配置Jenkins  Job完成對(duì)Swarm集群的部署和持續(xù)更新 | 
| 動(dòng)手實(shí)驗(yàn)內(nèi)容 | 
1. 改造Jenkins使用Pipeline as Code的方式 
                        2.  完成ELK環(huán)境搭建:使用docker-compose完成elastic search, logstash, kibana容器環(huán)境搭建 
                        3.  在測(cè)試環(huán)境中部署logspout和dockbeat以便收集監(jiān)控?cái)?shù)據(jù) 
                        4.  在Swarm集群中安裝共享數(shù)據(jù)卷驅(qū)動(dòng),并使用global方式啟動(dòng)dockbeat服務(wù)以便完成集群各節(jié)點(diǎn)的監(jiān)控?cái)?shù)據(jù)收集 
                        5.  配置Kibana完成容器環(huán)境的統(tǒng)一監(jiān)控儀表盤配置 |