Быстрый старт
Эта страница посвящена пользовательскому ресурсу FeatureStore, который является основным интерфейсом для развертывания и настройки Feast после установки оператора.
Содержание
Предварительные требованияОбзор CR FeatureStoreОбщая конфигурация servicesOffline StoreOnline StoreRegistryUIТиповые шаблоны persistenceКонфигурация на основе PVCRedis Online Store + SQL RegistryPostgreSQL Online Store + SQL RegistryRegistry в Object StorageПримечания по SecretsИнициализация Feature RepositoryИнициализация по умолчаниюInit TemplateGit RepositoryРазвертывание FeatureStoreServices и доступИспользование Feast SDK и CLIСтруктура repositoryПример определений featureCLIНастройка авторизацииКонфигурация токена для SDKДополнительные материалыПредварительные требования
- Feast Operator установлен. См. Install Feast.
- Для примеров с PVC в кластере должен быть задан
StorageClassпо умолчанию, либо целевое значениеstorageClassNameдолжно быть известно заранее. - Для внешних backend вместо файлового хранилища на основе PVC заранее подготовьте необходимые службы:
- Рекомендуется PostgreSQL 16. PostgreSQL используется для SQL registry и, при необходимости, для PostgreSQL online store.
- Рекомендуется Redis 6.0 или более поздняя версия. Redis используется для Redis online store. Feast поддерживает один экземпляр Redis, Redis Cluster и Redis Sentinel.
- Подготовьте Kubernetes Secrets, содержащие параметры подключения к backend, до того, как на них будут ссылаться из CR
FeatureStore.
Для примеров PostgreSQL и Redis на этой странице предполагается, что backend service, база данных или schema, учетные данные и Kubernetes Secrets уже существуют. Тем не менее, в целевом кластере все равно следует проверить сетевую доступность и совместимость драйверов.
Обзор CR FeatureStore
Наиболее часто используемые поля в CR FeatureStore:
Общая конфигурация services
Offline Store
offlineStore управляет тем, где хранятся исторические данные feature и будет ли доступен удаленный offline server.
Основные варианты:
persistence.file: файловое хранилище, обычно DuckDB на PVC, подходит для локальной разработки и оценкиpersistence.store: внешний offline backend, например BigQuery или другой поддерживаемый Feast offline storeserver: {}: создает Service удаленного offline server для сетевого доступа
Пример DuckDB на PVC:
Пример на основе store:
Online Store
onlineStore используется для низколатентного предоставления feature.
Основные варианты:
persistence.file: локальное файловое хранилище, обычно только для разработкиpersistence.store: Redis, PostgreSQL или другой поддерживаемый Feast backend для online storeserver: необязательные дополнительные настройки сервера, такие какenv,envFrom,resources,tlsилиvolumeMounts
Рекомендуемые версии backend для примеров на этой странице:
- Redis 6.0 или более поздняя версия
- PostgreSQL 16
Пример с файлом на PVC:
Пример на Redis:
Пример на PostgreSQL:
Registry
registry хранит метаданные Feast. Он может быть локальным для текущего FeatureStore или повторно использовать удаленный registry.
Основные варианты:
registry.local.persistence.file: файловый registry на PVC или в object storageregistry.local.persistence.store: registry на основе SQLregistry.local.server: {}: предоставляет registry server для удаленного доступаregistry.remote: повторно использует registry из другогоFeatureStoreили внешний hostname
Для примеров registry на основе SQL на этой странице рекомендуется PostgreSQL 16.
Пример registry на PVC:
Пример registry на SQL:
Пример с удаленным registry:
UI
Чтобы включить Feast UI, задайте:
Без ui: {} Service UI не создается.
Типовые шаблоны persistence
Конфигурация на основе PVC
Это самый простой шаблон для оценки, локального тестирования и развертываний с одной репликой:
Redis Online Store + SQL Registry
Это распространенный шаблон для устойчивого online store и registry на базе базы данных.
Сначала создайте Secret:
Затем укажите на него в FeatureStore:
PostgreSQL Online Store + SQL Registry
Для PostgreSQL в качестве backend online store Secret может содержать как postgres, так и sql записи:
Затем используйте:
Registry в Object Storage
Файл registry также можно разместить в S3 или GCS:
Примечания по Secrets
Когда используется persistence.store, оператор считывает параметры backend из Kubernetes Secret.
Важные моменты:
- по умолчанию имя ключа Secret совпадает с настроенным
type - для
type: redisоператор читает ключredis - для
type: postgresоператор читает ключpostgres - для
type: sqlоператор читает ключsql - при необходимости имя ключа можно переопределить с помощью
secretKeyName
Содержимое Secret должно соответствовать стилю конфигурации backend, используемому в feature_store.yaml, но без самого поля type backend.
Инициализация Feature Repository
Оператор может инициализировать feature repository тремя распространенными способами.
Инициализация по умолчанию
Если spec.feastProjectDir не задан, оператор выполняет стандартный feast init <project> и создает repository по пути:
Init Template
Шаблон инициализации можно использовать, когда оператор должен развернуть определенный шаблон Feast:
Git Repository
Git можно использовать, если определения feature уже хранятся в системе контроля версий:
Если feature repository расположен не в стандартном подкаталоге feature_repo, задайте featureRepoPath.
Развертывание FeatureStore
Примените пример на основе PVC:
Основное поле готовности — status.phase. Когда развертывание готово, это поле принимает значение Ready.
Проверить его напрямую можно так:
Services и доступ
Оператор записывает информацию о подключении в status FeatureStore:
Оператор создает имена Service по шаблону feast-<featurestore-name>-<component>. Распространенные примеры:
feast-<featurestore-name>-onlinefeast-<featurestore-name>-offlinefeast-<featurestore-name>-registryfeast-<featurestore-name>-ui
Сгенерированный clientConfigMap содержит клиентский feature_store.yaml для текущего развертывания FeatureStore. Конфигурация хранится под ключом feature_store.yaml и может быть напрямую загружена клиентами Feast, включая Python-приложения и задания внутри кластера.
Типовые способы доступа:
- использовать сгенерированные имена Service внутри кластера
- использовать сгенерированный client ConfigMap как конфигурацию клиента Feast
- публиковать Services через метод доступа, используемый в целевой среде
Если требуется сетевой доступ к offline server или registry server, в CR следует задать offlineStore.server: {} или registry.local.server: {}.
Использование Feast SDK и CLI
Определения feature обычно хранятся вне workload FeatureStore, в локальном repository, Git repository, CI job или другом workflow на основе SDK. Сгенерированный клиентский feature_store.yaml используется для подключения Feast CLI или Python SDK к развернутым службам.
Когда feast apply запускается из клиентской среды, registry service должен быть доступен из Feast client. Для локального режима registry, используемого на этой странице, задайте:
Если также требуется удаленная materialization или удаленное получение historical data, откройте и offline server:
Структура repository
Подготовьте feature repository в окружении Feast client и поместите в этот repository сгенерированную клиентскую конфигурацию как feature_store.yaml. Конфигурация может быть прочитана из ConfigMap, имя которого указано в .status.clientConfigMap.
Пример структуры repository:
Корень repository — это каталог, содержащий feature_store.yaml.
Один и тот же корень repository используется как Feast CLI, так и Python SDK. Для кода Python загрузите его так:
Пример определений feature
Следующий пример определяет одну entity, один файловый batch source, two feature views, one push source и one feature service. Вместе эти объекты достаточно, чтобы продемонстрировать регистрацию, online serving, materialization и push-обновления в одном repository.
driver_stats_source читает batch-данные из data/driver_stats.parquet. driver_hourly_stats предоставляет эти поля для обычной materialization batch-to-online. driver_stats_push_source и driver_hourly_stats_fresh показывают, как та же entity может также получать свежие значения через push. driver_activity_v1 группирует feature view в повторно используемое serving-определение.
Пример файла с определениями feature:
CLI
Запускайте feast apply из корневого каталога feature repository. В примере выше команда выполняется в <feature-repo>, а не в подкаталоге data/.
feast apply читает feature_store.yaml из корня repository и рекурсивно сканирует Python-файлы в этом repository. Если определения feature хранятся в подкаталогах, команду все равно следует запускать из корня repository, если только эти файлы находятся внутри repository и не исключены через .feastignore.
Если команда запускается из другого рабочего каталога, явно укажите repository:
Форма по умолчанию:
Настройка авторизации
Авторизация на основе Kubernetes в Feast состоит из трех частей:
- Объявите имена ролей в CR
FeatureStore. - Определите объекты Feast
Permissionв feature repository, используя те же имена ролей. - Свяжите пользователей Kubernetes или ServiceAccounts с этими ролями с помощью
RoleBinding.
Одного лишь объявления feast-reader и feast-writer в CR FeatureStore и привязки subjects к этим ролям недостаточно. Решения Feast по авторизации также требуют соответствующих определений Permission в feature repository.
Пример фрагмента FeatureStore:
Пример определений Permission в feature repository:
После добавления или обновления объектов Permission выполните feast apply, чтобы метаданные авторизации были зарегистрированы в Feast.
Пример конфигурации RoleBinding:
Создайте пример токенов ServiceAccount:
Если требуется пользовательское время жизни токена, добавьте --duration к команде.
Конфигурация токена для SDK
Когда включен authz.kubernetes, Feast Python client автоматически отправляет токен как bearer token. Для клиентов, работающих в том же кластере с подключенным токеном ServiceAccount, обычно не требуется дополнительная настройка SDK.
Для внешних клиентов укажите токен одним из следующих способов:
- задайте
authz_config.user_tokenвfeature_store.yaml - задайте переменную окружения
LOCAL_K8S_TOKEN
Пример фрагмента feature_store.yaml:
Пример переменной окружения:
Дополнительные материалы
Для end-to-end рабочих процессов Feast и более широкого использования продукта продолжите изучение официальной документации Feast:
- Concepts: основные объекты Feast и модель данных
- Architecture: модель развертывания, пути retrieval и шаблоны serving
- Quickstart: end-to-end локальный workflow с использованием SDK
- Sample use-case tutorials: обучающие материалы по сценариям для типовых ML workflows
- Running Feast in production: production-паттерны и рекомендации по эксплуатации