本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

ecs-deploy是一个用Go编写的REST API服务器,用于从任何地方部署ECS服务,通常作为部署流水线的一部分。由于Jenkins、CircleCI、Bitbucket等持续集成(CI)软件往往缺乏与ECS的原生集成,该API服务器可部署在ECS上,提供ECS的持续部署能力,解决CI工具与ECS集成不足的问题。
适用于需要将CI/CD流水线与AWS ECS集成的场景,特别是当现有CI工具缺乏原生ECS部署能力时。可用于自动化部署流程、管理ECS服务生命周期(部署、回滚、扩缩容)、监控服务状态和日志,以及配置自动扩缩容策略,适用于开发、测试和生产环境的ECS集群管理。
可从发布页面下载ecs-deploy和ecs-client,或使用Docker Hub镜像。
使用ecs-deploy可以引导新的ECS集群,自动设置自动扩缩组、ALB、IAM角色和ECS集群:
./ecs-deploy --bootstrap \ --alb-security-groups sg-123456 \ # ALB安全组 --cloudwatch-logs-enabled \ # 启用CloudWatch日志 --cloudwatch-logs-prefix mycompany \ # CloudWatch日志前缀 --cluster-name mycluster \ # 集群名称 --ecs-desired-size 1 \ # ECS期望实例数 --ecs-max-size 1 \ # ECS最大实例数 --ecs-min-size 1 \ # ECS最小实例数 --ecs-security-groups sg-123456 \ # ECS安全组 --ecs-subnets subnet-123456 \ # ECS子网 --environment staging \ # 环境(如staging、prod) --instance-type t2.micro \ # 实例类型 --key-name mykey \ # SSH密钥名称 --load***-domain cluster.in4it.io \ # ALB域名 --paramstore-enabled \ # 启用参数存储 --paramstore-kms-arn aws:arn:kms:region:accountid:key/1234 \ # KMS ARN --paramstore-prefix mycompany \ # 参数存储前缀 --profile your-aws-profile \ # AWS凭证配置文件 --region your-aws-region # AWS区域(必填)
注意:需先创建安全组和VPC/子网。ALB安全组应允许80/443端口入站,ECS安全组应允许来自ALB的32768-61000端口流量。如需删除集群,将
--bootstrap替换为--delete-cluster。
也可通过Terraform部署ECS集群,详见Terraform模块文档。
使用ecs-client部署示例服务(如nginx和echoserver):
./ecs-client login --url [***]
ECS_DEPLOY_LOGIN=deploy ECS_DEPLOY_PASSWORD=password ./ecs-client login --url [***]
./ecs-client deploy -f examples/services/multiple-services/multiple-services.yaml
AWS_REGION=region:AWS区域(必填)JWT_SECRET=secret:JWT加密密钥(必填)DEPLOY_PASSWORD=deploy:部署用户密码(必填)DEVELOPER_PASSWORD=developer:开发用户密码(必填)AWS_ACCOUNT_ENV=dev|staging|testing|qa|prod:AWS账户环境标识PARAMSTORE_ENABLED=yes:是否启用参数存储(默认:no)PARAMSTORE_PREFIX=mycompany:参数存储前缀(如设为mycompany,参数路径为/mycompany/服务名/变量)PARAMSTORE_KMS_ARN=:用于加密/解密参数的KMS ARNCLOUDWATCH_LOGS_ENABLED=yes:是否启用CloudWatch日志(默认:no)CLOUDWATCH_LOGS_PREFIX=mycompany:CloudWatch日志前缀LOAD***_DOMAIN=mycompany.com:负载均衡器域名DYNAMODB_TABLE=Services:存储服务信息的DynamoDB表名(默认:Services)ECR_SCAN_ON_PUSH=true:是否启用ECR镜像推送时扫描(默认:false)SAML_ENABLED=yes:启用SAML认证(默认:no)SAML_ACS_URL=[***]:SAML断言消费者服务URLSAML_CERTIFICATE=证书内容:SAML证书内容SAML_PRIVATE_KEY=私钥内容:SAML私钥内容SAML_METADATA_URL=[***]:身份提供商元数据URL生成SAML密钥和证书的命令:
openssl req -x509 -newkey rsa:2048 -keyout myservice.key -out myservice.cert -days 3650 -nodes -subj "/CN=myservice.mycompany.com"
通过以下步骤启用自动扩缩容:
[***])| 环境变量 | 默认值 | 描述 |
|---|---|---|
| PARAMSTORE_ENABLED | no | 是否启用参数存储(使用"yes"启用) |
| PARAMSTORE_PREFIX | "" | 参数存储前缀(如设为mycompany,参数路径为/mycompany/服务名/变量) |
| PARAMSTORE_KMS_ARN | "" | 用于加密/解密参数的KMS ARN |
| PARAMSTORE_INJECT | no | 是否将密钥注入任务定义(使用"Yes"启用) |
| AUTOSCALING_STRATEGIES | LargestContainerUp,LargestContainerDown | 应用的自动扩缩容策略列表(见下方策略类型) |
| AUTOSCALING_DOWN_STRATEGY | gracefully | 缩容策略(目前仅支持gracefully:在执行缩容前检查资源使用情况) |
| AUTOSCALING_UP_STRATEGY | immediately | 扩容策略(immediately:立即扩容;gracefully:检查后扩容) |
| AUTOSCALING_DOWN_COOLDOWN | 5 | 缩容后冷却时间(分钟) |
| AUTOSCALING_DOWN_INTERVAL | 60 | 缩容检测后,检查资源使用情况的时间间隔(秒) |
| AUTOSCALING_DOWN_PERIOD | 5 | 缩容前检查资源使用情况的周期数 |
| AUTOSCALING_UP_COOLDOWN | 5 | 扩容后冷却时间(分钟) |
| AUTOSCALING_UP_INTERVAL | 60 | 扩容检测后,检查资源使用情况的时间间隔(秒) |
| AUTOSCALING_UP_PERIOD | 5 | 扩容前检查资源使用情况的周期数 |
| SERVICE_DISCOVERY_TTL | 60 | 服务发现记录的TTL(秒) |
| SERVICE_DISCOVERY_FAILURETHRESHOLD | 3 | 服务发现记录的故障阈值 |
| AWS_RESOURCE_CREATION_ENABLED | yes | 是否允许ecs-deploy自动创建AWS IAM资源 |
| SLACK_WEBHOOKS | "" | 逗号分隔的Slack Webhook(可选指定频道,格式:url1:#channel,url2:#channel) |
| SLACK_USERNAME | ecs-deploy | Slack通知用户名 |
| ECS_TASK_ROLE_PERMISSION_BOUNDARY_ARN | "" | ECS任务角色的权限边界ARN |
| ECR_SCAN_ON_PUSH | false | 是否启用ECR镜像推送时扫描 |
| DEPLOY_MAX_WAIT_SECONDS | 900 | 部署超时等待时间(秒,默认15分钟) |
| 策略名称 | 描述 |
|---|---|
| LargestContainerUp | 当集群中最大容器(含缓冲)无法在现有节点上调度时触发扩容 |
| LargestContainerDown | 当移除一个节点后仍有足够容量容纳最大容器(含缓冲)时触发缩容 |
| Polling | 每分钟轮询所有服务,检查是否因资源不足导致任务无法调度(每秒最多1次调用,每次10个服务) |
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429