On this page
Helm Chart
The LiteFunctions Helm chart simplifies deployment of the entire platform to Kubernetes. It includes all necessary components and dependencies.
Quick Start
Prerequisites
- Kubernetes cluster (v1.24+)
- Helm CLI (v3.0+)
- kubectl CLI
- Cluster admin access (for CRD installation)
Installation
# Install from OCI registry
helm install litefunctions oci://registry-1.docker.io/ashupednekar535/litefunctions
# Or install from local directory
helm install litefunctions ./chartVerify Installation
# Wait for all pods to be ready
kubectl wait --for=condition=ready pod -l app.kubernetes.io/name=litefunctions --timeout=300s
# Check all resources
kubectl get all,crd -l app.kubernetes.io/name=litefunctions
# Get the release status
helm status litefunctionsConfiguration
Default Values
The chart comes with sensible defaults, but you can customize it by creating a values.yaml file:
redis:
enabled: true
operator:
registry: localhost:30050
vcs_user: ashudev
ingestor:
nats_url: litefunctions-nats:4222
database:
enabled: true
postgresVersion: 16
pgBouncerReplicas: 1
instanceReplicas: 2
instanceVolumeSize: 4GiInstall with Custom Values
helm install litefunctions ./chart -f values.yamlConfiguration Options
Core Components
Images
images:
ingestor: ashupednekar535/litefunctions-ingestor:latest
operator: ashupednekar535/litefunctions-operator:latestOperator Settings
operator:
registry: localhost:30050 # Container registry for function images
vcs_user: ashudev # VCS user for Git operations
# Additional settings default in operator managerIngestor Settings
ingestor:
nats_url: litefunctions-nats:4222 # NATS connection URLDependencies
NATS (Message Broker)
nats:
enabled: true
natsBox:
enabled: false
config:
cluster:
enabled: true
replicas: 3
jetstream:
enabled: true
fileStore:
enabled: true
pvc:
enabled: true
size: 4GiRedis/Valkey (Cache)
redis:
enabled: true
valkey-cluster:
enabled: true
global:
security:
allowInsecureImages: true
auth:
enabled: true
password: valkeyadminPostgreSQL (Database)
database:
enabled: true
postgresVersion: 16
pgBouncerReplicas: 1
instanceReplicas: 2
instanceVolumeSize: 4Gi
initialSchemas:
- gitea
- lwsportalMinIO (Object Storage)
minio:
enabled: false
global:
security:
allowInsecureImages: true
image:
repository: bitnamilegacy/minio
auth:
rootUser: ashudev
rootPassword: minioadmin
mode: standalone
defaultBuckets: content
persistence:
enabled: true
size: 15Gi
ingress:
enabled: true
ingressClassName: nginx
hostname: lws.ashudev.in
path: /content
pathType: Prefix
tls: true
annotations:
cert-manager.io/cluster-issuer: letsencryptGitea (Git Server)
gitea:
enabled: true
service:
http:
type: NodePort
nodePort: 30080
ssh:
type: NodePort
nodePort: 30022
postgresql-ha:
enabled: false
postgresql:
enabled: false
valkey-cluster:
enabled: false
gitea:
admin:
username: ashudev
password: gitadmin
email: gitea@ashudev.in
config:
actions:
enabled: true
packages:
enabled: true
server:
ROOT_URL: "http://litefunctions-gitea-http.litefunctions.svc.cluster.local:3000/"
DOMAIN: "litefunctions-gitea-http.litefunctions.svc.cluster.local"
registry:
enabled: false
database:
DB_TYPE: postgres
NAME: litefunctions
SCHEMA: gitea
SSL_MODE: require
HOST: "litefunctions-pgbouncer.litefunctions.svc"
additionalConfigFromEnvs:
- name: GITEA__DATABASE__HOST
valueFrom:
secretKeyRef:
key: host
name: litefunctions-pguser-litefunctions
- name: GITEA__DATABASE__PASSWD
valueFrom:
secretKeyRef:
key: password
name: litefunctions-pguser-litefunctions
- name: GITEA__DATABASE__NAME
valueFrom:
secretKeyRef:
key: dbname
name: litefunctions-pguser-litefunctions
- name: GITEA__DATABASE__USER
valueFrom:
secretKeyRef:
key: user
name: litefunctions-pguser-litefunctions
ingress:
enabled: false
tls: []
hosts:
- host: git.ashudev.in
paths:
- path: /
className: nginx
annotations:
cert-manager.io/cluster-issuer: letsencryptActions (CI/CD)
actions:
enabled: true
giteaRootURL: http://litefunctions-gitea-http:3000
existingSecret: litefunctions-registration-token
existingSecretKey: tokenZot (Container Registry)
zot:
service:
nodePort: 30050Web UI
ui:
enabled: false
server:
db:
secret: litefunctions-pguser-litefunctionsAdvanced Usage
Upgrading
# Check for updates
helm repo update
helm search repo litefunctions
# Upgrade to latest version
helm upgrade litefunctions litefunctions/litefunctions
# Upgrade with custom values
helm upgrade litefunctions ./chart -f values.yamlRolling Back
# View release history
helm history litefunctions
# Rollback to previous version
helm rollback litefunctions
# Rollback to specific revision
helm rollback litefunctions <revision>Uninstalling
# Delete the release
helm uninstall litefunctions
# Delete all remaining resources
kubectl delete namespace litefunctionsResource Management
Setting Resource Limits
operator:
resources:
limits:
cpu: 1000m
memory: 512Mi
requests:
cpu: 100m
memory: 256Mi
ingestor:
resources:
limits:
cpu: 500m
memory: 256Mi
requests:
cpu: 100m
memory: 128MiNode Selectors
operator:
nodeSelector:
kubernetes.io/os: linux
node-type: worker
ingestor:
nodeSelector:
kubernetes.io/os: linuxNetworking
Service Types
operator:
service:
type: ClusterIP
ingestor:
service:
type: LoadBalancer
annotations:
service.beta.kubernetes.io/aws-load-balancer-type: nlbIngress Configuration
ui:
enabled: true
ingress:
enabled: true
className: nginx
hosts:
- host: litefunctions.example.com
paths:
- path: /
pathType: Prefix
tls:
- secretName: litefunctions-tls
hosts:
- litefunctions.example.comMonitoring and Logging
Enable Logging
operator:
logLevel: info
ingestor:
logLevel: debugEnable Metrics
operator:
metrics:
enabled: true
service:
annotations:
prometheus.io/scrape: "true"
prometheus.io/port: "8443"
prometheus.io/path: "/metrics"Troubleshooting
Check Pod Status
# List all pods
kubectl get pods -n litefunctions
# Get pod details
kubectl describe pod <pod-name> -n litefunctions
# View logs
kubectl logs <pod-name> -n litefunctionsCheck Operator Status
# View operator logs
kubectl logs -l app.kubernetes.io/name=operator -n litefunctions
# Check operator status
kubectl get crd
kubectl get functions -n litefunctionsCheck Dependencies
# Check NATS
kubectl get pods -l app.kubernetes.io/name=nats -n litefunctions
# Check PostgreSQL
kubectl get pods -l app.kubernetes.io/name=postgres -n litefunctions
# Check Gitea
kubectl get pods -l app.kubernetes.io/name=gitea -n litefunctionsCommon Issues
Pods not starting:
# Check events
kubectl get events -n litefunctions --sort-by='.lastTimestamp'
# Check resource limits
kubectl describe pod <pod-name> -n litefunctions | grep -A 5 "Limits"CRDs not installed:
# Verify CRDs are installed
kubectl get crd | grep litefunctions
# Manually install CRDs
kubectl apply -f chart/crds/Production Checklist
- Configure resource limits and requests
- Enable PodDisruptionBudgets
- Set up backups for PostgreSQL
- Configure ingress with TLS
- Enable monitoring and alerting
- Review and update security contexts
- Configure horizontal pod autoscaling
- Set up log aggregation
- Configure persistent volumes appropriately
- Review and update secrets management
- Test disaster recovery procedures
- Enable and configure network policies