摘要:第一部分的內(nèi)容介紹了如何部署配置和確保在的運(yùn)行。這一部分中,我們將介紹如何使用構(gòu)建容器,以及如何使用容器配置項(xiàng)目。除此之外,我們還將涉及如何用建立容器并部署到上。
這是我們使用GitLab和Rancher構(gòu)建CI/CD流水線系列教程的第二部分。第一部分的內(nèi)容介紹了如何部署、配置和確保GitLab在Rancher的運(yùn)行。這一部分中,我們將介紹如何使用GitLab CI Multi-Runner構(gòu)建容器,以及如何使用GitLab容器registry配置項(xiàng)目。除此之外,我們還將涉及如何用GitLab CI建立容器并部署到Rancher上。
使用GitLab CI Multi-Runner構(gòu)建容器GitLab CI是用于持續(xù)集成和持續(xù)交付的強(qiáng)大工具。它需要和Rancher配合使用,這里我們將部署一個(gè)執(zhí)行作業(yè)的runner。
運(yùn)行Runner部署runner有好幾種方式,不過考慮到我們的目的是要從自己的存儲(chǔ)庫中建立容器,我們將運(yùn)行一個(gè)可以直接訪問/var/run/docker.sock的Docker容器,來構(gòu)建和自身同步的鏡像。
1.在Rancher中,向你的Gitlab棧添加一個(gè)服務(wù)。
2.使用以下配置進(jìn)行設(shè)置:
Name: runner01
Image: gitlab/gitlab-runner
Console: None
Volumes:
/var/run/docker.sock:/var/run/docker.sock
runner01-etc:/etc/gitlab-runner
容器運(yùn)行時(shí),它將在/etc/gitlab-runner中創(chuàng)建一個(gè)默認(rèn)配置,該配置對(duì)應(yīng)我們已經(jīng)建立連接的卷。接下來,用你的Gitlab實(shí)例注冊(cè)runner。
下面操作中,我設(shè)置的配置適用于基本的runner,它可以搭建任意作業(yè)。你還可以將runner限制在指定的存儲(chǔ)庫中或是使用其他的鏡像。這里你可以閱讀GitLab的文檔來了解是最適合你的環(huán)境的選項(xiàng)。
配置Runner1.在容器中執(zhí)行shell
2.運(yùn)行g(shù)itlab-ci-multi-runner register開始注冊(cè)
3.按照提示信息輸入,參考下列示例(答案是粗體字)
root@4bd974b1c799:/# gitlab-ci-multi-runner register
Running in system-mode.
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
https://git.example.com
Please enter the gitlab-ci token for this runner:
DGQ-J7n0tR33LXB3z_
Please enter the gitlab-ci description for this runner:
4bd974b1c799]: runner01
Please enter the gitlab-ci tags for this runner (comma separated):
Whether to lock Runner to current project [true/false]:
false]:
Registering runner… succeeded runner=DGQ-J7dD
Please enter the executor: docker, parallels, ssh, docker-ssh+machine, kubernetes, docker-ssh, shell, virtualbox, docker+machine:
docker
Please enter the default Docker image (e.g. ruby:2.1):
docker:stable
Runner registered successfully.
放手去執(zhí)行它們吧,如果runner已經(jīng)運(yùn)行,那么配置會(huì)自動(dòng)地就重新加載。這里要著重注意的是:
輸入你的Gitlab實(shí)例的URL
輸入runner令牌(在Admin / Runners中找到)
給runner起一個(gè)可被識(shí)別的名字
選擇runner的docker類型
選擇docker:stable容器鏡像
在初始的注冊(cè)完成后,我們需要編輯/etc/gitlab-runner/config.tom并作出調(diào)整:
volumes = [“/var/run/docker.sock:/var/run/docker.sock”, “/cache”]
這樣在容器中裝載/var/run/docker.sock,使得構(gòu)建的容器保存在主機(jī)本身的鏡像存儲(chǔ)中。這是一個(gè)比Docker更好的方法。
config.toml的修改是由Runner自動(dòng)執(zhí)行的,因此無需重新啟動(dòng)。
你可以在Admin/Runners下看到你的runner并與之交互。
使用容器鏡像倉庫配置項(xiàng)目GitLab的容器鏡像倉庫直接和存儲(chǔ)庫綁定,因此無法將容器轉(zhuǎn)移到任何其他位置。如果你在docker組中有一個(gè)名為demo-pho的存儲(chǔ)庫,那么鏡像的路徑就是registry.example.com/docker/demo-php ,其中的標(biāo)簽是根據(jù)你如何用GitLab CI創(chuàng)建容器而定義的。
在本教程的余下部分,我將使用一個(gè)存儲(chǔ)庫,該存儲(chǔ)庫的內(nèi)容可以在github中找到。需要執(zhí)行以下內(nèi)容才能在你的GitLab環(huán)境中啟動(dòng)它:
在GitLab中創(chuàng)建一個(gè)項(xiàng)目。在本教程中,我給它命名為example/demo(工作組是example,項(xiàng)目是demo)
克隆并修改rancher-gitlab-demo存儲(chǔ)庫
$ git clone https://github.com/oskapt/ran... demo
$ cd demo
$ git remote set-url origin ssh://git@git.example.com:2222/example/demo.git
$ git push -u origin master
該文件如下所示:
variables: REGISTRY_HOST: registry.example.com TEST_IMAGE: $REGISTRY_HOST/$CI_PROJECT_PATH:$CI_BUILD_REF_NAME RELEASE_IMAGE: $REGISTRY_HOST/$CI_PROJECT_PATH:latest stages: - build - release before_script: - docker info - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $REGISTRY_HOST build: stage: build script: - docker build --pull -t $TEST_IMAGE . - docker push $TEST_IMAGE release: stage: release script: - docker pull $TEST_IMAGE - docker tag $TEST_IMAGE $RELEASE_IMAGE - docker push $RELEASE_IMAGE only: - master push_to_docker_hub: # in order for this to work you will need to set # `HUB_USERNAME` and `HUB_PASSWORD` as CI variables # in the Gitlab project stage: release variables: DOCKER_IMAGE: $HUB_USERNAME/$CI_PROJECT_NAME:latest script: - docker login -u $HUB_USERNAME -p $HUB_PASSWORD - docker tag $RELEASE_IMAGE $DOCKER_IMAGE - docker push $DOCKER_IMAGE only: - master when: manual
我設(shè)計(jì)的這個(gè)CI文件可以在多個(gè)基本的Docker項(xiàng)目中使用而無需任何修改。在將變量部分的項(xiàng)目設(shè)置為你想要的數(shù)值后,文件的其余部分就能適用于任何項(xiàng)目。
這里有兩個(gè)階段——構(gòu)建和發(fā)布。GitLab有自己的token,可令自己登錄到自己的鏡像倉庫,該操作在before_script部分執(zhí)行。接下來它在構(gòu)建階段執(zhí)行腳本命令,構(gòu)建容器并使用TEST_IMAGE變量中指定的格式標(biāo)記容器。這樣獲得一個(gè)有分支名稱的容器,就像我們的develop分支這樣:
registry.example.com/example/demo:develop
接下來會(huì)推送容器信息進(jìn)鏡像倉庫中。
如果是master分支,它會(huì)執(zhí)行所有這些步驟,并且在發(fā)布階段,它在加進(jìn)鏡像倉庫前會(huì)繼續(xù)使用latest標(biāo)記鏡像。這樣你會(huì)得到一個(gè)同時(shí)標(biāo)記了master和lastest的容器。其中l(wèi)astest是默認(rèn)的標(biāo)簽名,你可以在不指定標(biāo)簽名的情況下獲取它。
最后,master分支有一個(gè)可供使用的手動(dòng)選項(xiàng),可將容器推送至Docker Hub。若要實(shí)現(xiàn)這一步,首先需要在GitLab項(xiàng)目中的Settings | CI/CD Pipelines | Secret Variables下設(shè)置HUB_USERNAME和HUB_PASSWORD。GitLab CI將根據(jù)DOCKER_IMAGE的值重新標(biāo)記master鏡像,接著將其推送至Docker Hub。因?yàn)槲覀円呀?jīng)指定了when下的manual,GitLab不會(huì)自動(dòng)執(zhí)行,那么就必須從GitLab手動(dòng)執(zhí)行此階段。
通過GitLab CI搭建容器在develop分支,你可以提交這些更改并將其推送到你的GitLab項(xiàng)目。如果一切都正常運(yùn)行,你就可以在項(xiàng)目的pipelines標(biāo)簽下看到pipeline啟動(dòng)。你可以選擇status圖標(biāo)來查看該階段下的詳細(xì)進(jìn)度日志。
如果出現(xiàn)了任何錯(cuò)誤,GitLab CI將報(bào)告pipeline失敗,你可以查看日志了解原因。當(dāng)解決了問題并推送新的提交時(shí),GitLab CI將啟動(dòng)新的pipeline。如果錯(cuò)誤是暫時(shí)的(如無法連接到Docker Hub),你可以再次運(yùn)行該階段的pipeline。
如果只想從現(xiàn)有的代碼運(yùn)行pipeline,你可以單擊Run Pipeline并選擇要構(gòu)建的分支。
當(dāng)一切都完成之后,管道會(huì)顯示Passed,你可以在GitLab項(xiàng)目的Registry標(biāo)簽下看到你的容器。
創(chuàng)建部署用戶在使用鏡像倉庫之前,你需要將部署用戶添加到Rancher。我建議你在你想要部署的項(xiàng)目上創(chuàng)建一個(gè)具有Reporter權(quán)限的deploy用戶,而不要使用你的管理員賬戶。
單擊右上角的扳手圖標(biāo)進(jìn)入管理區(qū)域
單擊中間列下端的New User按鈕
創(chuàng)建一個(gè)名為deploy的用戶
在Access下則說明該用戶是External的。這將給用戶提供GitLab中的限制訪問。
單擊Create User,進(jìn)入?yún)R總界面
GitLab默認(rèn)會(huì)為用戶發(fā)送登錄電子郵件,因此我們需要編輯用戶并設(shè)置密碼。
在匯總界面上,單擊右上角的Edit
為用戶設(shè)置密碼,接著單擊Save Changes
在GitLab導(dǎo)航到你的項(xiàng)目,單擊Settings后點(diǎn)擊Members
在搜索欄鍵入deploy并選擇deploy用戶
給用戶Reporter權(quán)限
點(diǎn)擊Add to project保存更改
現(xiàn)在,deploy用戶有權(quán)從你的項(xiàng)目的容器注冊(cè)表訪問容器。
部署容器到Rancher我們到目前為止的所有步驟都是為了這一步——從你的私有鏡像倉庫中獲取容器并將它部署到Rancher上。我們需要做的最后一件事是添加鏡像倉庫,然后做一個(gè)新的棧和服務(wù)。
在Rancher中,單擊Infrastructure并選擇Registries
單擊Add Registry
選擇Custom
輸入你的注冊(cè)表URl(例如example.com)
輸入你的部署用戶的用戶名和密碼
單機(jī)Create
把鏡像倉庫添加到Rancher之后,你已經(jīng)可以從這些鏡像中創(chuàng)建服務(wù)了。
1.創(chuàng)建一個(gè)名為demo的棧
2.添加一個(gè)服務(wù),名字由你決定。讓鏡像使用你新的容器鏡像中的develop標(biāo)簽
example.com/example/demo:develop
3.點(diǎn)擊Create
恭喜你!你剛剛已經(jīng)用私有容器鏡像倉庫部署了項(xiàng)目的開發(fā)版本!
從這里開始可以做什么這是一個(gè)漫長(zhǎng)的教程,但當(dāng)所有的重要步驟完成后,你可以使用已經(jīng)安裝好的工具開始工作了。從現(xiàn)在開始你可以做這些事情:
為你其他的項(xiàng)目設(shè)置工作組。對(duì)于將要包含的項(xiàng)目,可以使用邏輯集合,像docker或者websites一樣。
將其他項(xiàng)目導(dǎo)入GitLab
設(shè)置GitLab CI來構(gòu)建容器
修改master分支,融合develop分支,引入.gitlab-ci.yml,然后將其推送至GitLab。更新Rancher以獲取lastest鏡像標(biāo)簽。
將HUB_USERNAME和HUB_PASSWORD添加到項(xiàng)目中,然后手動(dòng)將你的鏡像推送至Docker Hub
9月27日,北京海航萬豪酒店,容器技術(shù)大會(huì)Container Day 2017即將舉行。
CloudStack之父、海航科技技術(shù)總監(jiān)、華為PaaS部門部長(zhǎng)、恒豐銀行科技部總經(jīng)理、阿里云PaaS工程總監(jiān)、民生保險(xiǎn)CIO······均已加入豪華講師套餐!
11家已容器落地企業(yè),15位真·云計(jì)算大咖,13場(chǎng)純·技術(shù)演講,結(jié)合實(shí)戰(zhàn)場(chǎng)景,聚焦落地經(jīng)驗(yàn)。免費(fèi)參會(huì)+超高規(guī)格,詳細(xì)議程及注冊(cè)鏈接請(qǐng)戳
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/26981.html
摘要:主機(jī)端口非常昂貴,因此稍后我們會(huì)使用一個(gè)負(fù)載均衡器。注冊(cè)完成后,將的配置添加到負(fù)載均衡器上。部署負(fù)載均衡器在棧中,單擊添加服務(wù)旁邊的下拉菜單,然后選擇添加負(fù)載均衡器。如果你收到狀態(tài)或的錯(cuò)誤報(bào)告,那么需要檢查負(fù)載均衡器配置,確認(rèn)設(shè)置無誤。 介紹 GitLab核心是集成管理Git存儲(chǔ)庫的工具。比如你希望創(chuàng)建一個(gè)提供服務(wù)的平臺(tái),那么GitLab將提供強(qiáng)大的身份驗(yàn)證和授權(quán)機(jī)制、工作組、問題跟蹤...
摘要:從開始,部署管理的集群時(shí),默認(rèn)情況下會(huì)啟用授權(quán)群集端點(diǎn)功能。我們將首先在中創(chuàng)建一個(gè)新項(xiàng)目,該項(xiàng)目將使用功能與我們的集群集成。完成后單擊創(chuàng)建項(xiàng)目。這不僅意味著已被設(shè)為默認(rèn)值,還能夠觸發(fā)構(gòu)建。例如,負(fù)載均衡選項(xiàng)卡顯示已部署的以及創(chuàng)建的主機(jī)名。 介 紹 在這篇文章中,我們將介紹如何將GitLab的Auto DevOps功能與Rancher管理的Kubernetes集群連接起來,利用Ranch...
摘要:來自硅谷的企業(yè)級(jí)容器管理平臺(tái)提供商今日正式發(fā)布與企業(yè)級(jí)容器管理平臺(tái)集成的,極簡(jiǎn)的操作體驗(yàn),強(qiáng)大的功能整合,完全開源,助力在企業(yè)的真正落地使用。 來自硅谷的企業(yè)級(jí)容器管理平臺(tái)提供商Rancher Labs今日正式發(fā)布與Rancher企業(yè)級(jí)容器管理平臺(tái)集成的Rancher Pipeline,極簡(jiǎn)的操作體驗(yàn),強(qiáng)大的功能整合,完全開源,助力CI/CD在企業(yè)的真正落地使用。 云計(jì)算技術(shù)的廣泛采用...
摘要:本文作者為的架構(gòu)師,他分享了使用和建立超高速流水線的經(jīng)驗(yàn)。月日,北京海航萬豪酒店,容器技術(shù)大會(huì)即將舉行。 Higher Education(highereducation.com)是一個(gè)連接學(xué)生與高校的入學(xué)申請(qǐng)平臺(tái),通過引入高意圖和高質(zhì)量的潛在學(xué)生,以及明確、有效的操作,為網(wǎng)站合作的大學(xué)吸引學(xué)生入學(xué)。每年Higher Education為其大學(xué)合作伙伴招收超過15000名在線學(xué)生入學(xué)申...
摘要:內(nèi)部長(zhǎng)期使用來管理代碼。審核通過并且成功后,觸發(fā)靜態(tài)測(cè)試單元測(cè)試鏡像構(gòu)建鏡像部署集成測(cè)試等測(cè)試通過后,創(chuàng)建一個(gè)從到的,由負(fù)責(zé)人進(jìn)行審核。從圖中我們可以看到,部分是一個(gè)單元測(cè)試,預(yù)發(fā)布部署,集成測(cè)試,,提交代碼的循環(huán)過程。UCloud內(nèi)部長(zhǎng)期使用 Gitlab 來管理代碼。雖然Gitlab作為一套開源平臺(tái)已很優(yōu)秀,但我們對(duì)于其能為CI/CD提供的敏捷性并不十分滿意,內(nèi)部實(shí)踐中的代碼發(fā)布周期仍需...
閱讀 1816·2019-08-30 15:55
閱讀 1007·2019-08-26 11:57
閱讀 509·2019-08-26 11:29
閱讀 3358·2019-08-26 10:49
閱讀 1910·2019-08-23 18:40
閱讀 1749·2019-08-23 16:04
閱讀 3104·2019-08-23 11:01
閱讀 2271·2019-08-23 10:56