Qovery简介
Qovery是一个非常 有意思的
所谓 最先进的 (state-of-the-art) 部署平台:
有些类似PaaS平台(如 OpenShift ),但又不完全是PaaS
抽象包装了多种开源工具 ( Terraform基础架构管理平台 , Loki 日志聚合系统 , Grafana通用可视分析平台 ...)实现快速部署完整的持续集成系统,从 dev => staging => production
确保开发者产品化和自治化,以完整控制整个部署生命周期
提供一个产品化开箱即用的架构,可以大为节约部署工作投入
备注
以下文档根据官方文档整理,其架构思路值得借鉴。虽然内核还是Kuberntes的不同软件堆栈,但是提供了一个快速部署持续集成的完整生态。后续我想做一些部署解析,来了解和借鉴这个开源项目。
Qovery官方文档 TUTORIL: Deploy Temporal on Kubernetes 提供了一个生动案例介绍如何在Qovery平台简便地部署 Temporal工作流平台 来实现 Kubernetes 工作流平台。由此可见 Qovery 的使用方法。
Qovery是基于很多成熟工具( Kubernetes , Terraform基础架构管理平台 , helm )和云计算服务商(AWS, Digital Ocean, Scaleway ...)之上构建的一个抽象层。Qovery的目标是提供产品化的平台层:

Qovery的云基础架构
Qovery是基于云厂商提供的云服务之上来构建平台,所以需要在云服务账号上安装一些服务才能工作:

所有应用和数据都是运行在云计算账号下。 Qovery Engine
, Qovery Agent
以及 Kuberntes 是3个主要运行在该基础架构上的服务,用于运行你的应用程序。Qovery Engine和Qovery Agent从控制平面通过一个加密 gRPC/TLS 连接获取指令。 Qovery基础架构和你的应用基础架构和其他人是隔离的,这样Qovery设计成不影响你的基础架构。
Qovery基础架构的服务
服务 |
开源 |
可选 |
说明 |
---|---|---|---|
Qovery Control Plane |
是 |
否 |
管理用户认证,授权和整个Qovery商业逻辑的服务 |
Qovery API |
否 |
否 |
和Qovery交互的API |
Qovery Web接口 |
即将 |
否 |
和Qovery交互的WEB程序 |
安装在基础架构上的服务
服务 |
开源 |
可选 |
说明 |
---|---|---|---|
Qovery Engine |
是 |
否 |
事务性部署服务,负责维护基础架构并部署具有所有依赖项的应用程序 |
Qovery Agent |
即将 |
否 |
将应用程序日志、服务状态和实时指标转发到 Qovery 控制平面的服务 |
Kubernetes |
是 |
否 |
容器调度编排系统,Qovery在云托管Kubernetes上运行你的应用程序 |
External DNS |
是 |
否 |
为Kubernetes服务配置外部DNS的工具 |
Cert Manager |
是 |
否 |
为Kubernetes服务配置和管理TLS证书的工具 |
Loki |
是 |
是 |
用于聚合 Kubernetes 日志的工具,Qovery 代理实时从 Loki 获取日志 |
Grafana |
是 |
是 |
用于可视化基础架构和应用服务的指标和日志的产品 |
NGINX Ingress |
是 |
否 |
Kuberntes的NGINX Ingress控制器 |
Qovery应用和数据库部署案例
典型的案例是采用Qovery在AWS生产环境部署使用 PostgreSQL 数据库的 Node.js 应用程序:

Stage |
Step |
Qovery service |
Description |
---|---|---|---|
Auth |
Git push received |
Control plane |
Qovery receives your git commit via Github/Gitlab/Bitbucket webhooks |
Auth |
Check permissions |
Control plane |
Qovery checks permissions to proceed app deployment or not |
Build |
Build container |
Engine |
Qovery builds your NodeJS app into container |
Build |
Push container |
Engine |
Qovery push the container into your container registry |
Deploy |
Deploy PostgreSQL |
Engine |
Qovery match the PostgreSQL version with AWS RDS PostgreSQL and deploy it on your AWS account |
Deploy |
Configure PostgreSQL network |
Engine |
Qovery configure the network of your AWS RDS PostgreSQL to make it accessible from your application |
Deploy |
Check PostgreSQL |
Engine |
Qovery checks your AWS RDS PostgreSQL is well deployed and running |
Deploy |
Deploy container |
Engine |
Qovery deploys your container on your Kubernetes cluster |
Deploy |
Configure container network |
Engine |
Qovery configure the network of your container to make it accessible from outside |
Deploy |
Load balancer |
Engine |
Qovery deploys a load balancer and bind it to your application |
Deploy |
DNS |
Engine |
Qovery assign a domain to your application |
Deploy |
TLS |
Engine |
Qovery request a TLS certificate and bind it to your domain and application |
Deploy |
Check container |
Engine |
Qovery checks your container is well deployed and accessible via internet |
Run |
Run database |
Engine |
Qovery monitor your AWS RDS PostgreSQL database |
Run |
Run container |
Engine |
Qovery runs your container on Kubernetes and ensure it has the maximum uptime |
Run |
Metrics |
Agent |
Qovery watch your application and database metrics and forward them to the Qovery Control Plane |
Run |
Notification |
Control plane |
Qovery notifies the user on the successful app and db deployment |
Scale |
Scale container |
Agent |
Qovery scale your containers depending on the CPU and custom metrics |