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

2021-06-21 10:05:02 +08:00
 jackleeforce3615

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

4907 次点击
所在节点    程序员
32 条回复
ghwolf007
2021-06-21 11:31:05 +08:00
内网完全物理隔离的情况我碰到过,之前用过搭 gitlab 的方式 很操蛋,后面转 k8s+helm 了, 镜像导出导入,helm install 一把梭
robinlovemaggie
2021-06-21 13:17:51 +08:00
邮寄硬盘——简单粗暴无脑解决私有化部署各种的弊端
miao1007
2021-06-21 13:31:16 +08:00
内外网应该有 dmz 才对啊
qizhca
2021-06-21 15:38:28 +08:00
如果是国电那种一区二区的内网,好像没有物理接触去部署以外更好的解决方案
lework1234
2021-06-21 17:16:39 +08:00
docker-compose 一把梭
Rush9999
2021-06-21 18:07:17 +08:00
docker export -o *.tar CONTAINER
liuxu
2021-06-21 21:48:50 +08:00
@bthulu 你不是楼主,是在给谁设置限制
lfzyx
2021-06-21 22:38:32 +08:00
招个 devops 运维工程师能解决
adoal
2021-06-21 23:31:02 +08:00
需方内外网严格隔离、需方外包给外面单位开发而不是养自研团队、CI/CD,这三项不能流畅地兼顾,至少要放弃一项
julyclyde
2021-06-22 13:52:34 +08:00
用反弹的
saltsstack 、gitlab-runner 之类的
wengych
2021-06-22 14:46:53 +08:00
@adoal 定期邮寄光盘吧
jackleeforce3615
2021-06-23 23:19:33 +08:00
大家都给了很好的思路,感谢!
实际上我们这个产品刚开发完毕,还没有客户来当小白鼠。以后可能各种网络情况的客户都会碰到吧。

根据大家的回复,我整理了一下思路:
如果是客户可以访问外网的:

1.外网部署一个 gitlab + docker-registry( artifactory )
2.公司内网 gitlab 的项目与外网 gitlab 做成 mirror 。
3.内网代码提交触发 CI 制作镜像, 并推到外网的 docker-registry 上,同时触发外网 gitlab mirror 项目的 CI, 这个 CI 在客户侧的 gitlab runner 上面执行,拉取镜像下来部署。

如果客户不可以访问外网。估计只能导出容器或者镜像到客户侧部署了吧。 这是最操蛋也是最无奈的做法。

不过考虑到我们这个产品不止有我们自创的镜像,还依赖一些公共服务镜像,如 redis,postgresql,traefik 等等,估计得逼客户开放外网。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/784729

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX