简介
我正在运行多个,我称之为执政官堆栈。它们看起来总是这样:-领事服务器1台-9个执政官节点
每个节点都提供一些服务——只是一个经典的web堆栈等等(对于这个问题不感兴趣(。Gossip用于保护服务器被任意节点查询并泄露数据。几个执政官模板/tiller"观察者"正在等待动态配置KV更改上的节点/服务
目标
假设我有10个这样的堆栈(数字是动态的(,我想建立一个网络应用程序,使用特定的逻辑控制每个堆栈的执政官KV
我现在拥有的
我创建了一个thor+外交家工具来包装我创建特定KV条目所需的逻辑。我在堆栈中的"控制器"容器上运行它时实现了它,并与localhost:8500进行了交谈,然后localhost:8500使用八卦进行身份验证并写入服务器。
问题
我现在用什么概念来移动这个工具一个远程(不是执政官堆栈的一部分(服务器,同时能够写入每个执政官堆栈KV。
当然,我可以使用外交家连接到stack1.tld:8500,但这意味着我打开HTTP端口,需要以某种方式保护它(不受八卦的保护?以某种方式,只有RPC?(,并保护/ui。
- 有没有更好的方法连接到每个堆栈
- 使用一个带有基本身份验证的nginx代理服务器来保护访问
- 也在该端口上使用ssl-interception,并且仍然使用8500,或者更确切地说,使用配置的https端口(在consul https API中(
- 使用ACL来保护访问?(大量设置允许堆栈成员访问-需要TLS吗?(
一般来说,在不使用TLS(客户端需要大量工作才能设置(的情况下,什么概念适合这种情况需要与堆栈服务器通信,以便安全地写入其KV。
如果我错过了什么,很乐意添加您对的任何要求
这个问题的答案是
- 在执政官服务器上启用ACL
{
"acl_datacenter": "stable",
"acl_default_policy": "deny",
"acl_down_policy": "deny"
}
- 使用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>
确保在这里使用您的主令牌,在服务器启动期间创建
-
也可以选择配置八卦,让你的客户端加密通信(否则ACL就没有意义了(
-
将通用令牌添加到您远程使用的领事客户端,以便能够与远程领事交谈-因为这位领事将不再公开做任何事情(没有令牌(