#elasticsearch #kubernetes
#elasticsearch #kubernetes
Вопрос:
Я хочу перезаписать файл в контейнере pod. Прямо сейчас у меня есть elasticsearch.yml
местоположение /usr/share/elasticsearch/config
.
Я пытался добиться этого с initContainer
помощью файла развертывания kubernetes, поэтому я добавил что-то вроде:
- name: disabled-the-xpack-security
image: busybox
command:
- /bin/sh
- -c
- |
sleep 20
rm /usr/share/elasticsearch/config/elasticsearch.yml
cp /home/x/IdeaProjects/BD/infra/istio/kube/elasticsearch.yml /usr/share/elasticsearch/config/
securityContext:
privileged: true
Но это не работает, ошибка выглядит так:
rm: can't remove '/usr/share/elasticsearch/config/elasticsearch.yml': No such file or directory
cp: can't stat '/home/x/IdeaProjects/BD/infra/istio/kube/elasticsearch.yml': No such file or directory
Я пытался использовать некоторые echo "some yaml config" >> elasticsearch.yml
из них, но такие обходные пути не работают, потому что я смог сохранить правильное форматирование yaml.
У вас есть какие-либо предложения, как я могу это сделать?
Комментарии:
1. используйте ConfigMap и volumeMount
2. выполнимо ли это на уровне файла развертывания?
3. Вы должны определить ConfigMap, а затем использовать его при развертывании с VoulmeMount для монтирования файла конфигурации внутри развертывания
Ответ №1:
Как указано Арманом в комментариях, вы можете создать ConfigMap с содержимым /home/x/IdeaProjects/BD/infra/istio/kube/elasticsearch.yml
и смонтировать его как том в развертывании.
Чтобы создать карту конфигурации из вашего файла, вы можете запустить:
kubectl create configmap my-es-config --from-file=/home/x/IdeaProjects/BD/infra/istio/kube/elasticsearch.yml
Это создаст ConfigMap внутри вашего кластера kubernetes с файлом yaml.
Затем вы можете использовать это и добавить подключение тома к вашему развертыванию как:
containers:
- name: elasticsearch
image: k8s.gcr.io/busybox
.
.
.
volumeMounts:
- name: config-volume
mountPath: /usr/share/elasticsearch/config/
volumes:
- name: config-volume
configMap:
name: my-es-config
Примечания
- Рекомендуется также создать вашу ConfigMap как yaml. Дополнительная информация здесь
- Прямое подключение
/usr/share/elasticsearch/config/
configmap заменит все внутри этого пути и поместит файл конфигурации из configmap. Если это вызывает проблему, вы можете смонтировать его в другом месте, а затем скопировать.
Комментарии:
1. На самом деле, я хотел указать, что при монтировании всего каталога также будут удалены конфигурации JVM, попробуйте смонтировать файл по другому пути и определите ENV для чтения с нового пути
Ответ №2:
Примечание. если вы не хотите переопределять все в смонтированном каталоге, вы можете смонтировать файл только с помощью «subPath» в любом каталоге, который вы хотите.
https://kubernetes.io/docs/concepts/storage/volumes/#using-subpath