我是Kubernetes的新手。我们在Kubernetes中部署了一个presto(星爆(集群,我们正在尝试为presto集群实现SSL证书。
基于下面的URL,我已经创建了一个密钥库(在我的本地机器中(,并且必须将此密钥库路径填充到"http-server.https.keystore.path">
https://docs.starburstdata.com/latest/security/internal-communication.html
但是,这个文件必须分布在集群中。如果我输入本地路径,那么Kubernetes将抛出"找不到文件"错误。你能告诉我如何在kubernetes的presto集群中分发这个吗。
我已经尝试将密钥库创建为secret,并将其装载到卷中。
kubectl create secret generic presto-keystore --from-file=./keystore.jks
kind: Presto
metadata:
name: stg-presto
spec:
clusterDomain: cluster.local
nameOverride: stg-presto
additionalVolumes:
- path: /jks
volume:
secret:
secretName: presto-keystore
additionalJvmConfigProperties: |
image:
name: xxxxx/presto
pullPolicy: IfNotPresent
tag: 323-e.8-k8s-0.20
prometheus:
enabled: true
additionalRules:
- pattern: 'presto.execution<name=TaskManager><>FailedTasks.TotalCount'
name: 'failed_tasks'
type: COUNTER
service:
type: NodePort
name: stg-presto
memory:
nodeMemoryHeadroom: 30Gi
xmxToTotalMemoryRatio: 0.9
heapHeadroomPerNodeRatio: 0.3
queryMaxMemory: 1Pi
queryMaxTotalMemoryPerNodePoolFraction: 0.333
coordinator:
cpuLimit: "5"
cpuRequest: "5"
memoryAllocation: "30Gi"
image:
pullPolicy: IfNotPresent
additionalProperties: |
http-server.http.enabled=false
node.internal-address-source=FQDN
http-server.https.enabled=true
http-server.https.port=8080
http-server.https.keystore.path=/jks/keystore.jks
http-server.https.keystore.key=xxxxxxx
internal-communication.https.required=true
internal-communication.https.keystore.path=/jks/keystore.jks
internal-communication.https.keystore.key=xxxxxxx
还尝试创建配置并将其作为卷装入。但仍然得到"由:java.io.FileNotFoundException引起:/jks/keystore.jks(没有这样的文件或目录("。
如果我遗漏了什么,你能告诉我吗。
感谢
您可以使用密钥库创建一个机密或Configmap,并将其装载为卷,然后使用文件中的路径。
如何在k8s中创建和使用configMap
如何在k8s中配置机密此处
您可以在自定义资源中以与在任何其他资源中类似的方式使用这两种资源。我在这里看到了additionalVolumes
和相关文档的选项
您可以在K8s中创建一个秘密,并使用additionalVolumes
属性将其装载到Presto部署中。在additionalVolumes
上的签出文档https://docs.starburstdata.com/latest/kubernetes/presto_resource.html
- 从文件创建机密:
kubectl create secret generic cluster-keystore --from-file=./docker.cluster.jks
- 在";additionalVolumes";yaml中的部分:(根据上面Karol的URL(
additionalVolumes:
- path: /jks
volume:
secret:
secretName: "cluster-keystore"
- 将jks文件添加到协调器中"additionalProperties";yaml中的部分:
coordinator:
cpuRequest: 25
cpuLimit: 25
memoryAllocation: 110Gi
additionalProperties: |
http-server.https.enabled=true
http-server.https.port=8443
http-server.https.keystore.path=/jks/docker.cluster.jks
http-server.https.keystore.key=xxxxxxxxxxx
http-server.authentication.type=PASSWORD