日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

通過CI ci設(shè)計案例( 二 )


在輸出的信息下面有一個網(wǎng)址 http://localhost:32768
我們打開網(wǎng)址:

通過CI ci設(shè)計案例


環(huán)境在swarm中運(yùn)行docker
在這里我們用swarm來管理docker 。而不是用K8s , swarm稍微簡單些 ,  也便于大家通過這篇文章來自己實(shí)現(xiàn)CI/CD 。
讓應(yīng)用程序運(yùn)行在docker中
docker compose 如下
version: "3.7"services:www:image: registry.gitlab.com/lucj/sophia.eventsnetworks:- proxydeploy:mode: replicatedreplicas: 2update_config:parallelism: 1delay: 10srestart_policy:condition: on-failurenetworks:proxy:external: true
簡單說明:
· image被放在了gitlab.com私有倉庫中
· 服務(wù)處于具有兩個副本的復(fù)制模式 , 這意味著服務(wù)的兩個任務(wù)/容器同時運(yùn)行 。VIP(虛擬IP地址)通過集群與服務(wù)相關(guān)聯(lián) , 因此每個針對服務(wù)的請求都在兩個副本之間實(shí)現(xiàn)負(fù)載平衡 。
· 每次更新服務(wù)(部署web站點(diǎn)的新版本)時 , 更新一個副本 , 10秒后更新第二個副本 。這確保在更新過程中web站點(diǎn)仍然可用 。我們也可以使用回滾策略 , 但是現(xiàn)在還不需要 。
· 該服務(wù)附加到外部代理網(wǎng)絡(luò) , 因此TLS終端(運(yùn)行于部署在集群上的另一個服務(wù)中 , 但不在此項(xiàng)目中)可以向www服務(wù)發(fā)送請求 。
我們通過如下命令運(yùn)行docker服務(wù):
docker stack deploy -c sophia.yml sophia_events
Docker管理平臺portainer.io
Portainer平臺有一個很棒的web UI界面 , 它允許用戶非常容易地管理Docker主機(jī)和Docker集群 。下面是Portainer界面的截圖 , 它列出了集群中可用的應(yīng)用 。
通過CI ci設(shè)計案例


我們看到有三個實(shí)例
· portainer自己
· Sophia_events
· TLS
下面列出位于Sophia_events中的www服務(wù)的詳細(xì)信息 , 我們可以看到服務(wù)webhook已被激活 。自從Portainer 1.19.2(到目前為止的最后一個版本)以來 , 這個特性就可用了 , 它允許我們定義一個HTTP Post端點(diǎn) , 可以調(diào)用它來觸發(fā)服務(wù)的更新 。稍后我們將看到 , GitLab運(yùn)行器負(fù)責(zé)調(diào)用這個webhook 。
通過CI ci設(shè)計案例


注意:從屏幕截圖中可以看到 , 我從localhost:8888訪問Portainer UI 。由于我不想將Portainer實(shí)例暴露給外部世界 , 所以通過ssh隧道進(jìn)行訪問 , 使用以下命令打開ssh隧道:
ssh -i ~/.docker/machine/machines/labs/id_rsa -NL 8888:localhost:9000 $USER@$HOST
然后 , 所有針對端口8888上的本地機(jī)器的請求都通過ssh發(fā)送到虛擬機(jī)上的端口9000 。9000是Portainer在VM上運(yùn)行的端口 , 但是這個端口不對外開放 , 所以是相對安全的 。
注意:在上面的命令中 , 用于連接VM的ssh密鑰是Docker機(jī)器在創(chuàng)建VM期間生成的密鑰 。
Gitlab runnerGitLab runner 是一個負(fù)責(zé)執(zhí)行. GitLab –ci.yml 文件的驅(qū)動  , 當(dāng)代碼被push到主分支的時候 , 會自動執(zhí)行預(yù)先寫好的腳本 , 從而實(shí)現(xiàn)自動化 。對于這個項(xiàng)目 , 我們將自己的GitLab runner定義為VM上的docker服務(wù) 。
下面是配置腳本:
docker run — rm -t -i \-v $CONFIG_FOLDER:/etc/gitlab-runner \gitlab/gitlab-runner register \--non-interactive \--executor "docker" \--docker-image docker:stable \--url "" \--registration-token "$PROJECT_TOKEN" \--description "Exoscale Docker Runner" \--tag-list "docker" \--run-untagged \--locked="false" \--docker-privileged
可以使用PROJECT_TOKEN在gitlab上注冊額外的runners

推薦閱讀