成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

k8s與CICD--drone簡介和部署

qujian / 1002人閱讀

摘要:是的最佳實(shí)踐部署編寫文件的部署及其簡單,采用的方式,類似于。具體如下此處需要注意的是在處的。登錄配置項(xiàng)目此處輸入的用戶名和密碼是的。支持和兩個(gè)數(shù)據(jù)庫。新的配置文件如下仔細(xì)查看關(guān)于的文檔,需要我們手動(dòng)創(chuàng)建數(shù)據(jù)庫。其中有和相關(guān)的。


前言

整個(gè)基于k8s的pass平臺(tái),關(guān)鍵的一部分就是CICD。CICD又是devops的關(guān)鍵部分。之前主流的工具是Jenkins。今天主要介紹的是drone。drone用go語言實(shí)現(xiàn)的,drone是前google員工2013年開源的一個(gè)CI/CD工具,現(xiàn)在已經(jīng)拉了投資商業(yè)化了。企業(yè)版是付費(fèi)的,我們用的是免費(fèi)版本。drone更新比較快,之前穩(wěn)定版本是0.7,今天部署的時(shí)候已經(jīng)更新到0.8了。不過相關(guān)的文檔不完善,很多都是coming soon。

優(yōu)勢:

drone引入pipline的概念,整個(gè)build過程由多個(gè)stage組成,每一個(gè)stage都是docker。

各stage間可以通過共享宿主機(jī)的磁盤目錄, 實(shí)現(xiàn)build階段的數(shù)據(jù)共享和緩存基礎(chǔ)數(shù)據(jù), 實(shí)現(xiàn)加速下次build的目標(biāo)

各stage也可以共享宿主機(jī)的docker環(huán)境,實(shí)現(xiàn)共享宿主機(jī)的docker image, 不用每次build都重新拉取base image,減少build時(shí)間

可以并發(fā)運(yùn)行。多個(gè)build可以并發(fā)運(yùn)行,單機(jī)并發(fā)數(shù)量由服務(wù)器cpu數(shù)決定。 由開發(fā)者負(fù)責(zé)打包image和流程控制。Docker-in-docker,這一點(diǎn)非常重要,一切都在掌握之中。相比jenkins的好處是,所有的image都是開發(fā)者提供,不需要運(yùn)維參與在CI服務(wù)器上部署各種語言編譯需要的環(huán)境。
是DevOps的最佳實(shí)踐!

部署 編寫docker-compose文件

drone的部署及其簡單,采用docker-compose的方式,類似于gogs。
具體docker-compose.yml如下:

version: "2"

services:
  drone-server:
    image: drone/drone:0.8

    ports:
      - 80:8000
      - 9000
    volumes:
      - /var/lib/drone:/var/lib/drone/
    restart: always
    environment:
      - DRONE_OPEN=true
      - DRONE_HOST=127.0.0.1
      - DRONE_GOGS=true
      - DRONE_GOGS_URL=http://gogs.xxx.com
      - DRONE_GOGS_PRIVATE_MODE=true 
      - DRONE_SECRET=f5b8122b5e1cf51da10d3be6e25bf6ec

  drone-agent:
    image: drone/agent:0.8

    restart: always
    depends_on:
      - drone-server
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - DRONE_SERVER=drone-server:9000
      - DRONE_SECRET=f5b8122b5e1cf51da10d3be6e25bf6ec
      - DOCKER_API_VERSION=1.24

此處需要注意的是在agent處的 DOCKER_API_VERSION=1.24。在執(zhí)行pipline的時(shí)候,直接報(bào)錯(cuò)

client is newer than server (client API version: 1.26, server API version: 1.24)

這其實(shí)是docker1.12版本的一個(gè)issue。解決方案就是在agent里增加環(huán)境變量DOCKER_API_VERSION=1.24。

執(zhí)行docker-compose

基本上就一句命令

docker-compose up -d

不熟悉docker-compose命令的可以具體查看。
至于docker-compose的安裝,我這里使用pip安裝的。

yum install python-pip -y
pip install docker-compose -y
登錄配置gogs項(xiàng)目

此處輸入的用戶名和密碼是gogs的。drone拿著用戶名和密碼可以獲取gogs的項(xiàng)目和建立webhook。

登錄成功以后選擇你想要進(jìn)行cicd的項(xiàng)目即可。可以設(shè)置各種gogs鉤子的觸發(fā)條件,比如push或是merge,tag等。下面是我實(shí)際測試的一個(gè)項(xiàng)目截圖。

.drone.yml

當(dāng)然必須現(xiàn)在項(xiàng)目根目錄下添加.drone.yml文件。增加自己實(shí)際的構(gòu)建邏輯。
由于我這邊是一個(gè)go項(xiàng)目作為測試。具體的內(nèi)容如下:

pipeline:
  build:
    image: golang:latest
    commands:
      - go get 
      - go build

然后基本上工作就完成了。

看到上面的貼圖其實(shí)有報(bào)錯(cuò)信息的,具體的錯(cuò)誤

fatal: could not read Username for "http://gogs.xxx.com": No such device or address
exit status 128

其實(shí)在實(shí)際應(yīng)用場景中,幾乎所有單位的gogs都是私有倉庫,所以才會(huì)出現(xiàn)這個(gè)問題。這個(gè)坑我也是查了很多信息都沒有解決,最后是這個(gè)issue以及看了drone-git的源碼以后找到了解決方案。實(shí)際上在drone0.4之前,是不支持gogs私有倉庫的。而在之后的版本已經(jīng)解決了這個(gè)問題,需要在docker-compose文件中增加 如下配置項(xiàng):

 # Set to true if Gogs is running in private mode.
DRONE_GOGS_PRIVATE_MODE=true 


配置drone數(shù)據(jù)庫為mysql

之前的docker-compose文件默認(rèn)啟用的是內(nèi)部的sqlite數(shù)據(jù)庫,在生產(chǎn)環(huán)境中,我們需要持久化到生產(chǎn)數(shù)據(jù)庫。drone支持mysql和pgsql兩個(gè)數(shù)據(jù)庫。這里我用的是mysql。

新的配置文件如下:

version: "2"

services:
  drone-server:
    image: drone/drone:0.8

    ports:
      - 80:8000
      - 9000
    volumes:
      - /var/lib/drone:/var/lib/drone/
    restart: always
    environment:
      - DRONE_OPEN=true
      - DRONE_HOST=127.0.0.1
      - DRONE_GOGS=true
      - DRONE_GOGS_URL=http://gogs.xx.com
      - DRONE_GOGS_PRIVATE_MODE=true
      - DRONE_SECRET=f5b8122b5e1cf51da10d3be6e25bf6ec
      - DRONE_DATABASE_DRIVER=mysql
      - DRONE_DATABASE_DATASOURCE=root:123456@tcp(xx.205.xx.126:3306)/drone?parseTime=true

  drone-agent:
    image: drone/agent:0.8

    restart: always
    depends_on:
      - drone-server
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - DRONE_SERVER=drone-server:9000
      - DRONE_SECRET=f5b8122b5e1cf51da10d3be6e25bf6ec
      - DOCKER_API_VERSION=1.24

仔細(xì)查看drone關(guān)于mysql的文檔,需要我們手動(dòng)創(chuàng)建drone數(shù)據(jù)庫。

和k8s的結(jié)合

其實(shí)主要的目的還是在我們k8s的平臺(tái)上使用起來,drone提供了豐富的插件。其中有k8s和helm相關(guān)的。結(jié)合harbor和helm,實(shí)現(xiàn)k8s的CICD,大致的流程:合并代碼觸發(fā)pipline,build和生成鏡像推到harbor,然后利用helm插件部署到k8s中。

當(dāng)然如果你的項(xiàng)目不是docker部署的,其實(shí)也完全可以使用drone的。比如golang項(xiàng)目,就可以構(gòu)建完成以后,將構(gòu)建成功的可執(zhí)行文件拷貝到目的主機(jī)。

由于一切都是基于docker,所以完全可以定制自己不同的鏡像用來實(shí)現(xiàn)不同的場景。尤其是提供了service這個(gè)功能。可以提供一些mysql等service,可以在測試階段發(fā)揮作用。由于我最近一直在做golang的項(xiàng)目,有一個(gè)場景大概所有的gopher都有這個(gè)問題,那就是go的包管理工具太多了,dep,godep,glide等,最好的實(shí)現(xiàn)就是提供一些多帶帶安裝了某種工具的go基礎(chǔ)鏡像,在具體的項(xiàng)目選擇不同的鏡像即可。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/32609.html

相關(guān)文章

  • k8sCICD--drone簡介部署

    摘要:是的最佳實(shí)踐部署編寫文件的部署及其簡單,采用的方式,類似于。具體如下此處需要注意的是在處的。登錄配置項(xiàng)目此處輸入的用戶名和密碼是的。支持和兩個(gè)數(shù)據(jù)庫。新的配置文件如下仔細(xì)查看關(guān)于的文檔,需要我們手動(dòng)創(chuàng)建數(shù)據(jù)庫。其中有和相關(guān)的。 前言 整個(gè)基于k8s的pass平臺(tái),關(guān)鍵的一部分就是CICD。CICD又是devops的關(guān)鍵部分。之前主流的工具是Jenkins。今天主要介紹的是drone。...

    fxp 評(píng)論0 收藏0
  • k8sUI--scope簡介部署

    摘要:簡介是公司開源的用于監(jiān)控,可視化,管理集群的一個(gè)類似于的系統(tǒng)。另外一個(gè)是插件,該插件用來控制容器的流量。在官方不支持流控之前,也是一個(gè)不侵入的選擇。由于沒有提供登錄認(rèn)證的功能。通過將暴露,內(nèi)網(wǎng)可以訪問。 scope簡介 scope 是 weave公司開源的用于監(jiān)控,可視化,管理kubernetes集群的一個(gè)類似于dashbord的UI系統(tǒng)。有一下四大特點(diǎn): 實(shí)時(shí)了解你的docker容...

    Anleb 評(píng)論0 收藏0
  • k8sUI--scope簡介部署

    摘要:簡介是公司開源的用于監(jiān)控,可視化,管理集群的一個(gè)類似于的系統(tǒng)。另外一個(gè)是插件,該插件用來控制容器的流量。在官方不支持流控之前,也是一個(gè)不侵入的選擇。由于沒有提供登錄認(rèn)證的功能。通過將暴露,內(nèi)網(wǎng)可以訪問。 scope簡介 scope 是 weave公司開源的用于監(jiān)控,可視化,管理kubernetes集群的一個(gè)類似于dashbord的UI系統(tǒng)。有一下四大特點(diǎn): 實(shí)時(shí)了解你的docker容...

    jzzlee 評(píng)論0 收藏0
  • k8sCICD--借助scp插件實(shí)現(xiàn)非容器項(xiàng)目的部署

    摘要:插件實(shí)現(xiàn)了一半,由于企業(yè)微信申請比較麻煩,所以也沒有進(jìn)展。今天抽出時(shí)間,研究了一下插件,主要目的是實(shí)現(xiàn)非容器項(xiàng)目的部署。其實(shí)就是借助插件,將構(gòu)建好的項(xiàng)目可執(zhí)行文件和配置文件發(fā)布到指定主機(jī)上。直接上文件插件基于實(shí)現(xiàn)。完成新項(xiàng)目的部署。 前言 最近連續(xù)996加班,一直沒有時(shí)間完成drone系列文章。drone-wechat插件實(shí)現(xiàn)了一半,由于企業(yè)微信token申請比較麻煩,所以也沒有進(jìn)展。...

    Half 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

qujian

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<