Qovery简介

Qovery是一个非常 有意思的 所谓 最先进的 (state-of-the-art) 部署平台:

注解

以下文档根据官方文档整理,其架构思路值得借鉴。虽然内核还是Kuberntes的不同软件堆栈,但是提供了一个快速部署持续集成的完整生态。后续我想做一些部署解析,来了解和借鉴这个开源项目。

Qovery官方文档 TUTORIL: Deploy Temporal on Kubernetes 提供了一个生动案例介绍如何在Qovery平台简便地部署 Temporal工作流平台 来实现 Kubernetes 工作流平台。由此可见 Qovery 的使用方法。

Qovery是基于很多成熟工具( Kubernetes Atlas , Terraform基础架构管理平台 , Helm - Kubernetes包管理器 )和云计算服务商(AWS, Digital Ocean, Scaleway …)之上构建的一个抽象层。Qovery的目标是提供产品化的平台层:

../../../_images/qovery-on-top-of-kubernetes-and-terraform.png

Qovery的云基础架构

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

../../../_images/qovery-infra-and-your-infra.png

所有应用和数据都是运行在云计算账号下。 Qovery Engine , Qovery Agent 以及 Kuberntes 是3个主要运行在该基础架构上的服务,用于运行你的应用程序。Qovery Engine和Qovery Agent从控制平面通过一个加密 gRPC/TLS 连接获取指令。 Qovery基础架构和你的应用基础架构和其他人是隔离的,这样Qovery设计成不影响你的基础架构。

Qovery基础架构的服务

Qovery基础架构服务
服务 开源 可选 说明
Qovery Control Plane 管理用户认证,授权和整个Qovery商业逻辑的服务
Qovery API 和Qovery交互的API
Qovery Web接口 即将 和Qovery交互的WEB程序

安装在基础架构上的服务

安装在基础架构上的服务(Qovery依赖)
服务 开源 可选 说明
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 Atlas 数据库的 Node.js Atlas 应用程序:

../../../_images/from-build-to-scale-schema.png
Qovery部署Nodejs和PostgreSQL
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