本文尝试部署一个express demo到云托管,走通云托管流程,为下一篇高级使用做准备。
云开发、tcb、cloudbase
大纲:
- 新建一个 express 工程
- 编写dockerfile
- 云托管新建服务、新建版本部署
- docker构建成镜像上传至腾讯云个人版容器
- 调整访问服务,公网访问
参考链接:
- 官网node应用 https://cloud.tencent.com/document/product/1243/49237
- 如何部署 https://cloud.tencent.com/document/product/1243/49235
0 概念
云托管
什么是腾讯云托管?这是腾讯出的一个产品,可以运行容器化应用,结合腾讯云的周边生态,做到serverless 服务。有点虚,先看介绍:
云托管(Tencent CloudBase Run)是云开发(Tencent CloudBase,TCB)提供的新一代云原生应用引擎(App Engine 2.0),支持托管用任意语言和框架编写的容器化应用。和云开发其他产品(云函数、云数据库、云存储、扩展应用、HTTP 访问服务、静态网站托管等)一起为用户提供云原生一体化开发环境和工具平台,为开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用、微服务应用、Flutter 客户端等),避免应用开发过程中繁琐的服务器搭建及运维,使开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。 — https://cloud.tencent.com/document/product/1243
关键词:托管容器化应用、提供云原生一体化开发环境、后端云服务、避免繁琐的服务端搭建和运维、专注业务逻辑。
这就为我们展示了开发愿景,一个程序员开发web服务,利用云托管让服务上云、高可用、轻运维。无论是后端、前端、原生app都可以使用。
云托管和云函数有点相似,都是云端运行后端服务,不同的是云托管颗粒度更大,一个应用可能包含多个函数,多个功能。
计费方式
云托管的计费方式值得一提,里面很多概念需要提前理解清楚。
扣钱方式有两种:
- 计量付费。也就是每天一结算,花多少扣多少
- 资源包。套餐模式,先花钱买套餐,一般来说套餐给的比较多,和手机流量一个道理。
我们从免费赠送的套餐来开始算
资源细项 | 免费额度 | 定价 |
---|---|---|
CPU | 720(核 × 小时) | 0.055元/(核*小时) |
内存 | 1440 (GiB × 小时) | 0.032元/(GiB × 小时) |
流量 | 500GB | 0.8元/GB |
构建 | 600分钟 | 0.05元/分钟 |
假设有一个一个node服务,需要1核cpu+1G:
- CPU运行一个月需要使用 24*30=720小时,刚好用完CPU额度
- 内存运行一个月需要 720小时,才用了一半的额度
掌握了这个计算方法,再来看官方说明,就容易理解了
免费额度可支持您体验:1个1核2GiB的实例常驻运行30天,或 2个0.5核1GiB的实例常驻运行30天,或 1个2核4GiB的实例常驻运行15天。
再反过来看,要花多少钱呢?
- CPU,720小时1核,720*0.055=39.6元
- 内存,720*0.032=23.04 元
具体定价场景可参考 https://cloud.tencent.com/document/product/1243/48039
请务必注意,从serverless机制特征来看,一般会有一个自动升降级的机制,也就是最低0核。如果没有流量会销毁环境,不运行,也就不扣钱。
配置、使用、部署
按照大纲:
- 新建一个 express 工程
- 编写dockerfile
- docker构建成镜像上传至腾讯云个人版容器
- 云托管新建服务、新建版本部署
- 调整访问服务,公网访问
准备一个express工程
这里只是做一个演示,具体业务逻辑不是重点。具体代码可参考。https://gitee.com/xiaoxfa/tech-sharing/tree/master/share-repo/06-cloudbase-run
通过查看express工程可以看到,我们可以通过 npm run app.js
来启动这个node服务,这个服务需要长期运行,很适合演示云托管的使用场景。
编写dockerfile
具体看 dockerfile
,简单来说,就是封装node为docker,这样只要有 docker 环境,不管你用啥语言写的都可以跑。如果你不理解docker,可以看我的其他分享文章 前端可以弄懂的Docker基础。
操作命令如下:
# 构建
docker build -t helloworld .
# 查看镜像
docker images
现在我们本地就有了docker 镜像
云托管新建服务、新建版本部署
服务 - 版本 - 实例。我们访问的是A服务下的B版本C实例。
什么是服务。不同服务对应不同的云托管资源,一个环境有多少个云托管服务,就对应多少个服务。通过新建服务,我们可以指定腾讯云镜像仓库。
什么是版本。我们会部署多次,每次部署都相当于发版,有版本号的概念。进一步有灰度的概念,可以并行存在多个版本,这里叫流量策略。
注意图中有低成本、高可用两种模式。
- 低成本默认提供一个起步规格,如果cpu用的多了自动升级,优点不用不花钱,缺点冷启动。
- 高可用。始终有一个常驻实例,最低0.25核+0.5G,一天 CPU 6/(小时*核),内存12,一个月的话 CPU180,内存360,刚好对应入门的云托管资源包,一个月35元的成本,换来的是服务高可用。
文档 https://cloud.tencent.com/document/product/1243/48276
docker构建成镜像上传至腾讯云个人版容器
我们有了本地镜像,按照下图,推送到远程。
调整访问服务,公网访问
剩下的就是常规操作了。
云开发 - 环境 - 访问服务 - HTTP 访问服务 - 新建
- 未来的目标,做一个图片压缩服务,利用Google的 squoo cli 服务