sqaisar/langfuse-controller-helm

By sqaisar

Updated 8 months ago

Helm chart for Langfuse Kubernetes Controller. Deploy and manage Langfuse resources via CRDs.

Artifact
Helm
Image
Integration & delivery
Developer tools
Data science
0

211

sqaisar/langfuse-controller-helm repository overview

langfuse-controller-helm

Artifact Hub

A Helm chart for deploying the Langfuse Kubernetes Controller, which manages Langfuse resources via Custom Resource Definitions (CRDs).

Introduction

This chart deploys the Langfuse Kubernetes Controller, enabling you to manage Langfuse projects, API keys, models, LLM connections, prompts, and score configurations declaratively using Kubernetes manifests.

Features

  • Declarative Management: Manage Langfuse resources using Kubernetes manifests
  • GitOps Ready: Full support for GitOps workflows (ArgoCD, Flux, etc.)
  • Automatic Secret Management: API keys automatically stored in Kubernetes Secrets
  • Production Ready: Includes RBAC, service accounts, and resource limits

Prerequisites

  • Kubernetes 1.28+
  • Helm 3.x
  • Langfuse Admin API key

Installation

Add the Helm repository
helm repo add langfuse-controller https://sqaisar.github.io/langfuse-controller
helm repo update
Install the chart
helm install langfuse-controller langfuse-controller/langfuse-controller-helm \
  --set langfuse.host="https://cloud.langfuse.com" \
  --set langfuse.adminApiKey="your-admin-api-key" \
  --namespace langfuse-controller \
  --create-namespace
Install using existing secret

If you prefer to store the API key in a Kubernetes Secret:

# Create the secret
kubectl create secret generic langfuse-admin-api-key \
  --from-literal=LANGFUSE_ADMIN_API_KEY="your-admin-api-key" \
  --namespace langfuse-controller

# Install with existing secret
helm install langfuse-controller langfuse-controller/langfuse-controller-helm \
  --set langfuse.host="https://cloud.langfuse.com" \
  --set langfuse.existingSecret="langfuse-admin-api-key" \
  --namespace langfuse-controller \
  --create-namespace

Configuration

The following table lists the configurable parameters and their default values:

ParameterDescriptionDefault
image.repositoryContainer image repositorysqaisar/langfuse-controller
image.pullPolicyImage pull policyIfNotPresent
image.tagContainer image taglatest
imagePullSecretsImage pull secrets[]
nameOverrideOverride the name of the chart""
fullnameOverrideOverride the full name of the chartlangfuse-controller
watchNamespacesList of namespaces to watch (empty = all namespaces)[]
serviceAccount.createCreate a service accounttrue
serviceAccount.annotationsService account annotations{}
serviceAccount.nameService account name""
podAnnotationsPod annotations{}
podSecurityContextPod security context{}
securityContextContainer security context{}
resources.limits.cpuCPU limit500m
resources.limits.memoryMemory limit128Mi
resources.requests.cpuCPU request10m
resources.requests.memoryMemory request64Mi
nodeSelectorNode selector{}
tolerationsTolerations[]
affinityAffinity rules{}
langfuse.hostLangfuse API endpointhttps://cloud.langfuse.com
langfuse.adminApiKeyLangfuse Admin API key""
langfuse.existingSecretName of existing secret with LANGFUSE_ADMIN_API_KEY""

Usage Examples

Basic Installation
helm install langfuse-controller langfuse-controller/langfuse-controller-helm \
  --set langfuse.host="https://cloud.langfuse.com" \
  --set langfuse.adminApiKey="sk-..."
Custom Image Tag
helm install langfuse-controller langfuse-controller/langfuse-controller-helm \
  --set image.tag="v0.1.0" \
  --set langfuse.host="https://cloud.langfuse.com" \
  --set langfuse.adminApiKey="sk-..."
Watch Specific Namespaces
helm install langfuse-controller langfuse-controller/langfuse-controller-helm \
  --set watchNamespaces[0]="default" \
  --set watchNamespaces[1]="production" \
  --set langfuse.host="https://cloud.langfuse.com" \
  --set langfuse.adminApiKey="sk-..."
Custom Resource Limits
helm install langfuse-controller langfuse-controller/langfuse-controller-helm \
  --set resources.limits.cpu="1000m" \
  --set resources.limits.memory="256Mi" \
  --set resources.requests.cpu="100m" \
  --set resources.requests.memory="128Mi" \
  --set langfuse.host="https://cloud.langfuse.com" \
  --set langfuse.adminApiKey="sk-..."

Managing Langfuse Resources

After installing the controller, you can create Langfuse resources using Kubernetes manifests:

Create a Langfuse Project
apiVersion: langfuse.io/v1alpha1
kind: LangfuseProject
metadata:
  name: my-project
spec:
  name: "My Project"
Create an API Key
apiVersion: langfuse.io/v1alpha1
kind: LangfuseAPIKey
metadata:
  name: my-api-key
spec:
  projectRef: my-project
  name: "production-key"
  secretName: langfuse-credentials

The controller will automatically:

  1. Create the project in Langfuse
  2. Generate an API key
  3. Store the credentials in a Kubernetes Secret named langfuse-credentials

Supported CRDs

  • LangfuseProject - Langfuse projects
  • LangfuseAPIKey - Project API keys (with Secret creation)
  • LangfuseModel - Model definitions and pricing
  • LangfuseLlmConnection - LLM provider connections
  • LangfusePrompt - Prompt templates
  • LangfuseScoreConfig - Score configurations

Upgrading

helm upgrade langfuse-controller langfuse-controller/langfuse-controller-helm \
  --set langfuse.host="https://cloud.langfuse.com" \
  --set langfuse.adminApiKey="your-admin-api-key"

Uninstallation

helm uninstall langfuse-controller --namespace langfuse-controller

Troubleshooting

Check controller logs
kubectl logs -n langfuse-controller deployment/langfuse-controller
Verify CRDs are installed
kubectl get crds | grep langfuse.io
Check controller status
kubectl get pods -n langfuse-controller

License

Apache License 2.0

Support

Tag summary

Content type

Helm

Digest

sha256:4e31d696c

Size

8.6 kB

Last updated

8 months ago

helm pull oci://registry-1.docker.io/sqaisar/langfuse-controller-helm --version v1.0.6