Перейти к содержанию

Установка Helm чартов#

Примеры Helm чартов для каждого сервиса расположены в директории extras/helms/.

Настройка Helm чартов#

Helm чарты из комплекта поставки не подходят для полноценной работы в продуктивном контуре. Необходимо настроить чарты в соответствии со своей бизнес логикой перед их установкой.

Перейдите в директорию с чартами:

cd /var/lib/luna/luna_v.5.67.0/extras/helms/

Настройте в файлах luna-<service-name>/values.yaml все необходимые параметры, особенно обращая внимание на:

  • секцию resources для задания ресурсов (например, CPU и память) для контейнеров сервиса
  • секцию ingress для настройки маршрутизации входящего трафика к сервису
  • параметр pullSecrets в секции image для указания секрета, который будет использоваться при извлечении образа контейнера из реестра (см. "Создание секрета для авторизации в реестре Docker" в разделе "Дополнительная информация").

Примечание. Рекомендуется настроить аннотацию nginx.ingress.kubernetes.io/proxy-body-size к сервису API (или к любому другому сервису, к которому отправляются запросы с изображениями) в зависимости от требований к размеру передаваемых изображений. В Helm чарте сервиса API дан пример использования данной аннотации.

Эти параметры играют важную роль в обеспечении производительности и доступности вашего приложения в продуктивной среде.

Настройка GPU для Remote SDK#

Примечание. Пропустите данный раздел если не собираетесь использовать GPU.

Использование GPU для сервиса Remote SDK включается с помощью передачи соответствующего ключа в секции resources в файле values.yaml соответствующего Helm чарта.

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

resources:
  limits:
    cpu: 5000m
    memory: 10Gi
    nvidia.com/gpu: 1
  requests:
    cpu: 5000m
    memory: 10Gi
    nvidia.com/gpu: 1

Примечание. Также для включения эстимаций/детекций на GPU необходимо задать необходимые настройки (см. "Настройки GPU"). При необходимости можно использовать переменную EXTEND_CMD для передачи тегированных настроек.

env: 
  - name: EXTEND_CMD
    value: " --LUNA_REMOTE_SDK_RUNTIME_SETTINGS gpu"

Настройка доступа для Lambda#

Примечание. Пропустите данный раздел если не собираетесь использовать сервис Lambda.

Для корректной работы сервиса Lambda необходимо правильно настроить доступ к ресурсам Kubernetes, чтобы обеспечить безопасность и эффективное управление сервисом. Это можно сделать, например, путем определения ролей и привязок ролей с помощью механизма управления доступом на основе ролей (RBAC).

Приведенный ниже пример показывает, как настроить доступы с использованием RBAC в Kubernetes для сервиса Lambda:

  • Определите объект типа ServiceAccount, который представляет собой идентификатор, используемый сервисом для взаимодействия с Kubernetes API сервером:
apiVersion: v1
kind: ServiceAccount
metadata:
  name: lambda-user
  • Определите тип объекта Role, который определяет набор разрешений для ресурсов, с которыми ваш сервис будет работать:
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  namespace: production
  name: lambda-admin-role
rules:
- apiGroups: ["", "apps", "networking.k8s.io"]
  resources: ["deployments", "pods", "pods/log", "pods/status", "services", "services/proxy", "ingresses"]
  verbs: ["get", "watch", "list", "create", "delete", "patch"]

Здесь services/proxy означает возможность отправки запросов к ресурсу /lambdas/\{lambda_id\}/proxy сервиса Lambda.

  • Определите тип объекта RoleBinding, который связывает роль с созданным типом ServiceAccount, определяя, какие ресурсы и операции доступны сервису Lambda:
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: admin-lambda
  namespace: production
subjects:
- kind: ServiceAccount
  name: lambda-user
  namespace: production
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: lambda-admin-role

Запуск установки Helm чартов#

Перейдите в директорию с Helm чартами.

cd /var/lib/luna/luna_v.5.67.0/extras/helms

Запустите установку Helm чартов для необходимых сервисов с помощью следующих команд:

helm install --wait --timeout 10m luna-configurator ./luna-configurator
helm install --wait --timeout 10m luna-image-store ./luna-image-store
helm install --wait --timeout 10m luna-licenses ./luna-licenses
helm install --wait --timeout 10m luna-faces ./luna-faces
helm install --wait --timeout 10m luna-events ./luna-events
helm install --wait --timeout 10m luna-python-matcher ./luna-python-matcher
helm install --wait --timeout 10m luna-remote-sdk ./luna-remote-sdk
helm install --wait --timeout 10m luna-handlers ./luna-handlers
helm install --wait --timeout 10m luna-sender ./luna-sender
helm install --wait --timeout 10m luna-tasks-worker ./luna-tasks-worker
helm install --wait --timeout 10m luna-tasks ./luna-tasks
helm install --wait --timeout 10m luna-accounts ./luna-accounts
helm install --wait --timeout 10m luna-lambda ./luna-lambda
helm install --wait --timeout 10m luna-api ./luna-api
helm install --wait --timeout 10m luna-admin ./luna-admin
helm install --wait --timeout 10m luna-backport3 ./luna-backport3
helm install --wait --timeout 10m luna-backport4 ./luna-backport4

Перед запуском сервисов UI 4 и UI 3 необходимо выполнить дополнительные действия в Helm чартах:

  • актуализировать параметр LUNA_API_URL для обоих Helm чартов, который является внутренним адресом Backport 3 и Backport 4 соответственно
  • актуализировать параметр BASIC_AUTH для Helm чарта UI 4, указав данные авторизации для аккаунта типа user в формате login:password, закодированным в Base64

Необходимо предварительно создать аккаунт типа "user" с помощью запроса "create account" к сервису API или с помощью сервиса Admin.

Запустите установку Helm чартов UI 4 и UI 3 с помощью следующих команд:

helm install --wait --timeout 10m luna3-ui ./luna3-ui
helm install --wait --timeout 10m luna4-ui ./luna4-ui

После установки Helm чартов рекомендуется провести тщательное тестирование LUNA PLATFORM в среде, которая соответствует вашим требованиям по производительности и безопасности.