Our goal is to create a comprehensive platform for Models as a Service with real-time policy management.
Important
This project is a work in progress and is not yet ready for production.
- OpenShift: Kubernetes platform
- Gateway API: Traffic routing and management (OpenShift native implementation)
- Kuadrant/Authorino/Limitador: API gateway and policy engine
- KServe: Model serving platform
- React: Frontend framework
- Go: Backend frameworks
- Openshift cluster (4.19.9+) with kubectl/oc access
- PostgreSQL database (for production ODH/RHOAI deployments)
!!! warning "Database Required for Production" MaaS requires a PostgreSQL database for API key management. For production ODH/RHOAI deployments, you must create a Secret with the database connection URL before enabling modelsAsService.
See [Database Prerequisites](docs/content/install/prerequisites.md#database-prerequisite) for details.
Note: The `scripts/deploy.sh` script creates a development PostgreSQL instance automatically.
Use the unified deployment script for all deployment scenarios:
# Deploy RHOAI (default)
./scripts/deploy.sh
# Deploy ODH
./scripts/deploy.sh --operator-type odh
# Deploy via Kustomize
./scripts/deploy.sh --deployment-mode kustomizeFor detailed instructions, see the Deployment Guide or the Deployment Options section below.
./scripts/deploy.sh [OPTIONS]| Flag | Values | Default | Description |
|---|---|---|---|
--deployment-mode |
operator, kustomize |
operator |
Deployment method |
--operator-type |
rhoai, odh |
rhoai |
Which operator to install |
--policy-engine |
rhcl, kuadrant |
auto | Gateway policy engine (rhcl for operators, kuadrant for kustomize) |
--enable-tls-backend |
flag | enabled | TLS for Authorino β MaaS API |
--skip-certmanager |
flag | auto-detect | Skip cert-manager installation |
--skip-lws |
flag | auto-detect | Skip LeaderWorkerSet installation |
--namespace |
string | auto | Target namespace |
--timeout |
seconds | 300 |
Operation timeout |
--verbose |
flag | false | Enable debug logging |
--dry-run |
flag | false | Show plan without executing |
--help |
flag | - | Display full help |
| Flag | Description | Example |
|---|---|---|
--operator-catalog |
Custom operator catalog/index image | quay.io/opendatahub/catalog:pr-456 |
--operator-image |
Custom operator image (patches CSV) | quay.io/opendatahub/operator:pr-456 |
--channel |
Operator channel override | fast, fast-3 |
| Variable | Description | Example |
|---|---|---|
MAAS_API_IMAGE |
Custom MaaS API container image (works in both operator and kustomize modes) | quay.io/user/maas-api:pr-123 |
OPERATOR_CATALOG |
Custom operator catalog | quay.io/opendatahub/catalog:pr-456 |
OPERATOR_IMAGE |
Custom operator image | quay.io/opendatahub/operator:pr-456 |
OPERATOR_TYPE |
Operator type (rhoai/odh) | odh |
POLICY_ENGINE |
Policy engine (rhcl/kuadrant) | kuadrant |
LOG_LEVEL |
Logging verbosity | DEBUG, INFO, WARN, ERROR |
Note: TLS backend is enabled by default. Use --disable-tls-backend to disable.
# Deploy RHOAI
./scripts/deploy.sh --operator-type rhoai
# Deploy ODH
./scripts/deploy.sh --operator-type odh# Test MaaS API PR #123
MAAS_API_IMAGE=quay.io/myuser/maas-api:pr-123 \
./scripts/deploy.sh --operator-type odh
# Test ODH operator PR #456 with custom manifests
./scripts/deploy.sh \
--operator-type odh \
--operator-catalog quay.io/opendatahub/opendatahub-operator-catalog:pr-456 \
--operator-image quay.io/opendatahub/opendatahub-operator:pr-456# Skip optional operators (if already installed)
./scripts/deploy.sh --skip-certmanager --skip-lws
# Deploy without TLS backend (HTTP tier lookup)
./scripts/deploy.sh --disable-tls-backend- Deployment Guide - Complete deployment instructions
- MaaS API Documentation - Go API for key management
Online Documentation: https://opendatahub-io.github.io/models-as-a-service/
We welcome contributions! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
This project is licensed under the Apache 2.0 License.
For questions or issues:
- Open an issue on GitHub
- Check the deployment guide for troubleshooting
- Review the samples for examples