1

我是 Kubernetes 新手。我们在 Kubernetes 中部署了一个 presto (starburst) 集群,我们正在尝试为 presto 集群实施 SSL 证书。

基于以下 URL,我创建了一个密钥库(在我的本地计算机中)并且必须将此密钥库路径填充到“http-server.https.keystore.path”

https://docs.starburstdata.com/latest/security/internal-communication.html

但是,该文件必须分布在整个集群中。如果我输入本地路径,那么 Kubernetes 会抛出“找不到文件”错误。您能否让我知道如何在 kubernetes 的 presto 集群中分发它。

我已尝试将密钥库创建为秘密并将其安装到卷上。

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(没有这样的文件或目录)'。

如果遗漏任何东西,请告诉我。

谢谢

4

3 回答 3

2

您可以使用您的密钥库创建一个秘密或 Configmap 并将其挂载为卷,然后使用文件中的路径。

如何在 k8s 中创建和使用 configMap 在这里

如何在 k8s 中配置 secret 在这里

您可以在自定义资源中以与在任何其他资源中类似的方式使用两者。我在这里看到了一个选项additionalVolumes和与之相关的文档

于 2020-07-29T12:03:10.483 回答
2

您可以在 K8s 中创建一个 secret,并使用additionalVolumes属性将其挂载到 Presto 部署中。additionalVolumeshttps://docs.starburstdata.com/latest/kubernetes/presto_resource.html上查看文档

于 2020-07-30T09:30:34.953 回答
0
  1. 从文件创建秘密:
kubectl create secret generic cluster-keystore --from-file=./docker.cluster.jks
  1. 在 yaml 的“additionalVolumes”部分添加秘密:(根据上面 Karol 的 URL)
 additionalVolumes:
  - path: /jks
   volume:
    secret:
     secretName: "cluster-keystore"
  1. 将 jks 文件添加到 yaml 中的协调器“additionalProperties”部分:
  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
于 2020-07-30T10:15:21.323 回答