我们使用可抗对所有运行有状态服务(如数据库、搜索引擎等)的EC2实例进行安全更新。
我想知道对ECS实例(在Docker容器中运行无状态web应用程序)进行安全更新的最佳方法是什么。由于自动缩放,实例的数量和它们的IP地址都是动态的。可抗使用硬编码的IP地址列表(主机文件),因此它似乎不符合实际用途。
更新这些实例是一个好主意吗?还是我们应该把它们拆掉,每隔一段时间就产生新的实例?
DevOps的人有什么最佳实践吗?
我发现Ansible支持动态库存。有剧本从AWS获取有关主机的信息,并为Ansible生成动态库存,这很好。
然而,仍然存在一个问题。每当有我以前没有连接到的新主机时,就会显示以下消息,必须手动确认。
The authenticity of host '10.0.1.247 (10.0.1.247)' can't be established.
ECDSA key fingerprint is SHA256:GSogs6P6CzbOzLm9ByWsXkfz7/2A4qwj4PDvczApS/I.
Are you sure you want to continue connecting (yes/no)? yes这是非常恼人的,因为我想实现一个完全自动化的更新机制。这个问题有解决办法吗?
发布于 2016-12-19 08:31:56
每当有我以前没有连接到的新主机时,就会显示以下消息,必须手动确认。undefined有解决这个问题的办法吗?
修改ssh_connection中的ansible.cfg,使其包含-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null参数。
例如:
[ssh_connection]
ssh_args = -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o IdentitiesOnly=yes -o ControlMaster=auto -o ControlPersist=60s发布于 2016-12-15 13:26:46
升级容器是一个完整的反模式.这很麻烦,因为您需要升级其中的每一个,并可能提交其中的每一个。
相反,更新用于生成容器的图像。这通常是通过在Dockerfile上有一个部分来完成的,以确保图像是最新的,所以修补过程基本上是重建图像。例如:
FROM centos:7.2.1511
MAINTAINER Jane Doe <j.doe@foo.com>
RUN yum update -y && \
yum install -y \
bar \
foo && \
yum clean all
# The rest of your Dockerfile不过,推出新形象是我发现ECS缺乏的地方。你需要自己建立一个战略,以确保不停机。
让服务扫描注册表中的图像以查找漏洞也是最佳做法。
修补主机操作系统(这可能需要重新启动)而不需要停机,是我发现ECS缺乏编排功能的另一个领域,因为除了节点之间的ELB平衡之外,没有任何东西是内置在产品中的。
其他容器平台(如OpenShift)拥有从节点疏散集装箱(吊舱,因为这是库伯内特斯)的能力,并将其调度到其他地方。负载均衡器知道这种变化,确保零停机时间。此外,操作系统通常与OpenShift一起使用还改进了基于RPM OSTree的修补机制,大大降低了修补主机操作系统的复杂性。
https://serverfault.com/questions/820882
复制相似问题