Skip to content

ryancham715/models-as-a-service

 
 

Repository files navigation

ODH - Models as a Service with Policy Management

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.

📦 Technology Stack

  • 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

📋 Prerequisites

  • 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.

🚀 Quick Start

Deploy Infrastructure

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 kustomize

For detailed instructions, see the Deployment Guide or the Deployment Options section below.

🛠️ Deployment Options

Basic Deployment

./scripts/deploy.sh [OPTIONS]

Key Options

Flag Values Default Description
--deployment-mode operator, kustomize operator Deployment method
--operator-type rhoai, odh rhoai Which operator to install
--enable-tls-backend flag enabled TLS for Authorino ↔ MaaS API
--disable-tls-backend flag false Disable TLS backend
--namespace string auto Target namespace
--verbose flag false Enable debug logging
--dry-run flag false Show plan without executing
--help flag - Display full help

Advanced Options (PR Testing)

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

Environment Variables

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
MAAS_CONTROLLER_IMAGE Custom MaaS controller container image quay.io/user/maas-controller: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
LOG_LEVEL Logging verbosity DEBUG, INFO, WARN, ERROR

Note: TLS backend is enabled by default. Use --disable-tls-backend to disable.

Note: The policy engine is auto-determined based on operator type (rhcl for RHOAI, kuadrant for ODH/kustomize) and does not need to be set manually.

Deployment Examples

Standard Deployments

# Deploy RHOAI
./scripts/deploy.sh --operator-type rhoai

# Deploy ODH
./scripts/deploy.sh --operator-type odh

Testing PRs

# 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

Minimal Deployments

# Deploy without TLS backend (HTTP tier lookup)
./scripts/deploy.sh --disable-tls-backend

📚 Documentation

Online Documentation: https://opendatahub-io.github.io/models-as-a-service/

🤝 Contributing

We welcome contributions! Please:

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Submit a pull request

📝 License

This project is licensed under the Apache 2.0 License.

📞 Support

For questions or issues:

Packages

 
 
 

Contributors

Languages

  • Go 57.6%
  • Shell 22.2%
  • Python 18.6%
  • Makefile 1.4%
  • Dockerfile 0.2%