20个版本
新 0.0.21 | 2024年8月22日 |
---|---|
0.0.20 | 2024年8月21日 |
0.0.12 | 2024年7月29日 |
0.0.2 | 2024年5月25日 |
52 in HTTP客户端
1,256 每月下载量
99KB
1.5K SLoC
Render 是一个一站式云平台,旨在简化您应用程序和网站的 开发和部署。它提供与 免费TLS证书、全球CDN、私有网络 和 直接从Git自动部署 的无缝集成。轻松构建、运行和扩展,一切都在一个统一的解决方案中。
入门
配置
要配置与 render_cdk
一起使用的环境变量,您需要设置 API_KEY
和 OWNER_CREDENTIALS
环境变量。您可以通过在项目根目录中创建一个 .env
文件来完成此操作,内容如下
API_KEY=rnd_xxxxXXXXxxxxXXXXxxxXX
OWNER_CREDENTIALS=<render>@<email>.com
请确保将 rnd_xxxxXXXXxxxxXXXXxxxXX
替换为您实际的Render API密钥。
安装
将 render_cdk
添加到您的 Cargo.toml
[dependencies]
render_cdk = "0.0.21"
- 或者,在项目根目录中运行
cargo add render_cdk
也会将其添加到您的项目中。
使用示例
以下是一些使用 render_cdk
包与 Render Cloud 交互的基本示例
1. 查询已部署服务
您可以使用 ServiceManager
模块轻松检索有关您的已部署服务的信息。以下是根据各种标准查询服务的示例。
use render_cdk::environment_management::prelude::*;
use render_cdk::resource_management::prelude::*;
use tokio::main;
#[main]
async fn main() {
// List all deployed services, limiting the result to 50.
ServiceManager::list_all_services("50").await;
// List all services with the status "suspended", limiting the result to 50.
ServiceManager::list_services_with_status("suspended", "50").await;
// Find a specific service by its name and type.
ServiceManager::find_service_by_name_and_type("my_api", "web_service").await;
// Find services deployed in a specific region (e.g., Oregon), limiting the result to 50.
ServiceManager::find_service_by_region("oregon", "50").await;
// Find services based on the environment they are deployed in, limiting the result to 50.
ServiceManager::find_service_by_environment("image", "50").await;
// Deleting a web service by name and type.
ServiceManager::delete_service("my_api", "web_service").await.unwrap();
// Deleting a static site by name and type.
ServiceManager::delete_service("my_static_site", "static").await.unwrap();
// List all Postgres database instances, limiting the result to 50.
ServiceManager::list_postgres_instances(true, "50").await.unwrap();
// Find a specific Postgres database instance by name.
ServiceManager::find_postgres_instance_by_name("my_database", true, "50").await.unwrap();
// Find Postgres database instances with a specific status (e.g., suspended), limiting the result to 50.
ServiceManager::find_postgres_instance_with_status("suspended", true, "50").await.unwrap();
// Find redis instances by name.
ServiceManager::find_redis_instance_by_name("my_redis_instance", "50").await;
}
2. 删除服务
您还可以删除不再需要的服务。
use render_cdk::service_management::ServiceManager;
#[tokio::main]
async fn main() {
// Delete a static site deployment.
ServiceManager::delete_service("test_deployment", "static").await;
// Delete a web service deployment.
ServiceManager::delete_service("test_deployment", "web_service").await;
// Delete a postgres instance.
ServiceManager::delete_postgres_instance("test_postgres").await;
// Delete a redis instance.
ServiceManager::delete_redis_instance("test_redis").await;
}
3. 读取配置文件
《Conf》模块允许您读取定义部署设置的配置文件。
use render_cdk::configuration::Conf;
fn main() {
// Read and parse a configuration file from a specified path.
let config = Conf::read_configuration_file("./samples/sample.conf").unwrap();
// Process the configuration as needed...
}
4. 部署现有配置
如果您已经有一个配置文件,可以直接使用《ServiceManager》进行部署。
use render_cdk::service_management::ServiceManager;
#[tokio::main]
async fn main() {
// Deploy services as specified in the configuration file.
ServiceManager::deploy_configuration("./samples/sample.conf").await.unwrap();
}
5. 部署静态网站
以下示例演示了如何使用配置模板部署一个简单的静态网站。
use render_cdk::deployment::Template;
use render_cdk::service_management::{ServiceDetails, ServiceManager};
#[tokio::main]
async fn main() {
let deployment_config = Template {
type_: "static_site".to_owned(),
name: "test_deployment".to_owned(),
repo: "https://github.com/lexara-prime-ai/SAMPLE_STATIC_SITE".to_owned(),
auto_deploy: "yes".to_owned(),
root_dir: Some("./public".to_owned()),
service_details: Some(ServiceDetails {
publish_path: Some("./".to_owned()),
pull_request_previews_enabled: Some("yes".to_owned()),
..Default::default()
}),
..Default::default()
};
// Deploy the static site with the specified configuration.
ServiceManager::create_service(deployment_config).await.unwrap();
}
字段说明
- build_command:在每次部署前,Render 运行以构建您的应用程序的命令,例如
npm run build
或yarn build
。 - publish_path:静态网站将要发布的目录路径,例如
/public/
。 - pull_request_previews_enabled:指示是否为此部署启用了拉取请求预览。
6. 部署 Web 服务
以下是一个部署简单 Node.js Web 服务的示例。
use render_cdk::deployment::Template;
use render_cdk::service_management::{EnvSpecificDetails, ServiceDetails, ServiceManager};
#[tokio::main]
async fn main() {
let deployment_config = Template {
type_: "web_service".to_owned(),
name: "test_deployment".to_owned(),
repo: "https://github.com/lexara-prime-ai/SAMPLE_WEB_SERVICE".to_owned(),
auto_deploy: "yes".to_owned(),
root_dir: Some("./".to_owned()),
service_details: Some(ServiceDetails {
region: "oregon".to_owned(),
plan: "starter".to_owned(),
runtime: "node".to_owned(),
num_instances: 1,
env_specific_details: Some(EnvSpecificDetails {
build_command: Some("yarn".to_owned()),
start_command: Some("npm start".to_owned()),
}),
pull_request_previews_enabled: Some("yes".to_owned()),
..Default::default()
}),
..Default::default()
};
// Deploy the web service with the specified configuration.
ServiceManager::create_web_service(deployment_config).await.unwrap();
}
7. 获取所有者信息
最后,您可以通过简单的 API 调用来获取当前账户的所有者 ID。
use render_cdk::environment_management::prelude::*;
#[tokio::main]
async fn main() {
// Retrieve the owner ID of the current Render account.
Info::get_owner_id().await;
}
8. 使用简单的 .conf 文件进行资源配置
.conf
文件提供了程序化资源配置的便捷替代方案,允许您通过简单的配置设置定义和管理资源。
配置文件示例
以下是一个用于配置托管 Postgres 实例和托管 Redis 实例的 示例配置 文件。
[database]
部分指定了托管 Postgres 实例的配置name
和user
字段应填写所需的数据库名称和用户。enable_high_availability
指示是否应启用高可用性。plan
指定实例的定价计划,而version
指示 Postgres 版本。cidrBlocks
定义哪些 IP 范围可以访问数据库,使用 CIDR 表示法。
# Sample configuration file for provisioning
# managed Postgres and Redis instances.
[database]
databaseName = "" # Replace with the desired database name
databaseUser = "" # Replace with the desired user for the database
enableHighAvailability = false # Set to true to enable high availability
plan = "starter" # Pricing plan for the database instance
version = "12" # Postgres version
name = ""
# The following portion enables access control via CIDR blocks
cidrBlocks = [
{ cidrBlock = "0.0.0.0/0", description = "Public access from anywhere" },
# { cidrBlock = "192.168.1.0/24", description = "Office network" },
# Add more CIDR blocks here as needed
]
注意:任何空白字段(如 name
和 user
)将如果未提供则自动生成。
[redis]
部分指定了托管 Redis 实例的配置plan
指定实例的定价计划。cidrBlocks
控制哪些 IP 范围可以访问 Redis 实例,使用 CIDR 表示法。
[redis]
name = "" # Replace with the desired Redis instance name
plan = "starter" # Pricing plan for the Redis instance
# CIDR blocks for access control to Redis
cidrBlocks = [
{ cidrBlock = "0.0.0.0/0", description = "Public access from anywhere" },
# { cidrBlock = "10.0.0.0/16", description = "Private network access" },
# Add more CIDR blocks here as needed
]
说明
-
[database] 部分:
-
name:Postgres 数据库的名称。
-
user:Postgres 数据库的用户。
-
enable_high_availability:用于启用或禁用数据库高可用的布尔值。
-
plan:Postgres 实例的定价计划。选项可能包括 "入门级"、"标准"、"高级" 等。
注意:免费计划将导致部署失败。
-
version:要使用的 Postgres 版本。
-
cidrBlocks:控制访问数据库的 CIDR 块列表。这确保只有允许的 IP 范围可以访问实例。
- cidrBlock:表示允许 IP 范围的字符串,使用 CIDR 格式(例如,公开访问的
0.0.0.0/0
或私有网络的192.168.1.0/24
)。 - description:对 CIDR 块用途的易读描述。
- cidrBlock:表示允许 IP 范围的字符串,使用 CIDR 格式(例如,公开访问的
-
-
[redis] 部分:
-
名称: Redis 实例的名称。
-
方案: Redis 实例的价格方案。选项可能包括“入门级”、“标准”、“高级”等。
注意:免费计划将导致部署失败。
-
cidrBlocks: 控制访问 Redis 实例的 CIDR 块列表,类似于数据库配置。
-
此配置文件允许您轻松设置特定计划和访问控制,以满足项目需求,以便设置管理数据库和缓存服务。
use render_cdk::config::Conf;
fn main() {
let config = Conf::read_configuration_file().unwrap();
println!("Sample Configuration: {:?}\n", config);
}
本指南应使您对如何使用 Render CDK 通过 Render Cloud 流线化云开发有了全面了解。
通过利用 Render CDK 的强大功能,您可以简化云资源的供应、管理和扩展过程。
凭借其声明式方法和无缝集成,Render CDK 使您能够更多地关注构建和创新,同时它处理云基础设施的复杂性。
依赖项
~8-20MB
~288K SLoC