CoreOS:在etcd2 cloud-config中注入真正的私有IP

我在Rackspace上有三个networking:

  1. 公共networking
  2. 服务networking10.181.XXX.XXX (他们有时把它称为私有networking,但它不是私有的,它是数据中心私有的,因此它们的租户可以共享它)
  3. 一个真正的私人networking192.168.3.0/24通过networking用户界面创build

我的计划是推出一个安全的etcd集群,其etcd对等端和客户端仅限于真正的专用networking,因此无法用于外部世界。

所以,我推出了一个CoreOS服务器,它有三个接口:

  1. eth0有公网的IP地址 – 很好
  2. eth1有服务networking的IP地址 – 很好
  3. eth2具有专用networking的IP地址 – 太棒了!

所有看起来不错,但etcd绑定到服务networking,而不是我手动创build的私人。 这是一个cloud-config

 #cloud-config coreos: etcd2: discovery: https://discovery.etcd.io/XXX advertise-client-urls: http://$private_ipv4:2379,http://$private_ipv4:4001 initial-advertise-peer-urls: http://$private_ipv4:2380 listen-client-urls: http://$private_ipv4:2379,http://$private_ipv4:4001 listen-peer-urls: http://$private_ipv4:2380 

这意味着$private_ipv4variables被扩展到eth1 IP地址,这里是/etc/environment的内容:

 COREOS_PUBLIC_IPV4=166.78.XXX.XXX COREOS_PRIVATE_IPV4=10.181.XXX.XXX 

好吧,看起来像Rackspace注入自己的networking,这是可以解释的。 但是这是否意味着etcd只locking到前两个networking,并且没有办法将其configuration为使用真正的私有networking?

我已经尝试了一堆这样的黑客:

 listen-peer-urls: http://`/usr/bin/ifconfig eth2 | /usr/bin/grep --word-regexp inet | /usr/bin/awk '{print $2}'`:2380 

和其他人,但没有得到正确执行,也没有取代cloud-config

我的问题是:

  1. 我在CoreOS集群设置领域做了些奇怪的事情,以至于我无法轻松自然地实现目标? 如果是这样的话,你将如何build立一个安全的集群,在一个真正的专用networking中运行etcd
  2. 有没有办法将dynamic值“注入”到cloud-init文件中,以便在运行时插入? 问题是,IP地址是不知道的,所以它需要得到和注入我想。

他们还提供了一种方法来创build您自己的专用networking并将您的服务器连接到它。 正如解释KB文章ID:2163 。 如果你这样做,并已经连接servicenet连接界面,这将不再是一个问题。 但是,对此的警告将是,你将不再有办法利用servicenet相关的服务。 更多有关错综复杂的是他们的KB文章ID:2250 。

或者,您可以configuration您的防火墙,以便只有您使用/需要servicenet的服务才能够到达您的服务器。 您甚至可以冒险进入通过云vyatta设备编排真正的专用networking的世界,并仍然保留访问Rackspace服务的知识库文章ID:3454 。

所有这些文章可在以下urlfind: http : //www.rackspace.com/knowledge_center/

最终,你必须权衡什么select最适合你。

HTH

它解决了。 Etcd2现在运行在真正的专用networking上而不是ServiceNet上。 以下是我如何为etcd2.service创build一个systemd etcd2.service ,其中它明确设置了诸如ETCD_ADVERTISE_CLIENT_URLS=${URL}:2379类的环境configuration,而不是依赖诸如$private_ipv4$public_ipv4variables。

我为这个工作写了一个快速工具 – 实现,样本和文档可以在这里find 。 如果您有任何问题或build议,请删除一行!