Как распределить файл по кластеру presto в kuebernetes

Я новичок в Kubernetes. У нас есть кластер presto (звездообразный), развернутый в Kubernetes, и мы пытаемся реализовать сертификат SSL для кластера presto.

На основе приведенного ниже URL-адреса я создал хранилище ключей (на моем локальном компьютере) и должен указать этот путь к хранилищу ключей на http-server.https.keystore.path.

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

Однако этот файл должен быть распределен по кластеру. Если я введу локальный путь, 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 (Нет такого файла или каталога)".

Не могли бы вы сообщить мне, если я чего-то упускаю.

Благодарность

3 ответа

Вы можете создать секрет или карту конфигурации, используя свое хранилище ключей, и смонтировать его как том, а затем использовать путь в своих файлах.

Как создать и использовать configMap в k8s здесь

Как настроить секрет в k8s здесь

Вы можете использовать их в своем пользовательском ресурсе таким же образом, как и в любом другом ресурсе. Я вижу возможностьadditionalVolumesи связанная с этим документация здесь

Вы можете создать секрет в K8s и смонтировать его в развертывании Presto, используя additionalVolumesсвойство. Документация по оформлению заказа наadditionalVolumesна https://docs.starburstdata.com/latest/kubernetes/presto_resource.html

  1. Создайте секрет из файла:
kubectl create secret generic cluster-keystore --from-file=./docker.cluster.jks
  1. Добавьте секрет в раздел "additionalVolumes" в yaml: (согласно URL-адресу Karol выше)
 additionalVolumes:
  - path: /jks
   volume:
    secret:
     secretName: "cluster-keystore"
  1. Добавьте файл 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
Другие вопросы по тегам