This directory contains Kustomize manifests specifically designed for OpenShift Container Platform.
Alternative: For a Helm-based deployment that works on both vanilla Kubernetes and OpenShift, see
deployment/helm/litemaas/and the Helm Deployment Guide.
-
OpenShift cluster access with project creation permissions
-
OpenShift CLI (oc) installed and logged in
-
OAuth client configured in OpenShift (see full deployment guide)
-
OpenShift groups configured for role-based access control:
litemaas-admins- Full administrative accesslitemaas-readonly- Read-only administrative accesslitemaas-users- Standard user access (optional, default role)
See User Role Management for setup instructions.
-
Container images available at:
quay.io/rh-aiservices-bu/litemaas-backendquay.io/rh-aiservices-bu/litemaas-frontend
🔐 Security: All secrets should be updated with secure, randomly generated values before deployment.
📚 Complete Guide: For detailed setup instructions, see Kustomize Deployment Guide
The deployment uses a template-based configuration system:
-
Copy the example configuration:
cp user-values.env.example user-values.env
-
Edit
user-values.envand customize the following required values:LITEMAAS_VERSION- LiteMaaS version to deploy (e.g.,0.1.2)CLUSTER_DOMAIN_NAME- Your OpenShift cluster domain (e.g.,apps.cluster.example.com)NAMESPACE- Namespace/project name (e.g.,litemaas)PG_ADMIN_PASSWORD- Secure PostgreSQL password (generate withopenssl rand -base64 32)JWT_SECRET- Secure JWT signing key (generate withopenssl rand -base64 32)OAUTH_CLIENT_ID- OAuth client ID from OpenShift (see prerequisites)OAUTH_CLIENT_SECRET- OAuth client secret from OpenShiftADMIN_API_KEY- Admin API key for backend management operations (generate withopenssl rand -base64 32)LITELLM_API_KEY- LiteLLM master API key (generate withopenssl rand -base64 32, must start withsk-)LITELLM_MASTER_KEY- (Optional) Encryption key for stored model API keys (defaults toLITELLM_API_KEYif not set)LITELLM_UI_USERNAME- LiteLLM admin UI usernameLITELLM_UI_PASSWORD- LiteLLM admin UI password
⚠️ Security: Never use the example placeholder values in production! Generate secure random values for all passwords, secrets, and API keys. -
Run the preparation script to generate deployment files:
./preparation.sh
-
Verify the generated files:
# Check that .local files were created successfully ls -la *.local # Should show: # - backend-deployment.yaml.local # - backend-secret.yaml.local # - frontend-deployment.yaml.local # - litellm-secret.yaml.local # - namespace.yaml.local # - postgres-secret.yaml.local # - kustomization.yaml
Template System: Files ending in
.templateare processed bypreparation.shusing environment variable substitution fromuser-values.env. This generates.localfiles with your actual configuration values.
📚 Optional Configuration: The deployment uses sensible defaults for rate limiting, user quotas, and caching. To customize these values, see the Configuration Guide.
Apply the configuration files to deploy all components: PostgreSQL database, LiteLLM, Backend and Frontend.
# Deploy to current project
oc apply -k .-
Validate the deployment:
After deployment completes, validate all components are running correctly:
# Quick validation oc get pods -n <your-namespace> # All pods should show 1/1 Running # Comprehensive validation # See VALIDATION.md for complete checklist
📋 Validation Guide: For a comprehensive deployment validation checklist, see VALIDATION.md
namespace.yaml- Namespace definitionpostgres-statefulset.yaml- PostgreSQL StatefulSetpostgres-service.yaml- PostgreSQL servicebackend-deployment.yaml- LiteMaaS backend deploymentbackend-service.yaml- Backend servicefrontend-deployment.yaml- LiteMaaS frontend deploymentfrontend-service.yaml- Frontend servicelitellm-deployment.yaml- LiteLLM service deploymentlitellm-service.yaml- LiteLLM service
frontend-route.yaml- OpenShift Route for LiteMaaS UIlitellm-route.yaml- OpenShift Route for LiteLLM admin UI
postgres-secret.yaml- Database credentials for PostgreSQLbackend-secret.yaml- Backend configuration including:- Database connection string
- JWT signing secret
- OAuth client credentials
- Admin API key (for backend management API, NOT for LLM requests)
- LiteLLM API key
- LiteLLM master key (encryption key for stored model API keys)
litellm-secret.yaml- LiteLLM configuration including:- LiteLLM database connection string
- Master API key
- Admin UI credentials
Note:
ADMIN_API_KEYprotects LiteMaaS backend management endpoints (user/subscription management, model sync). It does NOT control AI model access - that's handled by per-user API keys created through LiteMaaS.
kustomization.yaml- Main Kustomize configuration
README.md- Quick start guide (this file)VALIDATION.md- Comprehensive deployment validation checklistpreparation.sh- Template processing scriptuser-values.env.example- Configuration template
After successful deployment:
- LiteMaaS Application:
https://litemaas-<namespace>.<cluster-domain> - LiteLLM Admin UI:
https://litellm-<namespace>.<cluster-domain>
- Use LiteMaaS to directly create the models. You can also connect to LiteLLM directly for advanced configuration.
- Wait for the backend to sync models, or start a Rollout of the deployment to initiate the refresh.
For troubleshooting and detailed configuration, see the complete deployment guide in docs/deployment/kustomize-deployment.md.