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