• Русский
  • Установка Label Studio

    В этом документе приведены подробные инструкции по развертыванию Label Studio в кластере Kubernetes и основные параметры конфигурации.

    Загрузка

    Скачайте установочный файл Label Studio: label-studio.ALL.xxxx.tgz

    Используйте команду violet для публикации в репозиторий платформы:

    violet push --platform-address=platform-access-address --platform-username=platform-admin --platform-password=platform-admin-password label-studio.ALL.xxxx.tgz

    Развертывание

    Подготовка хранилища

    Label Studio хранит данные в базе данных и требует постоянное хранилище. В кластере должен быть предварительно установлен CSI или подготовлен PersistentVolume.

    Подготовка базы данных

    Label Studio поддерживает следующие базы данных:

    • PostgreSQL: версия 13 и выше

    Для создания кластера PostgreSQL можно использовать PostgreSQL operator, предоставляемый Data Services.

    Проверьте адрес доступа и пароль в деталях экземпляра PostgreSQL в Data Services.

    Подготовка Redis (опционально)

    Redis не обязателен, но рекомендуется для производственных сред.

    Для создания экземпляра Redis можно использовать Data Services.

    Примечание: Label Studio поддерживает доступ к Redis только в режиме standalone.

    • Создание Redis в режиме standalone:

      1. При создании экземпляра Redis выберите Redis Sentinel в поле Architecture.

      2. После настройки всех параметров переключитесь в режим YAML, измените spec.arch на standalone, затем нажмите кнопку Create.

      3. После создания переключитесь в представление Alauda Container Platform и найдите Service с именем rfr-<имя экземпляра Redis>-read-write — это адрес доступа к данному экземпляру Redis.

    Создание приложения

    1. Перейдите в представление Alauda Container Platform и выберите namespace, в котором будет развернут Label Studio.

    2. В левом меню выберите Applications / Applications, затем нажмите кнопку Create справа на странице.

    3. В появившемся диалоговом окне выберите Create from Catalog, после чего страница перейдет в представление Catalog.

    4. Найдите 3rdparty/chart-label-studio и нажмите Create для создания этого приложения.

    5. В форме Catalog / Create label-studio заполните поле Name (рекомендуется label-studio) и настройте Custom конфигурацию в Values, затем нажмите кнопку Create для завершения создания. Содержимое Custom описано ниже. Его также можно изменить после создания через метод Update приложения.

    Конфигурация

    Пользователи могут изменять Custom Values приложения для настройки. Основные параметры конфигурации:

    1. Настройка хранилища

    1.1 Настройка класса хранилища и размера

    Класс хранилища можно указать, добавив следующую конфигурацию:

    label-studio:
      persistence:
        storageClass: storage-class-name
        size: 20Gi                               # Замените на фактический необходимый размер

    2. Настройка базы данных

    2.1 Настройка PostgreSQL

    Информацию для доступа к PostgreSQL можно настроить, задав следующие поля:

    global:
      pgConfig:
        host: localhost                          # Адрес доступа к PostgreSQL
        port: 5432                               # Порт доступа к PostgreSQL, по умолчанию: 5432
        dbName: labelstudio                      # Имя базы данных, база создается автоматически
        userName: postgres                       # Имя пользователя базы данных
        password:
          secretName: postgre-secret             # Имя секрета, хранящего пароль доступа к базе
          secretKey: password                    # Ключ секрета, хранящий пароль доступа к базе

    2.2 Настройка Redis

    Информацию для доступа к Redis можно настроить, задав следующие поля:

    global:
      redisConfig:
        host: "redis://your-redis-host:6379/1"    # Адрес подключения к Redis, формат: redis://[:password]@host:port/db
        password:                                 # Опционально, пароль можно указать в host или отдельно через Secret
          secretName: "redis-secret"              # Имя секрета, хранящего пароль доступа к Redis
          secretKey: "password"                   # Ключ секрета, хранящий пароль Redis
        ssl:                                      # Опционально
          redisSslCertReqs: "optional"            # Требования к SSL-сертификату: "" — не требуется, "optional", "required"
          redisSslSecretName: "redis-ssl-secret"  # Имя секрета SSL-сертификата
          redisSslCaCertsSecretKey: "ca.crt"      # Ключ секрета CA-сертификата
          redisSslCertFileSecretKey: "tls.crt"    # Ключ секрета клиентского сертификата
          redisSslKeyFileSecretKey: "tls.key"     # Ключ секрета приватного ключа клиента

    3. Настройка метода доступа

    По умолчанию используется LoadBalancer для предоставления адреса доступа.

    3.1 Изменение типа Service

    Тип Service можно изменить, задав следующие поля:

    label-studio:
      app:
        service:
          type: LoadBalancer                     # Можно изменить на NodePort или ClusterIP

    3.2 Включение Ingress

    Ingress можно настроить, задав следующие поля. После включения Ingress обычно меняют тип Service на ClusterIP:

    label-studio:
      app:
        ingress:
          enabled: true                          # Включить функциональность Ingress
          host: localhost                        # Домен доступа (должен быть DNS-именем, не IP)
          tls:
            - secretName: certificate-secret     # Имя секрета, хранящего TLS-сертификат
    global:
      extraEnvironmentVars:
        LABEL_STUDIO_HOST: https://x.x.x.x       # URL веб-доступа для загрузки фронтенд-ресурсов

    3.3 Настройка OAuth2 Proxy (опционально)

    oauth2_proxy:
      enabled: true
      oidcIssuer: "https://x.x.x.com/dex"          # Адрес OIDC Issuer
      oidcClientID: "your-client-id"               # ID клиента OIDC
      oidcClientSecret: "your-client-secret"       # Секрет клиента OIDC (рекомендуется использовать Secret)
    
      ingress:                                     # Опционально, использовать ingress для доступа к OAuth2 proxy
        enabled: true                              # По умолчанию false
        host: localhost                            # Домен доступа, обязательно должен быть установлен, нельзя использовать IP, только доменное имя
        tls:
          - secretName: certificate-secret         # Имя секрета, хранящего TLS-сертификат

    Если вы хотите настроить Alauda Container Platform в качестве OIDC Provider, настройте следующим образом:

    • oauth2_proxy.oidcIssuer — адрес доступа к платформе с добавлением /dex
    • oauth2_proxy.oidcClientID — фиксированное значение label-studio
    • oauth2_proxy.oidcClientSecret — фиксированное значение ZXhhbXBsZS1hcHAtc2VjcmV0

    Также необходимо создать ресурс OAuth2Client в глобальном кластере для настройки клиентской информации Label Studio:

    apiVersion: dex.coreos.com/v1
    kind: OAuth2Client
    metadata:
      name: nrqwezlmfvzxi5lenfx4x4u44scceizf
      namespace: cpaas-system
    id: label-studio                                # Должно совпадать с oauth2_proxy.oidcClientID в values
    name: Label Studio
    secret: ZXhhbXBsZS1hcHAtc2VjcmV0                # Должно совпадать с oauth2_proxy.oidcClientSecret в values
    redirectURIs:
    - http://xxx.xxx.xxxx.xxx:xxxxx/*               # Адрес доступа OAuth2-Proxy, см. ниже, как получить
                                                    # Если развернуто несколько экземпляров Label Studio, добавьте все адреса доступа сюда

    Примечание: Адрес доступа к OAuth2 proxy можно получить из Service <Application Name>-oauth2-proxy, используйте соответствующий метод доступа в зависимости от типа Service.

    4. Настройка управления пользователями

    4.1 Отключение регистрации пользователей

    Регистрацию пользователей можно отключить, задав следующие поля:

    global:
      extraEnvironmentVars:
        LABEL_STUDIO_DISABLE_SIGNUP_WITHOUT_LINK: true

    Адрес доступа

    1. Доступ через Service

    Label Studio предоставляет внешний доступ через Service. Проверьте его Service, чтобы получить адрес доступа.

    • Если OAuth2 proxy не включен, имя Service: <Application Name>-ls-app
    • Если OAuth2 proxy включен, имя Service: <Application Name>-oauth2-proxy

    Если тип ServiceLoadBalancer и контроллер балансировщика нагрузки в среде назначил адрес доступа, используйте этот адрес.

    Для типов Service LoadBalancer или NodePort доступ также возможен через IP узла и соответствующий NodePort.

    2. Доступ через Ingress

    Если Ingress включен, используйте настроенный LABEL_STUDIO_HOST для доступа.

    Управление пользователями

    В Label Studio нет имени пользователя и пароля по умолчанию. Пользователи могут зарегистрироваться, заполнив email и пароль на странице входа.

    Примечание:

    • По умолчанию любой может зарегистрировать нового пользователя
    • Все пользователи имеют одинаковые функциональные права и доступ ко всем проектам
    • Чтобы ограничить регистрацию пользователей, настройте переменную окружения LABEL_STUDIO_DISABLE_SIGNUP_WITHOUT_LINK=true, см.: 4.1 Отключение регистрации пользователей