Настройка доступа к Object Storage из кластера Elasticsearch
Важно
Сервис Yandex Managed Service for Elasticsearch недоступен с 11 апреля 2024 года.
Вы можете создать кластер OpenSearch в Yandex Cloud в качестве альтернативы Elasticsearch.
Managed Service for Elasticsearch поддерживает работу с Yandex Object Storage в качестве репозитория снапшотов Elasticsearch. Это позволяет использовать Object Storage:
-
для переноса данных из стороннего кластера Elasticsearch в Managed Service for Elasticsearch;
-
для добавления пользовательских расширений;
Подробнее о механизме снапшотов см. в документации Elasticsearch
Для доступа к данным в бакете Object Storage из кластера:
Подключить сервисный аккаунт к кластеру
-
При создании или изменении кластера выберите существующий сервисный аккаунт, либо создайте новый.
-
Убедитесь, что этому аккаунту назначена роль
storage.editor
или выше.
Настроить права доступа
- В консоли управления
выберите каталог, в котором хранится нужный бакет. Если бакета не существует — создайте его. - Выберите сервис Object Storage.
- Выберите вкладку Бакеты.
- Настройте ACL бакета:
- В выпадающем списке Выберите пользователя укажите сервисный аккаунт, подключенный к кластеру.
- Задайте разрешения
READ и WRITE
для выбранного сервисного аккаунта. - Нажмите кнопку Добавить.
- Нажмите кнопку Сохранить.
Подключить репозиторий снапшотов
Внимание
Если бакет зарегистрирован в кластере Elasticsearch как репозиторий снапшотов, не изменяйте содержимое бакета вручную — это нарушит работу механизма снапшотов Elasticsearch.
-
Подключитесь к кластеру.
-
Установите плагин repository-s3:
sudo bin/elasticsearch-plugin install repository-s3
-
Зарегистрируйте бакет как репозиторий снапшотов, используя публичный API Elasticsearch
:PUT --cacert ~/.elasticsearch/root.crt https://admin:<пароль>@<FQDN_хоста>:9200/_snapshot/<репозиторий>
В параметрах запроса укажите бакет, связанный с сервисным аккаунтом кластера:
curl --request PUT \ "https://admin:<пароль>@<FQDN_хоста>:9200/_snapshot/<репозиторий>" \ --cacert ~/.elasticsearch/root.crt \ --header "Content-Type: application/json" \ --data '{ "type": "s3", "settings": { "endpoint": "storage.yandexcloud.net", "bucket": "<имя_бакета>", "base_path": "<путь_к_каталогу_для_снапшотов>", "canned_acl": "bucket-owner-full-control" } }'
Подробнее об управлении репозиториями см. в документации Elasticsearch
.