如何在Kubernetes中通过SSL将Apache Spark连接到Cassandra集群

问题描述

我们在裸机/ VM上部署的应用程序中使用Spark&Cassandra。要将Spark连接到Cassandra,我们使用以下属性来启用SSL:

spark.cassandra.connection.ssl.keyStore.password
spark.cassandra.connection.ssl.keyStore.type
spark.cassandra.connection.ssl.protocol
spark.cassandra.connection.ssl.trustStore.path
spark.cassandra.connection.ssl.trustStore.password
spark.cassandra.connection.ssl.trustStore.type
spark.cassandra.connection.ssl.clientAuth.enabled

现在我正在尝试在Kubernetes中迁移相同的应用程序。我有以下问题:

  1. 是否需要更改上述属性才能将spark连接到Kubernetes中的Cassandra集群?
  2. 以上属性是否可以使用,或者我错过了什么?
  3. 任何人都可以指向一些可以帮助我的文档或链接吗?

解决方法

是的,当您在Kubernetes上运行作业时,这些属性将继续起作用。您唯一需要考虑的是,所有名称以.path结尾的属性都必须指向具有信任和密钥存储的实际文件。在Kubernetes上,您需要注意将它们公开为机密mounted as files。首先,您需要创建一个秘密,例如:

apiVersion: v1
data:
 spark.truststore:  base64-encoded truststore
kind: Secret
metadata:
 name: spark-truststore
type: Opaque

,然后在规范中指向它:

    spec:
      containers:
      - image: nginx
        name: nginx
        volumeMounts:
          - mountPath: "/some/path"
            name: spark-truststore
            readOnly: true
      volumes:
        - name: spark-truststore
          secret:
            secretName: spark-truststore

并将配置选项指向给定路径,例如:/some/path/spark.truststore