6 个版本
0.2.5 | 2022年12月8日 |
---|---|
0.2.4 | 2022年11月15日 |
0.1.0 |
|
#231 在 硬件支持
43KB
1K SLoC
Nitrogen CLI
Nitrogen 是一款用于将 Web 服务部署到 AWS Nitro Enclaves 的工具。给定一个 dockerfile 和一个 ssh 密钥,Nitrogen 将启动一个 EC2,配置网络,并构建和部署您的 Web 服务。您将获得一个可用的主机名。Nitrogen 是完全开源的,并且包含用于部署 Nginx、Redis 和 MongoDB 等流行服务的预构建脚本。
安装
以下是如何安装 Nitrogen
对于 Linux 或 Mac
$ curl -fsSL https://raw.githubusercontent.com/capeprivacy/nitrogen/main/install.sh | sh
对于 Windows PowerShell
$ iex (irm https://raw.githubusercontent.com/capeprivacy/nitrogen/main/install.ps1)
注意:需要 AWS 账户。如果您已配置 AWS cli,则可以使用 cat ~/.aws/credentials
获取凭证。如果您使用 MFA,请参阅 故障排除
export AWS_ACCESS_KEY_ID=<YOUR ACCESS KEY>
export AWS_SECRET_ACCESS_KEY=<YOUR SECRET>
命令
nitrogen setup<stack_name> <ssh_public_key>
nitrogen build<dockerfile_directory>
nitrogen deploy<stack_name> <ssh_private_key>
nitrogen logs<stack_name> <ssh_private_key>
nitrogen delete<stack_name>
功能
- 启动任何受支持的 Enclave EC2 实例类型(启用 Nitro Enclaves)
- 为指定端口创建安全组。
- 设置 SSH。
- 从公共互联网(TCP)运行一个 socat 代理到 nitro enclaves(VSOCK)。
- 将任何 Dockerfile 构建为 Enclave Image File(EIF)。
- 部署任何 EIF 并启动 nitro enclaves。
示例
Nginx 示例
$ nitrogen setup nitrogen-test ~/.ssh/id_rsa.pub --instance-type m5n.16xlarge
> INFO nitrogen: Spinning up enclave instance 'nitrogen-test'.
> INFO nitrogen::commands::setup: Successfully created enclave instance. stack_id="arn:aws:cloudformation:us-east-1:657861442343:stack/nitrogen-test/c93c7c80-5581-11ed-8a2b-0e2f3ffeccf1"
> INFO nitrogen: User enclave information: name="nitrogen-test" instance_id="i-07daa284594ff02bc" public_ip="44.197.181.14" availability_zone="us-east-1b" public_dns="ec2-44-197-181-14.compute-1.amazonaws.com"
$ nitrogen build examples/nginx/
> Filename: nitrogen.eif
$ nitrogen deploy nitrogen-test ~/.ssh/id_rsa
> EIF is now running public_dns="ec2-1-234-56-789.compute-1.amazonaws.com:5000"
$ curl http://ec2-1-234-56-789.compute-1.amazonaws.com:5000/
> <!DOCTYPE html>
<html>
<head>
<title>Hello Nitrogen!</title>
</head>
</html>
Nginx TLS 示例
请参阅 此处。
故障排除
如果您有权限问题,并且您的 aws 账户已启用 MFA,则在运行 setup
之前尝试使用会话令牌。
aws sts get-session-token --serial-number arn:aws:iam::<AWS ACCOUNT NUMBER>:mfa/<USER NAME> --token-code <CODE>
导出上述命令打印的值
export AWS_ACCESS_KEY_ID=
export AWS_SECRET_ACCESS_KEY=
export AWS_SESSION_TOKEN=
您还可以在这个库中使用名为 sts.sh
的辅助脚本。警告:这将取消您在 shell 中已设置的任何与认证相关的 AWS 环境变量。
. sts.sh <ACCOUNT> <USER NAME> <CODE>
如果您希望以调试模式部署 enclave,请在部署时使用 “--debug-mode” 标志。然后您可以登录到实例并查看 enclave 控制台,或者使用 nitrogen logs
命令。
贡献者
感谢 @kalebpace 为 nitrogen crate 贡献了名称。
依赖项
~29–42MB
~689K SLoC