Я развертываю два кластера Elasticsearch 6.8.x в Kubernetes на Google Cloud Platform, используя Оператор Elasticsearch 1.1.0 от Elastic.co.
Поскольку я хочу, чтобы это контролировалось версиями и повторялось, я пытаюсь настроить все декларативно. С помощью Gitlab CI я развертываю Оператор, манифесты для кластеров и некоторые секреты, содержащие роли и пользователей ES ( Новая функция в 1.1.0) в GKE. Затем Оператор все настраивает. Все это хорошо работает.
Последний шаг - применить шаблон по умолчанию к кластерам, чтобы уменьшить количество сегментов на индекс до 1, вместо 5 сегментов по умолчанию (в ES версии 6 значение по умолчанию по-прежнему равно 5, в версии 7 оно стало 1.
Если бы это было сделано вручную, я бы ПОСТАВИЛ следующий шаблон, чтобы установить желаемое сегментирование.
PUT /_template/default
{
"order" : -1,
"index_patterns" : [
"*"
],
"settings" : {
"index" : {
"number_of_shards" : "1",
"number_of_replicas" : "1"
}
}
}
Как это сделать декларативно? Я мог бы создать пользователя и развернуть задание k8s, которое выполняет запрос curl для каждого кластера с помощью указанной выше команды, но это кажется слишком сложным. Я бы предпочел вообще не входить в ES. Есть идеи получше?