• Русский
  • Установка 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 Отключение регистрации пользователей