Обновление CHYT
В этой статье описан процесс обновления CHYT. Обновление выполняется с помощью оператора Kubernetes.
Важная информация перед обновлением
При обновлении CHYT кластер YTsaurus продолжает работать в обычном режиме, все операции с данными доступны.
Во время обновления CHYT происходят следующие изменения:
- Кластер YTsaurus продолжает работать в штатном режиме;
- Серверные компоненты YTsaurus не перезапускаются;
- Доступ к данным через YTsaurus API сохраняется;
- CHYT-клики временно недоступны во время обновления;
- Новая версия устанавливается отдельным ресурсом рядом с текущей и не заменяет её, поэтому на кластере одновременно доступны несколько версий CHYT;
- Версией по умолчанию для клик становится последний созданный ресурс.
Перед обновлением CHYT проверьте совместимость версий CHYT, YTsaurus и Strawberry в таблице совместимости.
Важно
Проверьте, что на кластере установлен и настроен strawberry controller. CHYT требует Strawberry для работы.
Доступные версии CHYT и изменения в них описаны в релизах CHYT
Подготовка к обновлению
1. Проверьте текущую версию CHYT
Проверьте текущую версию CHYT в спецификации:
kubectl get chyt -n <namespace> -o yaml | grep image
Пример вывода:
image: ghcr.io/ytsaurus/chyt:2.17.3
2. Проверьте состояние CHYT
Проверьте, что CHYT находится в состоянии Finished:
kubectl get chyt -n <namespace>
Пример вывода:
NAME RELEASESTATUS
<chyt-name> Finished
Если CHYT не находится в состоянии Finished, дождитесь завершения текущих операций.
3. Сохраните резервную копию спецификации CHYT
Сохраните текущую спецификацию CHYT:
kubectl get chyt -n <namespace> -o yaml > chyt-backup.yaml
Обновление CHYT
Оператор не обновляет уже созданный ресурс CHYT. Новую версию добавляют отдельным ресурсом с собственным именем, не трогая существующий. Версией по умолчанию для клик становится последний созданный ресурс с makeDefault: true и после установки они автоматически перейдут на новую версию.
1. Подготовьте спецификацию новой версии CHYT
За основу удобно взять текущую спецификацию CHYT:
kubectl get chyt <chyt-name> -n <namespace> -o yaml
Создайте файл chyt-<new-version>.yaml с новым именем ресурса в поле metadata.name, новой версией образа в поле image и makeDefault: true, чтобы клики по умолчанию использовали новую версию:
apiVersion: cluster.ytsaurus.tech/v1
kind: Chyt
metadata:
name: <new-chyt-name> # Имя, отличное от существующего ресурса
namespace: <namespace>
spec:
image: ghcr.io/ytsaurus/chyt:<new-version>
makeDefault: true
ytsaurus:
name: <ytsaurus-name>
Пример спецификации для версии 2.18.0
apiVersion: cluster.ytsaurus.tech/v1
kind: Chyt
metadata:
name: chyt-2-18-0
namespace: <namespace>
spec:
image: ghcr.io/ytsaurus/chyt:2.18.0
makeDefault: true
ytsaurus:
name: <ytsaurus-name>
2. Примените спецификацию
Примените спецификацию новой версии:
kubectl apply -f chyt-<new-version>.yaml -n <namespace>
Оператор создаст новый ресурс CHYT и загрузит артефакты новой версии в Кипарис. Существующий ресурс и его артефакты остаются на месте.
3. Следите за обновлением
Следите за состоянием CHYT во время обновления:
kubectl get chyt -n <namespace> -w
CHYT проходит через следующие состояния обновления:
|
Статус |
Описание |
|
|
Оператор создаёт пользователя в Кипарисе |
|
|
Оператор загружает файлы в Кипарис |
|
|
Оператор создаёт публичную клику |
|
|
Обновление завершено |
4. Проверьте результат
Убедитесь, что новый ресурс CHYT создан и достиг статуса Finished. Существующий ресурс при этом сохраняется:
kubectl get chyt -n <namespace>
Пример вывода:
NAME RELEASESTATUS
<chyt-name> Finished
<new-chyt-name> Finished
Проверьте версию образа:
kubectl get chyt -n <namespace> -o yaml | grep image
Пример вывода:
image: ghcr.io/ytsaurus/chyt:2.18.0
Несколько версий CHYT на одном кластере
Описанный выше процесс добавляет новую версию CHYT как отдельный ресурс, не затрагивая существующий. Так на одном кластере YTsaurus сосуществуют несколько версий CHYT — каждая со своим образом. Версию по умолчанию для клик задаёт поле makeDefault: если makeDefault: true указано у нескольких ресурсов, дефолтной становится версия из последнего созданного ресурса. Прежний ресурс при этом менять не нужно — он перестаёт быть версией по умолчанию автоматически.
Удаление старой версии CHYT
Когда старая версия CHYT больше не нужна, удалите её ресурс и, при необходимости, освободите место в Кипарисе.
-
Удалите ресурс CHYT:
kubectl delete chyt <old-chyt-name> -n <namespace> -
Удалите бинарные артефакты старой версии из Кипариса через веб-интерфейс YTsaurus. Откройте каталоги
//sys/bin/ytserver-clickhouseи//sys/bin/clickhouse-trampoline, найдите файлы старой версии по дате создания и удалите их из контекстного меню.