Установка Tutorial
Описание
Tutorial — это набор данных и примеры запросов для обучения работе с YTsaurus. Установка осуществляется с помощью helm-chart. Установка данного helm-chart создает на кластере YTsaurus таблицы с демонстрационными данными и загружает примеры запросов в раздел Queries для изучения различных возможностей системы.
Предварительные требования
На данном этапе у вас должны быть:
- Helm 3.x;
- запущенный кластер YTsaurus и адрес HTTP прокси (
http_proxy); - специальный пользователь с выписанным для него токеном (см. раздел Управление токенами);
- работающие Query Tracker и YQL Agent.
Типично, адрес http-proxy имеет шаблонный вид: http://http-proxies.
.svc.cluster.local
Настройка
Подготовка директорий
yt create map_node //home/tutorial
Выдача прав
Назначьте минимально необходимые права (ACL) для пользователя (команды предполагают, что пользователь имеет права на создание таблиц и выполнение запросов):
yt set //home/tutorial/@acl/end '{action=allow; subjects=[robot-tutorial]; permissions=[read; write; create; remove; mount]}'
yt set //sys/tablet_cell_bundles/sys/@acl/end '{subjects=[robot-tutorial];permissions=[use];action=allow}'
yt set //sys/accounts/sys/@acl/end '{action=allow; subjects=[robot-tutorial]; permissions=[use]}'
Предполагается, что вы создали пользователя
robot-tutorial.
Создание Kubernetes Secret с токеном
Создайте секрет с токеном для доступа к YT:
kubectl create secret generic yt-tutorial-secret \
--from-literal=yt-token="<yt**-****-****************>" \
-n <namespace>
По умолчанию чарт ожидает секрет с именем
yt-tutorial-secretи ключомyt-token. Эти значения можно изменить вvalues.yaml(см. секциюtutorial.secret) или переопределить через--set.
Установка Helm‑чарта
Типично, установку можно осуществить так:
helm install oci://ghcr.io/ytsaurus/tutorial-chart \
--version 0.0.2 \
ytsaurus-tutorial \
--set tutorial.args.proxy="http://http-proxies.default.svc.cluster.local" \
-n <namespace>
Список всех доступных параметров для переопределения как через --set, так и через values.yaml
tutorial:
secret:
name: "yt-tutorial-secret"
value: "yt-token"
args:
proxy: "http-proxies.default.svc.cluster.local"
ytDirectory: "//home/tutorial"
nomenclatureCount: 5000
daysToGenerate: 14
desiredOrderSize: 3000
force: true
Пояснения к параметрам:
tutorial.secret.name— имя Kubernetes Secret с токеном доступа к YT;tutorial.secret.value— ключ в секрете, содержащий токен;tutorial.args.proxy— адрес HTTP‑прокси YTsaurus (внутри кластера Kubernetes или внешний адрес);tutorial.args.ytDirectory— директория в YTsaurus, где будут созданы таблицы туториала (по умолчанию//home/tutorial);tutorial.args.nomenclatureCount— количество записей для генерации (по умолчанию5000). Влияет на размер таблицыnomenclature;tutorial.args.daysToGenerate— количество дней данных для генерации в таблицахpricesиorders(по умолчанию14);tutorial.args.desiredOrderSize— желаемое количество строк в таблицеorders(по умолчанию3000);tutorial.args.force— принудительная перезапись существующих таблиц (по умолчаниюtrue).
Проверки после установки
- Статус Init Job:
kubectl get jobs -n <namespace> | grep tutorial
- Логи Init Job:
kubectl logs job/ytsaurus-tutorial-tutorial-chart-init -n <namespace> --tail=200
- Проверка созданных таблиц в YTsaurus:
yt list //home/tutorial
Обновление и удаление
Обновление конфигурации:
helm upgrade ytsaurus-tutorial oci://ghcr.io/ytsaurus/tutorial-chart \
--version <new_version> \
-f values.yaml \
-n <namespace>
При обновлении Init Job будет запущена заново (если
force: true, существующие таблицы будут перезаписаны).
Удаление релиза:
helm uninstall ytsaurus-tutorial -n <namespace>
Внимание: Удаление Helm-чарта не удаляет созданные таблицы в YTsaurus. Если необходимо удалить данные туториала, выполните:
yt remove //home/tutorial
Типичные ошибки и диагностика
- Неверный адрес
proxy: ошибки соединения в логах Init Job. Проверьте DNS‑имя сервиса, namespace и доступность HTTP‑прокси YTsaurus; - Проблемы с токеном: 401/403 в логах. Убедитесь, что переменная окружения ссылается на корректный ключ из секрета и ACL выданы пользователю-роботу;
- Недостаточные ACL: операции
create/removeзавершаются ошибкой. Пересмотрите выдачу прав на//home/tutorial; - Директория не пуста: если
force: falseи директорияytDirectoryне пуста, Init Job завершится с ошибкой. Установитеforce: trueили очистите директорию вручную.
Пример быстрой самопроверки токена вне Helm
curl -sS -H "Authorization: OAuth $YT_TOKEN" http://http-proxies.default.svc.cluster.local/auth/whoami
Примечания по безопасности
- Ограничивайте права пользователя-робота принципом наименьших привилегий; выдавайте права только на необходимые директории;
- Ротируйте токены по внутренним политикам и своевременно обновляйте секреты (через
kubectl apply -fилиkubectl create secret ... --dry-run=client -o yaml | kubectl apply -f -).