关于前端工程化与 K8S 结合的一些疑问

2021-08-31 00:48:57 +08:00
 sekfung

目前所有静态资源除了 html 已上传到 OSS,并做了 CDN,有个疑问:如何去访问 HTML 文件

  1. 反向代理通过 NFS 访问
  2. 前端容器启动一个 node server, 反向代理通过 http 访问

两个本质上还是远程访问的形式,或者有没有其他更好的方式

4012 次点击
所在节点    程序员
30 条回复
arischow
2021-08-31 09:26:02 +08:00
nginx + s3fs pod

实际发布是 s3 copy

实际对外访问是通过 CDN
liaoberlin
2021-08-31 09:35:02 +08:00
前端静态资源部署没必要上 k8s 的,应该打包完之后直接丢到静态资源服务器上(一台 /集群)且不缓存,然后再一份上传到 OSS, 然后域名访问静态资源服务器的 html 文件,html 中通过 CDN 访问其他的静态资源。 如果通过 nginx 二次 proxy_pass 到 CDN 的话,需要经过二次 DNS 解析,有时候慢的一逼
duan602728596
2021-08-31 09:35:28 +08:00
基本上是启动 node server 的方式,css 、部分 js 、图片等上传到 cdn 。
node server 不仅仅作为静态资源服务器,还要提供接口代理的能力,毕竟接口的提供方来自好几个部门,有一些跨域、http (项目是 https 的)的问题,全部交给 http-proxy 来解决。
Illusionary
2021-08-31 09:58:11 +08:00
我们是前端打包成镜像,跟后端一样部署到 k8s,没上什么 oss
shunia
2021-08-31 10:09:47 +08:00
资源都能上 cdn 了,那 html 文件的“工程化”是要做什么?为了什么目的?
fkdog
2021-08-31 11:09:02 +08:00
前端 index.html 需要 nginx 等工具进行配合的吧, 把 /*下的所有请求通过 try_files 都定向到 index.html 上, 这样就能让 js 进行动态路由.
如果没有 nginx 支持, 直接请求 url 可能会报 404 错误.

不知道现在 cdn 支不支持这类 try_files 操作, 如果支持的话, 那么其实没必要另外用 k8s 了. 虽然缓存可能会滞后一点, 但是也不是滞后的很长时间, 毕竟更新过程中如果用户已经打开了页面, 那么你及时刷新了 html, 但是这部分用户用的可能依然是旧版本, 意义并不是很大.

针对缓存这种情况, 最好是后端接口先发, 能兼容旧的前端请求. 这样能保证新旧版本用户都能正常使用.
其次如果你真的有实时刷新 html 缓存的需求, 其实一般的 cdn 服务商都有 api 接口刷新缓存的.
duan602728596
2021-08-31 13:24:18 +08:00
前端项目使用 k8s 通过 CI/CD 来编译和部署项目,而且一旦线上发布的代码有问题,可以先及时回滚到旧版本,然后修复上线。
前端有一些文件,比如 web-worker 和 wasm 文件不适合上 cdn 。所以也不推荐 html 上 cdn 。
nicholasxuu
2021-08-31 13:24:43 +08:00
如果需要 nodejs 层,k8s 放 nodejs 服务。
如果前端不用 hashrouter,k8s 放 nginx 服务,因为 cdn 一般不能处理"复杂"路由的 proxy 。
如果前端用 hashrouter,没必要 k8s 了,全放 cdn 就行了。发布代码的时候调用 sdk 刷新一下 cdn 缓存。
markgor
2021-08-31 14:13:03 +08:00
OSS 开两个,
1 个资源文件
1 个 HTML,oss 开启 html,开启版本号管理。
静态的请求都是:CDN->OSS.
API 的请求->api 网关(开跨域)
THESDZ
2021-08-31 17:03:45 +08:00
@sekfung 实际上就应该每一个项目启动一个 nginx 的 pod,对外的话使用服务发现.

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

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

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

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

© 2021 V2EX