Qovery简介

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

备注

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

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

Qovery是基于很多成熟工具( Kubernetes Atlas , Terraform基础架构管理平台 , helm )和云计算服务商(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

参考