问题描述
我们在裸机/ 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中迁移相同的应用程序。我有以下问题:
解决方法
是的,当您在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