安全地远程控制多个领事堆栈的概念

Concept of remote controling several consul stacks securely

简介

我是 运行 多个人,我称他们为 consul-stacks。他们总是看起来像: - 1 台领事服务器 - 9 个领事节点

每个节点都提供一些服务——只是一个经典的网络堆栈等等(对这个问题不感兴趣)。 Gossip 用于保护服务器被任意节点查询并泄露数据。 几个 consul-template / tiller "watchers" 正在等待动态配置 nodes/services KV changes

目标

假设我有 10 个这样的堆栈(数字是动态的)并且我想创建一个网络应用程序 uild 使用特定逻辑控制每个堆栈的 consul-KV

我现在拥有的

我创建了一个 thor+diplomat 工具来包装创建特定 KV 条目所需的逻辑。我在 运行 时在堆栈中的 "controller" 容器上实现了它,与 localhost:8500 交谈 - 然后使用八卦进行身份验证并写入服务器。

问题

我现在使用什么概念将此工具移动到远程(不是 consul-stack 的一部分)服务器,同时能够写入每个 consul-stacks KV。

当然,我可以使用外交官连接到 stack1.tld:8500 - 但这意味着我打开 HTTP 端口并需要以某种方式保护它(不受八卦保护?不知何故,只有 RPC?)和也保护 /ui.

一般来说,如果不使用 TLS(客户端需要做很多工作来设置),什么概念适合这个需要与堆栈服务器通信以安全地写入其 KV。

如果我遗漏了什么,很乐意添加您要求的任何内容

关于这个的答案是

  1. 在领事服务器上启用 ACL

{ "acl_datacenter": "stable", "acl_default_policy": "deny", "acl_down_policy": "deny" }

  1. 使用 write/write/write 创建通用 acl 令牌

consul-cli acl create --management=false --name="general_node" --rule "key::write" --rule "event::write" --rule "service::write" --token=<master-token> 确保在这里使用在服务器启动期间创建的主令牌

  1. 还可以选择配置八卦,让您的客户端进行加密通信(否则 ACL 有点没有意义)

  2. 将通用令牌添加到您远程使用的领事客户端,以便能够与远程领事交谈 - 因为该领事将不再公开做任何事情(没有令牌)