11 个版本
0.2.0 | 2021 年 9 月 18 日 |
---|---|
0.1.9 | 2021 年 9 月 18 日 |
#9 in #discover
每月下载 22 次
38KB
749 行
Rust 云提供商节点发现
node-discover
是一个基于 Rust 的库和命令行工具,用于根据环境提供的元信息(如标签)发现云环境中节点的 IP 地址。它是 go-discover 库的 Rust 版本。
提供商的配置以 key=val key=val ...
的元组列表提供。
重复的键将报告为错误,并且通过 provider
键确定提供商。
支持的提供商
以下云提供商在 node-discover/src/providers 包中实现了。
即将推出的提供商
- 阿里云 (阿里巴巴) 云 配置选项
- Google Cloud 配置选项
- Linode 配置选项
- mDNS 配置选项
- Microsoft Azure 配置选项
- Openstack 配置选项
- Scaleway 配置选项
- SoftLayer 配置选项
- TencentCloud 配置选项
- Triton 配置选项
- vSphere 配置选项
- 数据包 配置选项
配置示例
# Aliyun (Alibaba) Cloud
provider=aliyun region=... tag_key=consul tag_value=... access_key_id=... access_key_secret=...
# Amazon AWS
provider=aws region=eu-west-1 tag_key=consul tag_value=... access_key_id=... secret_access_key=...
# DigitalOcean
provider=digitalocean region=... tag_name=... api_token=...
# Google Cloud
provider=gce project_name=... zone_pattern=eu-west-* tag_value=consul credentials_file=...
# Linode
provider=linode tag_name=... region=us-east address_type=private_v4 api_token=...
# mDNS
provider=mdns service=consul domain=local
# Microsoft Azure
provider=azure tag_name=consul tag_value=... tenant_id=... client_id=... subscription_id=... secret_access_key=...
# Openstack
provider=os tag_key=consul tag_value=server username=... password=... auth_url=...
# Scaleway
provider=scaleway organization=my-org tag_name=consul-server token=... region=...
# SoftLayer
provider=softlayer datacenter=dal06 tag_value=consul username=... api_key=...
# TencentCloud
provider=tencentcloud region=ap-guangzhou tag_key=consul tag_value=... access_key_id=... access_key_secret=...
# Triton
provider=triton account=testaccount url=https://us-sw-1.api.joyentcloud.com key_id=... tag_key=consul-role tag_value=server
# vSphere
provider=vsphere category_name=consul-role tag_name=consul-server host=... user=... password=... insecure_ssl=[true|false]
# Packet
provider=packet auth_token=token project=uuid url=... address_type=...
# Kubernetes
provider=k8s label_selector="app = consul-server"
命令行工具使用方法
使用以下命令安装命令行工具
cargo install node-discover --all-features
然后运行它
$ node-discover help
$ node-discover help aws
$ node-discover addrs provider=aws region=eu-west-1 ...
库使用
Cargo.toml 中的活动提供程序
[dependencies]
# Choose which providers you need in features list
node-discover = { version = "x.y.z", features = ["digitalocean", "aws"] }
有关完整的 API 文档,请参阅 docs.rs。 crates.io
测试
可以使用以下命令运行配置测试
$ cargo test
默认情况下,除非为提供程序设置了凭据,否则与提供程序通信的测试不会运行。要运行提供程序测试,您必须设置必要的环境变量。
注意:这将通过凭据提供的账户进行实际 API 调用。
$ AWS_ACCESS_KEY_ID=... AWS_ACCESS_KEY_SECRET=... AWS_REGION=... cargo test
这需要存在与测试中指定的资源相匹配的资源(例如,AWS 的情况下的实例标签)。要创建这些资源,在 tests/tf
目录中有为支持的提供程序提供的 Terraform 配置。
您必须使用上述相同的账户和访问凭证。相同的环境变量应适用于 Terraform 并由其读取。
$ cd tests/tf/aws
$ export AWS_ACCESS_KEY_ID=... AWS_ACCESS_KEY_SECRET=... AWS_REGION=...
$ terraform init
...
$ terraform apply
...
在 Terraform 成功运行后,假设您已将凭据导出到环境中,您应该能够成功运行测试。
$ cargo test
要销毁资源,您需要再次使用 Terraform。
$ cd tests/tf/aws
$ terraform destroy
...
注意:除了凭据和 Terraform 之外,不应有创建和测试这些资源的其他要求。这是为了确保测试可以在所有提供程序的开发和 CI 环境中一致地运行。
依赖项
~8–27MB
~376K SLoC