我将cassandra集群放在部署为状态集的kubernetes上。我想在pods之间实现节点间安全性。我不确定如何实现,因为我希望扩展,我不想在扩展后使用新证书重新启动集群。我有一个docker入口脚本,用于在pods中调整容器启动时的cassandra.yaml。
有人可以建议在这种情况下最好的方法是什么?
答案 0 :(得分:0)
DataStax工程师,我在OpsCenter Lifecycle Manager中帮助设计了节点到节点的证书管理功能。添加新节点/证书后,没有基本要求重新启动所有节点,但很容易设计您的证书管理,以免意外地满足该要求。
您必须为每个节点创建自签名证书,将每个证书添加到信任库,并将该信任库复制到每个节点。添加新节点/证书时,必须向该信任库添加新证书,将其重新复制到每个节点,然后需要重新启动Cassandra。这就是DataStax文档建议做的事情,这是最简单的入门方式,但它不是最具可扩展性的生产方式。
相反,您要做的是创建证书颁发机构。它不必像Verisign那样是公开信任的CA,它可以是使用openssl命令行工具创建的私有CA.将CA公共证书添加到信任库并将其复制到每个节点。此时,您可以为该CA签名的每个节点创建证书。由于每个节点都已信任CA,因此您可以随时添加新节点/证书,前提是它们的节点到节点证书由该CA签名(因此保留在CA的私有和公共部分),并且每个节点都将信任签署的证书。
遗憾的是,如果您没有足够的背景知识,并且具有一般的证书和openssl(或其他证书生成工具),那么实施起来非常困惑。要一步一步地解释它需要更多的打字。但是你可以很容易地谷歌教程设置一个CA,你已经知道如何创建JKS的东西来创建信任库...所以你至少是那里的一大块。
此外......我正在处理DataStax的各种部署相关内容。如果您有兴趣,我会喜欢聊半小时,了解您如何完成Kubernetes设置以及哪些方法对您有效以及是什么原因导致疼痛。堆栈溢出是否具有直接消息传递功能?如果我能弄明白我将如何向你发送我的联系信息。