kubernetes 在K8ssandra中配置节点间加密(TLS)

8ehkhllq  于 2023-01-20  发布在  Kubernetes
关注(0)|答案(1)|浏览(119)

如何在K8ssandra中为Cassandra配置节点间加密(即TLS)?

nnt7mjpx

nnt7mjpx1#

K8ssandra 1.4.0包含了一些更改,这些更改应该可以配置TLS。作为参考,这是ticket,这是对应的PR
图表属性cassandraYamlConfigMap可用于指定包含自定义cassandra.yaml的ConfigMap。您提供的属性将与k8ssandra生成的属性合并,您的属性优先。
注意cassandra.yaml不需要是一个完整的配置文件,只需要指定你感兴趣的属性就足够了,因为它会和K8ssandra生成的基本配置文件合并。
节点间加密和客户机加密还需要一些其他属性,因为您需要指定密钥存储库和信任存储库机密,以便可以创建卷装载。请注意,您需要提前创建密钥存储库和信任存储库机密。
在这里查看新图表属性的内联文档。
以下是演示新属性的图表属性文件示例:

cassandra:
  version: 4.0.1
  cassandraYamlConfigMap: cassandra-config
  encryption:
    keystoreSecret: keystore
    keystoreMountPath: /mnt/keystore
    truststoreSecret: truststore
    truststoreMountPath: /mnt/truststore
  heap:
    size: 512M
  datacenters:
  - name: dc1
    size: 1

关于charts属性有几点需要注意。首先,keystoreSecrettruststoreSecret引用的secret应该位于安装k8ssandra的同一个名称空间中。用户应该在安装(或升级k8ssandra)之前创建这些secret。
其次,keystoreMountPathtruststoreMountPath指定了这些机密应该安装在Cassandra pod中的什么位置。这些属性必须被指定,并且必须与cassandra.yaml中指定的内容相匹配。
下面是一个包含我的自定义cassandra.yaml的ConfigMap示例:

apiVersion: v1
kind: ConfigMap
metadata:
  name: cassandra-config
data:
  cassandra.yaml: |-
    server_encryption_options:
      internode_encryption: all
      keystore: /mnt/keystore/keystore.jks
      keystore_password: cassandra
      truststore: /mnt/truststore/truststore.jks
      truststore_password: cassandra

K8ssandra使用Cass Operator来管理Cassandra。考虑到这一点,我建议进一步阅读以下内容:

  • article介绍了如何使用cert-manager为cass运算符管理的集群配置TLS。
  • 此票证提供卡斯操作员如何配置节点间加密的详细说明。

相关问题