在云端部署应用的最简单方式
只需几秒钟即可在任何云服务提供商上部署您的应用 ⚡
Qovery引擎是一个开源抽象层库,能够在几分钟内轻松地在AWS、GCP、Azure和其他云服务提供商上部署应用程序。Qovery引擎使用Rust编写,并利用Terraform、Helm、Kubectl和Docker来管理资源。
- 网站:https://www.qovery.com
- Qovery文档:https://hub.qovery.com/docs
- 社区:在Discord上加入我们,以及我们的问答论坛
请注意:我们非常重视Qovery的安全性和用户的信任。如果您认为在Qovery中发现了安全问题,请通过联系security@qovery.com负责任地披露。
✨ 特性
- **零基础设施管理:**Qovery引擎为您初始化、配置和管理您的云账户。
- **多云支持:**Qovery引擎旨在适用于AWS、GCP、Azure和任何云服务提供商。
- **基于Kubernetes:**Qovery引擎在更高抽象层次上利用Kubernetes的强大功能。
- **使用Terraform和Helm:**Qovery引擎使用Terraform和Helm文件来管理基础设施和应用部署。
- **强大的CLI:**使用提供的Qovery引擎CLI,无缝地在您的云账户上部署应用。
- **Web界面:**Qovery通过qovery.com提供Web界面。
🔌 插件
Qovery引擎支持多种不同的插件,以组合您自己的部署流程:
- 云服务提供商:AWS、Scaleway(测试版)、Azure(投票)、GCP(投票)
- 构建平台:Qovery CI、Circle CI(投票)、Gitlab CI(投票)、GitHub Actions(投票)
- **容器注册表:**AWS ECR、DockerHub、ACR、Scaleway容器注册表
- **DNS提供商:**Cloudflare
- **监控服务:**Datadog(投票)、Newrelic(投票)
演示
以下是使用Qovery引擎的Qovery CLI演示。
入门
安装
将Qovery引擎作为Cargo依赖项使用。
qovery-engine = { git = "https://github.com/Qovery/engine", branch="main" }
使用方法
Rust 库
在 AWS 上初始化 EKS (AWS Kubernetes) 和 ECR (AWS 容器注册表)
let engine = Engine::new(
context, // 参数
local_docker, // 初始化 Docker 作为构建平台
ecr, // 初始化弹性容器注册表
aws, // 初始化 AWS 账户
cloudflare, // 初始化 Cloudflare 作为 DNS 名称服务器
);
let session = match engine.session() {
Ok(session) => session, // 获取会话
Err(config_error) => panic!("配置错误 {:?}", config_error),
};
let mut tx = session.transaction();
// 创建 EKS (AWS 托管的 Kubernetes 集群)
tx.create_kubernetes(&eks);
// 创建基础设施并等待结果
match tx.commit() {
TransactionResult::Ok => println!("成功"),
TransactionResult::Rollback(commit_err) => println!("错误但回滚成功"),
TransactionResult::UnrecoverableError(commit_err, rollback_err) => println!("致命错误")
};
在 AWS 上从 Github 仓库部署应用
// 先创建一个会话
//------------------------
let mut environment = Environment {...};
let app = Application {
id: "app-id-1".to_string(),
name: "app-name-1".to_string(),
action: Action::Create, // 创建应用,你也可以执行其他操作
git_url: "https://github.com/Qovery/node-simple-example.git".to_string(),
git_credentials: GitCredentials {
login: "github-login".to_string(), // 如果是私有仓库,则使用凭据
access_token: "github-access-token".to_string(),
expired_at: Utc::now(), // 由 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![], // 你可以在这里添加持久存储
environment_variables: vec![], // 你可以在这里包含环境变量
};
// 将应用添加到我们想要部署的环境中
environment.applications.push(app);
// 开启一个事务
let mut tx = session.transaction();
// 请求部署环境
tx.deploy_environment(&EnvironmentAction::Environment(environment));
// 提交并部署环境
tx.commit();
注意:仓库根目录需要有一个 Dockerfile。
文档
完整、全面的文档可在 Qovery 网站上获取:https://docs.qovery.com
贡献
在向项目提交拉取请求之前,请阅读我们的贡献指南。
社区支持
要获得使用 Qovery Engine 的一般帮助,请参阅官方 Qovery Engine 文档。如需额外帮助,你可以使用以下渠道提问:
路线图
查看我们的路线图以了解最新发布的功能和即将推出的功能。你也可以为我们提供见解并为特定功能投票。
常见问题
Qovery 为什么存在?
在 Qovery,我们相信云必须比现在更简单。我们的目标是整合云生态系统,使其对任何开发人员、DevOps 和公司都可访问。Qovery 帮助人们专注于他们正在构建的东西,而不是浪费时间做管道工作。
Qovery 和 Qovery Engine 有什么区别?
Qovery 是面向开发人员的容器即服务平台。它结合了 Heroku 的简单性、AWS 的可靠性和 Kubernetes 的强大功能。它使开发人员和 DevOps 的生活更轻松,可以部署复杂的应用程序。
Qovery Engine 是 Qovery 使用的开源抽象层,用于在任何云提供商上抽象容器和数据库的部署。
为什么 Qovery Engine 用 Rust 编写?
Rust 在云行业中被低估了。在 Qovery,我们相信 Rust 可以帮助构建弹性、高效和高性能的产品。Qovery 希望为 Rust 在未来 10 年成为云行业的重要参与者做出贡献。
为什么使用 Terraform、Helm 和 Kubectl 二进制文件?
Qovery Engine 被设计为以管理员身份运行,并根据二进制文件、服务、API 等的输出做出决策。Qovery 使用市场上最高效的工具来管理资源。
许可证
有关许可信息,请参阅 LICENSE 文件。