大家线上的 Go 服务都是如何部署的?

13 天前
 qloog

RT, Go 服务如何部署到线上环境,包括如何发布、回滚。

我先说说我知道的

前提:会对 go 应用进行打 tag

方案一:

1 、把 go 应用要上线的 release tag 打包成 docker 镜像 2 、然后在 k8s 进行部署, 回滚的话直接回滚到上一个 tag 3 、域名直接解析到 k8s 的 ingress 解析到对应的 service 中,服务也可以 HPA 动态扩容

方案二:

1 、直接把 go 的二进制文件+配置文件 放到对应的线上的机器上,如果是多台就部署到多台服务器 2 、前面加一层 nginx ,然后通过 proxy_pass + upstream 解析到对应的 go 服务器上 3 、域名直接解析到 nginx 即可。

想知道除了这两种方式,还有什么方式?

相比而言,你认为哪种方式更好?

欢迎大家畅所欲言

4676 次点击
所在节点    Go 编程语言
55 条回复
dzdh
12 天前
搭车问问,除了 k8s rollingupdate 和 systemd 的 socket 继承外还有什么“简单”的不停机部署呢?
crackidz
12 天前
1. systemd/supervisord -> https://github.com/pioz/god
2. Docker Container -> Nomad
3. K8s
julyclyde
12 天前
@pol 因为你把 ps 错写为 pe 了所以找不到吧?
huihuimoe
12 天前
@dzdh docker compose 就可以做
https://github.com/Wowu/docker-rollout
Int100
12 天前
@B1acKy1in 存储用的 longhorn
Hopetree
12 天前
虚拟化的话,至少要用 systemd 管理吧,或者 supervisord 也行,这样才能做到服务随系统开机启动,也可以快速实现 start|stop|restart|status ,如果只是手动启动的话,重启虚拟机还要重新去启动一次,上容器那就无所谓了,Nginx+容器也行,企业的话有 k8s 上 k8s
SparrowHe1
12 天前
zhhmax
12 天前
systemctl start
Dogtler
11 天前
k8s, 1 ,自动化推送编译打包替换 tag 拉取更新
Dogtler
11 天前
@Int100 同感,自从踏上云原生这个坑 后面就回不去 本地手动编译 FTP 上传 SSH 手动运行的方式。
zjyl1994
11 天前
公司有 ci/cd ,k8s 容器化部署。自己 vps 内存小装不了这些,systemd 直接启动程序基本够用。
treblex
10 天前
@pol #1 直接运行的话,go 有一些自己的优雅重启的方案 https://github.com/air-verse/air
fingerstyle
10 天前
方案一。对比 java 服务简直爽飞
windcode
7 天前
我维护的这个开源项目 Live Demo ( https://karpor-demo.kusionstack.io/)是部署在 ECS 中的 k3s 中,用 Helm 一键安装,后面打算 IaC 化后用 Kusion+Github Action 借助 GitOps 方式快速运维。
whyso
1 天前
Xshell Xftp

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

https://www.v2ex.com/t/1051562

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

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

© 2021 V2EX