• Stars
    star
    2,288
  • Rank 20,125 (Top 0.4 %)
  • Language
    Rust
  • License
    GNU General Publi...
  • Created about 4 years ago
  • Updated about 1 month ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

The Orchestration Engine To Deliver Self-Service Infrastructure ⚡️

Qovery logo

The simplest way to deploy your apps in the Cloud

Deploy your apps on any Cloud providers in just a few seconds ⚡

work in progress badge Func tests Discord


Qovery stack on top of Kubernetes and Cloud providers

Qovery Engine is an open-source abstraction layer library that turns easy application deployment on AWS, GCP, Azure, and other Cloud providers in just a few minutes. The Qovery Engine is written in Rust and takes advantage of Terraform, Helm, Kubectl, and Docker to manage resources.

Please note: We take Qovery's security and our users' trust very seriously. If you believe you have found a security issue in Qovery, please responsibly disclose by contacting us at [email protected].

✨ Features

  • Zero infrastructure management: Qovery Engine initializes, configures, and manages your Cloud account for you.
  • Multi Cloud: Qovery Engine is built to work on AWS, GCP, Azure and any Cloud provider.
  • On top of Kubernetes: Qovery Engine takes advantage of the power of Kubernetes at a higher level of abstraction.
  • Terraform and Helm: Qovery Engine uses Terraform and Helm files to manage the infrastructure and app deployment.
  • Powerful CLI: Use the provided Qovery Engine CLI to deploy your app on your Cloud account seamlessly.
  • Web Interface: Qovery provides a web interface through qovery.com

🔌 Plugins

Qovery engine workflow

Qovery engine supports a number of different plugins to compose your own deployment flow:

  • Cloud providers: AWS, Scaleway (in beta), Azure (vote), GCP (vote)
  • Build platforms: Qovery CI, Circle CI (vote), Gitlab CI (vote), GitHub Actions (vote)
  • Container registries: AWS ECR, DockerHub, ACR, Scaleway Container Registry
  • DNS providers: Cloudflare
  • Monitoring services: Datadog (vote), Newrelic (vote)

See more on our website.

Demo

Here is a demo from Qovery CLI from where we use the Qovery Engine.

Qovery CLI

Getting Started

Installation

Use the Qovery Engine as a Cargo dependency.

qovery-engine = { git = "https://github.com/Qovery/engine", branch="main" }

Usage

Rust lib

Initialize EKS (AWS Kubernetes) and ECR (AWS container registry) on AWS

let engine = Engine::new(
    context, // parameters
    local_docker, // initialize Docker as a Build Platform
    ecr, // initialize Elastic Container Registry
    aws, // initialize AWS account
    cloudflare, // initialize Cloudflare as DNS Nameservers
);

let session = match engine.session() {
    Ok(session) => session, // get the session
    Err(config_error) => panic!("configuration error {:?}", config_error),
};

let mut tx = session.transaction();

// create EKS (AWS managed Kubernetes cluster)
tx.create_kubernetes(&eks);

// create the infrastructure and wait for the result
match tx.commit() { 
    TransactionResult::Ok => println!("OK"),
    TransactionResult::Rollback(commit_err) => println!("ERROR but rollback OK"), 
    TransactionResult::UnrecoverableError(commit_err, rollback_err) => println!("FATAL ERROR")
};

Deploy an app from a Github repository on AWS

// create a session before
//------------------------

let mut environment = Environment {...};

let app = Application {
    id: "app-id-1".to_string(),
    name: "app-name-1".to_string(),
    action: Action::Create, // create the application, you can also do other actions
    git_url: "https://github.com/Qovery/node-simple-example.git".to_string(),
    git_credentials: GitCredentials {
        login: "github-login".to_string(), // if the repository is a private one, then use credentials
        access_token: "github-access-token".to_string(),
        expired_at: Utc::now(), // it's provided by the Github API
    },
    branch: "main".to_string(),
    commit_id: "238f7f0454783defa4946613bc17ebbf4ccc514a".to_string(),
    dockerfile_path: "Dockerfile".to_string(),
    private_port: Some(3000),
    total_cpus: "1".to_string(),
    cpu_burst: "1.5".to_string(),
    total_ram_in_mib: 256,
    min_instances: 1,
    max_instances: 4,
    storage: vec![], // you can add persistent storage here
    environment_variables: vec![], // you can include env var here
};

// add the app to the environment that we want to deploy
environment.applications.push(app);

// open a transaction
let mut tx = session.transaction();

// request to deploy the environment
tx.deploy_environment(&EnvironmentAction::Environment(environment));

// commit and deploy the environment
tx.commit();

Note: the repository needs to have a Dockerfile at the root.

Documentation

Full, comprehensive documentation is available on the Qovery website: https://docs.qovery.com

Contributing

Please read our Contributing Guide before submitting a Pull Request to the project.

Community support

For general help to use Qovery Engine, please refer to the official Qovery Engine documentation. For additional help, you can use one of these channels to ask a question:

  • Discord (For live discussion with the Community and Qovery team)
  • GitHub (Bug reports, Contributions)
  • Roadmap (Roadmap, Feature requests)
  • Twitter (Get the news fast)

Roadmap

Check out our roadmap to get informed of the latest features released and the upcoming ones. You may also give us insights and vote for a specific feature.

FAQ

Why does Qovery exist?

At Qovery, we believe that the Cloud must be simpler than what it is today. Our goal is to consolidate the Cloud ecosystem and makes it accessible to any developer, DevOps, and company. Qovery helps people to focus on what they build instead of wasting time doing plumbing stuff.

What is the difference between Qovery and Qovery Engine?

Qovery is a Container as a Service platform for developers. It combines the simplicity of Heroku, the reliability of AWS, and the power of Kubernetes. It makes the developer and DevOps life easier to deploy complex applications.

Qovery Engine is the Open Source abstraction layer used by Qovery to abstract the deployment of containers and databases on any Cloud provider.

Why is the Qovery Engine written in Rust?

Rust is underrated in the Cloud industry. At Qovery, we believe that Rust can help in building resilient, efficient, and performant products. Qovery wants to contribute to make Rust being a significant player in the Cloud industry for the next 10 years.

Why do you use Terraform, Helm and Kubectl binaries?

The Qovery Engine is designed to operate as an administrator and takes decisions on the output of binaries, service, API, etc. Qovery uses the most efficient tools available in the market to manage resources.

License

See the LICENSE file for licensing information.

Qovery

Qovery is a CNCF and Linux Foundation silver member.

CNCF Silver Member logo

More Repositories

1

Replibyte

Seed your development database with real data ⚡️
Rust
4,136
star
2

pleco

Automatically removes Cloud managed services and Kubernetes resources based on tags with TTL
Go
222
star
3

console

Qovery Web Console V3 ⚡️
TypeScript
203
star
4

Torii

Torii ⛩️ is a simple, powerful and extensible open-source Internal Developer Portal
TypeScript
175
star
5

RedisLess

RedisLess is a fast, lightweight, embedded and scalable in-memory Key/Value store library compatible with the Redis API.
Rust
150
star
6

qovery-cli

Qovery Command Line Interface
Go
78
star
7

helm-freeze

Freeze your charts in the wished versions
Go
57
star
8

terraform-examples

This repository contains ready to use Terraform examples with Qovery to create outstanding infrastructure
50
star
9

iam-eks-user-mapper

A tool to automatically give AWS IAM users access to your Kubernetes cluster.
Rust
48
star
10

documentation

Qovery documentation website
HTML
15
star
11

terraform-provider-qovery

Qovery Terraform Provider
Go
15
star
12

react-xtermjs

Xterm.js for React
TypeScript
13
star
13

qovery-github-actions

Qovery Github action allowing to deploy application.
Go
13
star
14

qovery-client-go

Qovery Golang SDK
Shell
12
star
15

qovery-migration-ai-agent

Qovery Migration AI Agent to Automate and Ease the Migration From Cloud Providers with Qovery
TypeScript
11
star
16

scaleway-api-rs

Rust lib for Scaleway API
Rust
9
star
17

qovery-openapi-spec

Qovery API specs - OpenAPI format
Shell
7
star
18

lifecycle-job-examples

This repository contains ready to use Qovery Lifecycle Jobs examples
7
star
19

simple-example-node

JavaScript
6
star
20

vscode-qovery-extension

Vscode plugin with auto completion
TypeScript
6
star
21

simple-example-gin-with-postgresql

Go
5
star
22

digital-mobius

Automatically recycle not ready Kubernetes nodes on Digitial Ocean
Go
5
star
23

simple-example-node-with-postgresql

JavaScript
4
star
24

qovery-client-typescript-axios

TypeScript
4
star
25

qovery-client-python

Qovery Python Client
Python
3
star
26

spring-boot-api-token

Kotlin
3
star
27

posthog-proxy

Ready to use reverse proxy for Posthog
Dockerfile
3
star
28

qovery-rust-rocket-sample

Rust
2
star
29

intellij-qovery-plugin

Intellij plugin with auto completion
Java
2
star
30

doners

Scale your DNS management in a secure way on Kubernetes
2
star
31

qovery-client-javascript

Qovery Javascript Client
JavaScript
2
star
32

simple-example-laravel-with-postgresql

PHP
2
star
33

doc

Qovery documentation
2
star
34

simple-example-django-with-postgresql

Python
2
star
35

flask-todo

Flask example with Qovery
Python
2
star
36

qovery-javascript-client

JavaScript
1
star
37

migrate-webapp-from-heroku-to-qovery

JavaScript
1
star
38

nginx-gateway

NGINX Gateway
Shell
1
star
39

homebrew-replibyte

Ruby
1
star
40

qovery-templates

Templates to bootstrap popular frameworks on Qovery
Java
1
star
41

http-handler-to-redeploy

This project is a good starting point to create an HTTP handler to redeploy your app on Qovery
Go
1
star
42

scoop-qovery-cli

Scoop to install and update qovery cli
1
star
43

homebrew-qovery-cli

Brew tap Formula to install and update qovery cli
Ruby
1
star
44

qovery-client-typescript

TypeScript
1
star
45

engine-testing-lfs

Repository to test integration of git lfs
Dockerfile
1
star
46

frontend-boilerplate

Boilerplate of Qovery console technical stack (Nx, Ngxs, Rxjs)
TypeScript
1
star
47

simple-example-with-postgresql

Kotlin
1
star
48

undertaqer

Automatically destroy crash looped pods
Smarty
1
star
49

e2e-app

Go
1
star
50

qovery-chart

Qovery Helm Chart for Self-Managed version
Smarty
1
star
51

qovery-php-client

Qovery PHP client library
PHP
1
star
52

qovery-go-client

Qovery Go client library
Go
1
star
53

qovery-python-client

Python
1
star