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

11 天前
 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 即可。

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

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

欢迎大家畅所欲言

4587 次点击
所在节点    Go 编程语言
54 条回复
pkoukk
11 天前
@enchilada2020 学会怎么用顶多就是个把星期的事
cdlnls
11 天前
简单的项目直接 systemd
中等项目 有条件的用 k8s
复杂的项目,在不适合 k8s 的情况下继续用 systemd 。
haiku
11 天前
Systemd/docker compose/k8s
changepll
11 天前
至少 6 年前,直接编译成可执行文件。 还觉得挺高端的。
Int100
11 天前
选择 k8s

自从会了 k8s ,啥都往里面丢,方便的不行
Int100
11 天前
@enchilada2020 #17

> 佬们都是专业运维吗…后端开发也要操心 k8s 之类的东西吗

不是,就单纯好玩,跟玩具一样,每天睡觉前折腾几下
FightPig
10 天前
小项目直接编译后丢上去,更新的话覆盖重启。大一些的,docker
Judoon
10 天前
你这个属于部署方式,和 go 语言有什么关系。任何语言写的程序基本都能用你说的两种方式来部署
caola
10 天前
一部分用 systemd ,一部分用 docker compose
mshadow
10 天前
有 k8s 的上 k8s 。自己玩儿的小项目,ci 自动 build docker 镜像,然后 WatchTower 检测镜像更新了自动更新容器
qloog
10 天前
@mshadow WatchTower 听起来不错,可以试试
kneo
10 天前
怎么部署是根据业务需求来的。Go 的部署已经很简单了,刻意学太多姿势没必要。
Hellert
10 天前
windows 下 winsw
linux 下 systemd
zhenjiachen
10 天前
k8s 我们用 helm ,自己写了个 chart ,回滚直接 helm rollback
viger
10 天前
小项目,目前 ngx proxy + docker + shell 自动部署。
version
10 天前
dockerfile 源码编译 最终镜像只丢二进制文件 tag 打上版本...ssh 推到远程服务.重启 dc
任何项目都是.复制下 gitlab-ci 设置改下 cidc 变量.
而且上服务器.可以查看运行 docker 镜像版本.方便知道啥时候写的 bug
以上适合个人项目..外包项目.小型项目

如果上 k8s 也不用你自己搭建.运维负责.你推代码就是了..
baijiahei
10 天前
@pol pm2
billzhuang
10 天前
hpa 并不能动态扩容,还要看你的 node 怎么动态扩容。
testcgd
10 天前
大项目打容器丢到 k8s ,小项目直接 docker 拉起就好
B1acKy1in
10 天前
@Int100 感觉 k8s 的维护太麻烦了。好奇存储后端选择的什么

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

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

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

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

© 2021 V2EX