В этой статье разберу установку с минимальными усилиями с использованием Helm и локального однонодового кластера Kubeadm.

Создаём кластер:

Добавляем и обновляем репо с Langfuse:

helm repo add langfuse https://langfuse.github.io/langfuse-k8s
helm repo update

Создаём файл values.override.yaml для переопределения настроек helm-приложения под свои нужды и возможности. Можно не добавлять секцию additionalEnv как в примере, но тогда вручную придётся добавлять пользователя и создавать новый проект. Мне подошли такие значения:

langfuse: 
  salt:
    value: "salt"
  nextauth:
    secret:
      value: "nextauth-secret"
  resources:
    limits:
      cpu: "1"
      memory: "2Gi"
    requests:
      cpu: "1"
      memory: "2Gi"
  web:
    pod:
      additionalEnv:
        - name: LANGFUSE_INIT_ORG_ID
          value: "1"
        - name: LANGFUSE_INIT_ORG_NAME
          value: "example"
        - name: LANGFUSE_INIT_PROJECT_ID
          value: "1"
        - name: LANGFUSE_INIT_PROJECT_NAME
          value: "example proj"
        - name: LANGFUSE_INIT_PROJECT_PUBLIC_KEY
          value: pk-lf-3a1ae631-eb38-4b14-ae81-c0adfe517cab
        - name: LANGFUSE_INIT_PROJECT_SECRET_KEY
          value: sk-lf-a4279b11-2c10-4bad-b9a2-a6e967360869
        - name: LANGFUSE_INIT_USER_EMAIL
          value: admin@example.com
        - name: LANGFUSE_INIT_USER_NAME
          value: admin
        - name: LANGFUSE_INIT_USER_PASSWORD
          value: password
 
postgresql:
  auth:
    username: langfuse
    password: "password"
 
clickhouse:
  auth:
    password: "password"
  resources:
    limits:
      cpu: "1"
      memory: "2Gi"
    requests:
      cpu: "1"
      memory: "2Gi"
 
redis:
  auth:
    password: "password"
  primary:
    resources:
      limits:
        cpu: "0.5"
        memory: "1Gi"
      requests:
        cpu: "0.5"
        memory: "1Gi"
 
s3:
  auth:
    rootPassword: "password"
  resources:
    limits:
      cpu: "1"
      memory: "1Gi"
    requests:
      cpu: "1"
      memory: "1Gi"

zookeeper:
    resources:
      limits:
        cpu: "1"
        memory: "2Gi"
      requests:
        cpu: "1"
        memory: "2Gi"

Выполняем команду установки из папки, где находится yaml-файл:

helm install langfuse langfuse/langfuse -f values.override.yaml

Далее ждём... пока все поды запустятся

Для доступа к ui-интерфейсу пробросим порт:

kubectl port-forward svc/langfuse-web 3333:3000

Логинимся с заранее установленными кредами в переменных LANGFUSE_INIT_USER_EMAIL и LANGFUSE_INIT_USER_PASSWORD:

Для удаления приложения:

helm uninstall langfuse

Важно! После удаления ресурсы Persistent Volume Claims (PVCs) остаются не тронутыми. Поэтому, если заново установить langfuse, в интерфейсе увидим, что данные которые были до удаления никуда не делись.

Для полной очистки выполним дополнительно команду:

kubectl delete pvc -l "app.kubernetes.io/instance=langfuse"

Кстати, при развертывании Langfuse в боевом k8s, я столкнулся с ошибкой запуска компонента langfuse-web, связанной с миграциями в БД ClickHouse: error: Dirty database version XX. Fix and force version. Хотя этот случай даже описан на официальном сайте, я решил проблему проще, переустанавливая приложение с полной очисткой несколько раз, до того момента, когда все миграции наконец прошли и все поды успешно запустились.

Комментарии (0)