• Русский
  • Установка 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 cluster можно использовать PostgreSQL operator, предоставляемый Data Services.

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

    Подготовка Redis (необязательно)

    Redis не обязателен, но рекомендуется для production-сред.

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

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

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

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

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

      3. После создания переключитесь в представление Alauda Container Platform и найдите Service с именем rfr-<Redis instance name>-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 Настройка Storage Class и размера хранилища

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

    label-studio:
      persistence:
        storageClass: storage-class-name
        size: 20Gi                               # Replace with the actual required space size

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

    2.1 Настройка PostgreSQL

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

    global:
      pgConfig:
        host: localhost                          # PostgreSQL access address
        port: 5432                               # PostgreSQL access port, default: 5432
        dbName: labelstudio                      # Database name, note: database will be created automatically
        userName: postgres                       # Database username
        password:
          secretName: postgre-secret             # Secret name storing database access password
          secretKey: password                    # Secret key storing database access password

    2.2 Настройка Redis

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

    global:
      redisConfig:
        host: "redis://your-redis-host:6379/1"    # Redis connection address, format: redis://[:password]@host:port/db
        password:                                 # Optional, password can be included in host or provided separately via Secret
          secretName: "redis-secret"              # Secret name storing Redis access password
          secretKey: "password"                   # Secret key storing Redis password
        ssl:                                      # Optional
          redisSslCertReqs: "optional"            # SSL certificate requirements: "" means not required, "optional", "required"
          redisSslSecretName: "redis-ssl-secret"  # SSL certificate Secret name
          redisSslCaCertsSecretKey: "ca.crt"      # CA certificate Secret key
          redisSslCertFileSecretKey: "tls.crt"    # Client certificate Secret key
          redisSslKeyFileSecretKey: "tls.key"     # Client private key Secret key

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

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

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

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

    label-studio:
      app:
        service:
          type: LoadBalancer                     # Can be changed to NodePort or ClusterIP

    3.2 Включение Ingress

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

    label-studio:
      app:
        ingress:
          enabled: true                          # Enable Ingress functionality
          host: localhost                        # Access domain (must be DNS name, not IP address)
          tls:
            - secretName: certificate-secret     # Secret name storing TLS certificate
    global:
      extraEnvironmentVars:
        LABEL_STUDIO_HOST: https://x.x.x.x       # Web access URL for frontend resource loading

    3.3 Настройка OAuth2 Proxy (необязательно)

    oauth2_proxy:
      enabled: true
      oidcIssuer: "https://x.x.x.com/dex"          # OIDC Issuer address
      oidcClientID: "your-client-id"               # OIDC client ID
      oidcClientSecret: "your-client-secret"       # OIDC client secret (recommended to use Secret)
    
      ingress:                                     # Optional, use ingress to access OAuth2 proxy
        enabled: true                              # Default is false
        host: localhost                            # Access domain, must be set, cannot use IP address, only domain name
        tls:
          - secretName: certificate-secret         # Secret name storing TLS certificate

    Если вы хотите настроить 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                                # Must match oauth2_proxy.oidcClientID in values
    name: Label Studio
    secret: ZXhhbXBsZS1hcHAtc2VjcmV0                # Must match oauth2_proxy.oidcClientSecret in values
    redirectURIs:
    - http://xxx.xxx.xxxx.xxx:xxxxx/*               # OAuth2-Proxy access address, see below for how to obtain
                                                    # If multiple Label Studio instances are deployed, add all access addresses here

    Примечание: адрес доступа 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 доступ также возможен через node IP и соответствующий NodePort.

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

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

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

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

    Примечание:

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