21

采用 CI/CD 方式部署的服务,如何私有化部署到客户内网

 3 years ago
source link: https://www.v2ex.com/t/784729
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

V2EX  ›  程序员

采用 CI/CD 方式部署的服务,如何私有化部署到客户内网

  jackleeforce3615 · 17 小时 12 分钟前 · 2143 次点击

我们有一个产品采用脚手架 full-stack-fastapi-postgresql 开发,在内部部署的时候都是用 gitlab + gitlab runner + docker swarm 部署。现在有需求要部署到客户内网,一下子傻眼了,难道要在客户内容搭建一套 gitlab ci 环境 然后把代码推送到客户的gitlab 来进行部署么?

29 条回复    2021-06-21 23:31:02 +08:00

zlink

zlink   17 小时 9 分钟前

youyi1996

youyi1996   17 小时 7 分钟前

都上 docker 了为啥不导出镜像拷贝到客户那边?

killva4624

killva4624   17 小时 4 分钟前

- 客户端内网服务器如果可以连接外网,可以考虑做一套或者找现成的轮子,实现自动轮询最新配置+自动变更(比如 Azure IoT );

killva4624

killva4624   17 小时 3 分钟前

- 如果客户端不能连接外网,那就找客户要一个连接外网的内网的服务器做中转,从这个服务器上连接 CI 和客户内网的部署环节,比如 Rundeck

Actrace

Actrace   16 小时 57 分钟前

@killva4624 😂,有点腿裤子放屁的感觉。

liuxu

liuxu   16 小时 56 分钟前

不用,这个方案我搞过,gitlab runner 有个 shell 模式,runner 在服务器内网安装,原理其实是 runner 定时每秒请求 gitlab 获取 event 执行 ci,只要内网有机器能访问到 gitlab 就行

wengych

wengych   16 小时 55 分钟前

@liuxu 还要依赖于 registry...

jackleeforce3615

jackleeforce3615   16 小时 49 分钟前

@zlink 这个估计悬,可能还得升级公司基础设施( VPN 网速不够)

@youyi1996 感谢回复,这样镜像导出来好像没办法用 `docker swarm` 部署。

@killva4624 感谢回复,你说的这两个方案 我消化理解一下。

jackleeforce3615

jackleeforce3615   16 小时 47 分钟前

@wengych 是 我们内网部署的时候有一台 `artifactory `,`gitlab-ci.yaml` 里面执行脚本把镜像 push 到 `artifactory`上面。然后执行 docker-swarm 命令拉取镜像部署。 现在看来感觉这个 registry 要放到外网。

jackleeforce3615

jackleeforce3615   16 小时 45 分钟前

@liuxu 你的意思是在客户内网安装 `runner`, 只要客户内网 `runner ` 可以访问到我公司的 `gitlab` 就可以是把?

jackleeforce3615

jackleeforce3615   16 小时 45 分钟前

回复怎么不能支持 markdown .

securityCoding

securityCoding   16 小时 35 分钟前

我们上了 k8s+helm ,helm 防火墙开放白名单
流程标准化后没那么累

defunct9

defunct9   16 小时 23 分钟前

开 ssh,让我上去看看。(刚弄完一套 gitlab + 2 处 git + harbor + argocd,网络一样复杂,穿越了 3 个机房)

pelloz

pelloz   16 小时 23 分钟前

我问一下,客户服务器没有 k8s 或者 docker 的环境,也没有相应的运维资源去支持,你们都是怎么解决私有化部署的?

bthulu

bthulu   16 小时 17 分钟前

@liuxu 内网是不能访问外网的, 根本就连不到 gitlab

lychs1998

lychs1998   16 小时 15 分钟前

runner 在内网就行了,runner 开权限连 gitlab 就 OK 。runner 就是实际打包的机器。

镜像要不要推送到镜像仓库看你们需求。

killva4624

killva4624   16 小时 10 分钟前

@Actrace 去年刚做过一个类似的场景,国内某大型企业,内网准入极其苛刻,前期研发手动 VPN 变更,后期为了大规模部署真是绞尽脑汁……

ljhrot

ljhrot   16 小时 1 分钟前

建议放弃在内网折腾 CI/CD 的想法,大规模服务可以尝试使用 ansible 部署,就是包括基础环境和服务应用,做稳定版本的部署和升级就行了

wengych

wengych   15 小时 58 分钟前   ❤️ 1

代码交付还是二进制交付,代码交付可以做 repo mirror,然后客户方面内网部署一套独立的 gitlab 和 cicd
如果是二进制交付,做一个白名单入口把 repository 开放给客户,客户主机可以用 puppet/ansible 之类的工具做配置管理。

ghwolf007

ghwolf007   15 小时 46 分钟前

内网完全物理隔离的情况我碰到过,之前用过搭 gitlab 的方式 很操蛋,后面转 k8s+helm 了, 镜像导出导入,helm install 一把梭

robinlovemaggie

robinlovemaggie   13 小时 59 分钟前

邮寄硬盘——简单粗暴无脑解决私有化部署各种的弊端

miao1007

miao1007   13 小时 46 分钟前 via iPhone

内外网应该有 dmz 才对啊

qizhca

qizhca   11 小时 39 分钟前

如果是国电那种一区二区的内网,好像没有物理接触去部署以外更好的解决方案

lework1234

lework1234   10 小时 1 分钟前

docker-compose 一把梭

Rush9999

Rush9999   9 小时 10 分钟前

docker export -o *.tar CONTAINER

liuxu

liuxu   5 小时 28 分钟前

@bthulu 你不是楼主,是在给谁设置限制

lfzyx

lfzyx   4 小时 39 分钟前

招个 devops 运维工程师能解决

adoal

adoal   3 小时 46 分钟前 via iPhone

需方内外网严格隔离、需方外包给外面单位开发而不是养自研团队、CI/CD,这三项不能流畅地兼顾,至少要放弃一项

Recommend

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK