微前端架构下腾讯云K8S的部署方式
总体思路
每个应用都对应一个镜像,这个镜像有版本的概念,每次打包都是创建一个新版本
K8S存在集群的概念,不同环境可以有不同的集群,比如预发布环境可以有3台机器和生产环境可以有7台机器
进入集群里边,前端应用创建
工作负载Deployment,对应的就是一个负载对应一个镜像,其中选择镜像版本相当于上线不同的代码,每次有新的上线实际上就是更新这里的最新版本;
服务与路由中的Service,在每个deployment创建以后会自动创建一个,他会生成IP地址,方便我们的域名解析到对应到deployment;
Ingress 是允许访问到集群内 Service 规则的集合,您可以通过配置转发规则,实现不同 URL 可以访问到集群内不同的 Service;里边还能配置http和https证书;
上边是一些概念,如果不实际使用的话,很难去理解他们之间的关系;也就是会者不难、难者不会的一个情况;当你需要的时候自然会去认识、了解、操作,之后就知道是怎么回事了。这里讲一个地方即可就是我们的项目需要打包成镜像,然后发布到K8S上,实际上发布到K8S可以交给运维同学来做,我们需要做的是打包这块的流程,因为这里运维无法帮助你;
用于打包的镜像
- 我们需要有两个镜像,一个是用于打包的镜像,一个是用于部署的镜像
- 用于部署的镜像比较简单,一个nginx服务镜像即可;
- 用于打包的镜像相对复杂些,需要有nodejs环境,python环境(用于上传静态资源)
- 打包的镜像拉到本地后,将当前目录下的文件全部拷贝进去,然后安装及打包,这样打包的就是当前分支的代码,也就是说不用指定分支,使用当前分支即可
- 打包后将dist文件上传到对应的项目目录下,这样静态资源就可以访问了,这里的上传用到了腾讯云的python上传工具:https://cloud.tencent.com/document/product/436/10976
- 还有一个镜像是用来部署环境的,这里直接使用一个dockerhub上的nginx镜像即可
看下脚本代码
1 |
|
Dockerfile
1 |
|
- 打包镜像-fe_fpms_build:202104290107,它是我们自定义的打包环境镜像,因此每次打包都使用它
- 部署镜像-nginx:stable-alpine
- 打包镜像是自己通过其他镜像创建container,然后再进入container安装打包环境,再把container打包成镜像并推送到腾讯云(ccr.ccs.tencentyun.com/aiforward_saas_fe/fe_fpms_build:202104290107)
这些都准备好以后,我们每次进行上线,只需要本地打包以后然后推送到腾讯云上即可,再到腾讯云修改部署的版本。
这里腾讯云的登录docker login ccr.ccs.tencentyun.com