Amazon Elastic Container Service RPM
Amazon Elastic Container Service RPM 是为支持 Amazon ECS 容器代理 而开发的软件。Amazon ECS RPM 专为使用 Upstart 作为初始化系统的基于 RPM 的系统打包。
行为
Amazon ECS RPM 安装的 upstart 脚本在系统启动时运行级别 3、4 或 5 完成时运行。该脚本将清理 Amazon ECS 容器代理的任何先前副本,然后启动一个新副本。RPM 的日志可在 /var/log/ecs/ecs-init.log
查看,而 Amazon ECS 容器代理的日志可在 /var/log/ecs/ecs-agent.log
查看。Amazon ECS RPM 使 Amazon ECS 容器代理的内省端点可在 http://127.0.0.1:51678/v1
访问。Amazon ECS 容器代理的配置从 /etc/ecs/ecs.config
读取。此文件中的所有配置都用作 ECS 代理容器的环境变量。此外,一些配置可用于配置 ECS 代理容器的其他属性,如下所述。
配置键 | 示例值 | 描述 | 默认值 |
---|---|---|---|
ECS_AGENT_LABELS | {"test.label.1":"value1","test.label.2":"value2"} | 要添加到 ECS 代理容器的标签。 |
此外,以下环境变量可用于配置 RPM 的行为:
环境变量名 | 示例值 | 描述 | 默认值 |
---|---|---|---|
ECS_SKIP_LOCALHOST_TRAFFIC_FILTER | <true | false> | 默认情况下,ecs-init 服务会添加一条 iptable 规则,以丢弃非本地到 localhost 的数据包(如果它们不是现有转发连接或 DNAT 的一部分),并在停止时移除该规则。如果 ECS_SKIP_LOCALHOST_TRAFFIC_FILTER 设置为 true,则不会添加/移除此规则。 | false |
ECS_ALLOW_OFFHOST_INTROSPECTION_ACCESS | <true | false> | 默认情况下,ecs-init 服务会添加一条 iptable 规则,以阻止来自主机外部(或 awsvpc 网络模式下的容器)对 ECS 代理内省端口的访问,并在停止时移除该规则。如果 ECS_ALLOW_OFFHOST_INTROSPECTION_ACCESS 设置为 true,则不会添加/移除此规则。 | false |
ECS_OFFHOST_INTROSPECTION_INTERFACE_NAME | eth0 | 用于阻止主机外部代理内省端口访问的主要网络接口名称。默认情况下,此值为处理内核路由表(/proc/net/route )中默认路由(0.0.0.0/0 )的接口。如果找不到,我们会回退到 eth0 | - (运行时解析) |
上述环境变量可以通过以下方式使用:
- 在 Amazon Linux 1 上,可以通过在 /etc/init/ecs.conf 中添加
env ECS_SKIP_LOCALHOST_TRAFFIC_FILTER=true
来启用ECS_SKIP_LOCALHOST_TRAFFIC_FILTER
标志。 - 在 Amazon Linux 2 上,可以通过在 /etc/ecs/ecs.config 中添加
ECS_SKIP_LOCALHOST_TRAFFIC_FILTER=true
来启用ECS_SKIP_LOCALHOST_TRAFFIC_FILTER
标志。
使用
Amazon Elastic Container Service RPM 安装的 upstart 脚本可以分别通过以下命令启动或停止:
sudo start ecs
sudo stop ecs
更新
对 Amazon ECS 容器代理的更新应通过 Amazon ECS 容器代理执行。如果更新失败且 Amazon ECS 容器代理不再正常工作,可以按以下步骤进行回滚:
sudo stop ecs
sudo /usr/libexec/amazon-ecs-init reload-cache
sudo start ecs
安全披露
如果您认为发现了潜在的安全问题,请不要在 Issues 中发布。相反,请按照这里的说明操作或直接发送电子邮件给 AWS 安全团队。
开发
构建用于测试的 RPM
在您的本地机器上,您可以使用 docker 目标生成 rpm:
make rpm-in-docker
然后可以在 Amazon Linux AMI 中安装此 rpm:
# 通过 s3 或 scp 发送 rpm
rpm -i rpm-that-you-built.rpm
sudo systemctl enable ecs
sudo systemctl start ecs
开发依赖
运行 make get-deps
以获取运行测试和生成模拟所需的依赖项。
生成模拟
可以使用 Makefile 目标 make generate
生成模拟。注意这必须在 Linux 机器上运行。
许可
Amazon Elastic Container Service RPM 在 Apache 2.0 许可下授权。