问题标签 [etcd]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
3150 浏览

chef-infra - CoreOS / etcd:如何管理我的秘密?

我目前正在试用 CoreOS。

我已经到了需要我的容器访问某些机密信息的地步,例如 SSL 私钥、API 密钥等...

Chef 提供了处理这些秘密的好方法,最简单的是加密数据包。我想为 CoreOS 提供类似的东西。

使用 CoreOS 管理机密的惯用方法是什么?

需要额外服务(例如领事)的答案是最受欢迎的。

0 投票
1 回答
459 浏览

distributed - etcd 在网络分区期间如何处理读/写?

我正在寻找可以用作简单服务注册表的东西,并且正在考虑使用 etcd。对于这个用例,可用性比一致性更重要。即使集群被拆分,客户端也必须能够读取/写入任何节点的密钥。etcd可以这样使用吗?当事情恢复在一起时,如果某些写入丢失并不重要,因为它们将通过服务“我还活着”心跳计时器快速更新。

0 投票
2 回答
1499 浏览

service - 当面向消息的中间件完成这项工作时,为什么还要为服务发现而烦恼呢?

我得到了 etcd/consul/$whatever 试图解决的问题。服务消费者需要与服务提供者交谈,一个流动性极大的分布式系统需要一种机制来将两者结合起来。

然而,“服务消费者的请求去哪儿了”的问题?是旧的,IMO 已经用 MOM 解决了 - 面向消息的中间件。

在 MOM 中,这个想法是服务消费者不关心服务提供者住在哪里。他们只是发送一条消息并让消息总线负责将消息路由到适当的消费者。可以有多个提供者都在做同样的事情(基于队列的循环)或版本化的提供者(/v1/request 转到一个,/v2/request 转到另一个)。

这是一种简单而强大的集成模式,将服务接口与其实现完全分离。

然而我看到了这种对发现服务提供者的奇怪痴迷,这似乎在消费者和提供者之间建立了紧密的耦合(除了一些其他的反模式之外)。

那么,我在这里缺少什么?TIA。

0 投票
1 回答
277 浏览

python - 在 Tornado 项目和 Celery 中存储配置

我在使用 Celery 任务的 Tornado 项目中遇到了问题。
现在我使用*.conf文件并tornado.options解析它们。 tornado.options解析配置文件和命令行。

项目中还有 Celeryapp对象。所以当我启动 celery worker 时,它不知道命令行和配置文件,所以我得到了错误。

问题是如何存储配置以在后端服务器和工作人员之间分配?这些问题更多地是关于您的经验和最佳实践。

我听说过分布式配置系统,例如etcd. 它对 Tornado/Celery 项目有用吗?

0 投票
1 回答
805 浏览

amazon-web-services - Secure distribution of private keys to Docker on CoreOS

We're starting to use Docker/CoreOS as our infrastructure. We're deploying on EC2. The CoreOS cluster is managed by an auto-scaling group so new hosts come and go. Plus, there's a lot of them. I'm trying to find a way to distribute a secret (private RSA key or a shared secret for a symmetric cypher) to all hosts so I can use that to securely distribute things like database credentials, AWS Access Keys for certain services, etc.

I'd like to obey "the principle of least privilege". Specifically, if I have 2 apps in 2 different containers running on the same host, each should only have access to the secrets that app needs. For example, app A might have access to the MySQL credentials, and app B might have access to AWS Access keys for Dynamo, but A can't access Dynamo and B can't access the MySQL.

If I had a secret on each server then this wouldn't be hard. I could use a tool like Crypt to read encrypted configuration data out of etcd and then use volume maps to selectively make credentials available to individual containers.

The question is, how the heck do I get the keys onto the host safely.

Here's some things I've considered and why they don't work:

  • Use AWS roles to grant each host access to a encrypted S3 bucket. The hosts can then read a shared secret from there. But this doesn't work because S3 has a REST API, Docker doesn't limit the network access containers have, and the role applies to the whole host. Thus, any container on that host can read the key out of S3, then read all the values out of etcd (which also has an unrestricted REST API) and decrypt them.
  • In my CloudFormation template I can have a parameter for a secret key. This then gets embedded in the UserData and distributed to all hosts. Unfortunately, any container can retrieve the key via the metadata service REST API.
  • Use fleet to submit a global unit to all the hosts and that unit copies the keys. However, containers can access fleet via it's REST API and do a "fleetctl cat" to see the key.
  • Put a secret key in a container in a private repo. That can then be distributed to all hosts as a global unit and an app in that container can copy the key out to a volume mount. However, I assume that given the credentials to the private repo somebody could download the container with standard network tools and extract the key (albeit with some effort). The problem then becomes how to distribute the .dockercfg with the credentials for the private repo securely which, I think, gets us right back where we started.

Basically, it seems like the core problem is that everything has a REST API and I don't know of a way to prevent containers from accessing certain network resources.

Ideas?

0 投票
3 回答
22723 浏览

java - 使用spring boot时如何配置动态属性?

我打算使用 Spring Boot 来完成我的任务。它是一个连接到数据库的典型服务器应用程序。我知道我可以使用Spring Configuration来外部化我的属性,例如数据库连接详细信息。但我还有其他需要在运行时更新的动态属性。例如鳍状肢/功能标志。我的应用程序的某些功能需要动态控制,例如想象一个像app.cool-feature.enable=true这样的属性,然后过一段时间,同样的功能会被app.cool-feature.enable=false关闭

任何建议在运行时摄取这种动态行为的最佳实践是什么?我可以想到以下选项来触发更改...

  • 使用上述属性更改向服务器实例发送 JMS 消息
  • 在服务器实例上调用公开的 API 端点,例如 POST http://myapp/admin/config/update { "config": { "app.cool-feature.enable": true } }

我知道我可以编写自己的自定义代码来实现这一点(这将是第三次),但只是想知道是否已经存在围绕动态属性配置的标准方式/常见做法,而我不知道。如果它可以与 Apache ZooKeeper、coreos etcd、Netflix curator 等其他解决方案一起使用并与 Spring 紧密集成,那就太好了。

想法?

0 投票
1 回答
1300 浏览

chef-infra - etcd/zookeeper/consul 与其他配置管理工具(如 chef/puppet/..)之间的关系?

仅根据我的高级理解,两个组(例如,etcd 和 puppet)都进行分布式配置管理,我是对还是错?还是 puppet 在内部使用 etcd?如果是这样,一个例子可能会有所帮助。

问候,西努。

0 投票
1 回答
1245 浏览

kubernetes - Kubernetes 调度程序:*api.Pod 的监视以错误结束:JSON 输入的意外结束

昨天的服务很好。但是今天当我检查服务的状态时,我看到:

真的很困惑,因为 etcd、flannel 和 apiserver 工作正常。

etcd 只有一些奇怪的日志:

所以,我真的被卡住了,不知道出了什么问题。我该如何解决这个问题?或者,我如何查看调度程序的详细信息日志。 journalctl给我同样的日志systemd status

0 投票
2 回答
2514 浏览

docker - 如何获取在机器上启动的单元的 IP 地址并将其用于具有队列的另一个单元?

我是 CoreOS 和 Docker 的新手,我遇到了舰队问题。

我有一个启动 POSTGRES 容器的标准单元,我想知道启动该单元的机器的 IP 地址。我实际上有一个由 3 台机器组成的集群,并且 POSTGRES 单元并不总是在同一台机器上启动(这意味着 IP 不是静态的)。

当我启动另一个需要 POSTGRES 的单元(见下文)时,我需要它。

我目前正在使用名为 BindsTo 的单位参数:

注意:这个单元不需要和 POSTGRES 单元在同一台机器上启动。

我尝试使用 %H 变量,但它返回主机名而不是机器的 IP 地址。

我的集群中也使用了法兰绒。

谢谢!


我找到了一种解决方法:

并且 IP 地址在容器环境中设置为POSTGRES_PORT_5432_TCP_ADDR

0 投票
0 回答
790 浏览

etcd - 无法使用 SSL/TLS 建立 etcd 集群

我正在尝试使用 SSL/TLS 运行 3 台机器(10.0.0.1、10.0.0.2、10.0.0.3)的 etcd 集群,以实现客户端和传输安全,但我仍然遇到麻烦,看起来集群无法选举其领导者 - raft 陷入循环。难道我做错了什么?所有机器使用 etcd 2.0.5

服务器1

服务器2

服务器3

带有输出的日志文件:http: //pastebin.com/JBitRT1e

感谢您提供任何帮助!J。