Installation Guide
This guide provides quickstart instructions for deploying the MaaS Platform infrastructure.
Note
For more detailed instructions, please refer to Installation under the Install Guide.
Prerequisites
- OpenShift cluster (4.19.9+) with kubectl/oc access
- Recommended 16 vCPUs, 32GB RAM, 100GB storage
- Cluster admin or equivalent permissions
- Required tools:
oc(OpenShift CLI)kubectljqkustomize(v5.7.0+)gsed(GNU sed) - macOS only:brew install gnu-sed
Quick Start
Automated OpenShift Deployment
For OpenShift clusters, use the unified automated deployment script. Choose your deployment method:
Deploy MaaS through the RHOAI or ODH operator. This is the recommended approach for production deployments.
export MAAS_REF="main" # Use the latest release tag, or "main" for development
# Deploy using RHOAI operator (default)
./scripts/deploy.sh
# Or deploy using ODH operator
./scripts/deploy.sh --operator-type odh
Using Release Tags
The MAAS_REF environment variable should reference a release tag (e.g., v1.0.0) for production deployments.
The release workflow automatically updates all MAAS_REF="main" references in documentation and scripts
to use the new release tag when a release is created. Use "main" only for development/testing.
Development Use Only
Kustomize deployment is intended for development and testing purposes only. For production deployments, use the Operator install tab above instead.
Prerequisites: Run hack scripts first
Before deploying with kustomize, you must run the two hack scripts to install cert-manager, LeaderWorkerSet (LWS), and the ODH operator. Run them in order:
- cert-manager and LWS:
./.github/hack/install-cert-manager-and-lws.sh - ODH operator:
./.github/hack/install-odh.sh
export MAAS_REF="main" # Use the latest release tag, or "main" for development
./scripts/deploy.sh --deployment-mode kustomize
Using Release Tags
The MAAS_REF environment variable should reference a release tag (e.g., v1.0.0) for production deployments.
The release workflow automatically updates all MAAS_REF="main" references in documentation and scripts
to use the new release tag when a release is created. Use "main" only for development/testing.
Verify Deployment
The deployment script creates the following core resources:
- Gateway:
maas-default-gatewayinopenshift-ingressnamespace - HTTPRoutes:
maas-api-routein the application namespace (deployed by Tenant reconciler) - Policies:
maas-api-auth-policy(deployed by Tenant reconciler) - Protects MaaS APIgateway-default-auth(deployed by Tenant reconciler) - Denies unauthenticated trafficgateway-default-deny(deployed by Tenant reconciler) - Denies unsubscribed traffic- MaaS API: Deployment and service in the application namespace (deployed by Tenant reconciler)
- Default tenant:
AITenant/models-as-a-serviceinai-tenants, plusTenant/default-tenantinmodels-as-a-service(self-bootstrapped by maas-controller) - Operators: Cert-manager, LWS, Red Hat Connectivity Link and Red Hat OpenShift AI.
Check deployment status:
# Check all namespaces
kubectl get ns | grep -E "kuadrant-system|kserve|opendatahub|redhat-ods-applications|llm"
# Check Gateway status
kubectl get gateway -n openshift-ingress maas-default-gateway
# Check policies
kubectl get authpolicy -A
kubectl get tokenratelimitpolicy -A
kubectl get ratelimitpolicy -A
# Check MaaS API (deployed by Tenant reconciler in the application namespace)
# APP_NS is "opendatahub" for ODH or "redhat-ods-applications" for RHOAI
kubectl get pods -n ${APP_NS} -l app.kubernetes.io/name=maas-api
kubectl get svc -n ${APP_NS} maas-api
# Check Kuadrant operators
kubectl get pods -n kuadrant-system
# Check default AITenant and Tenant CR
kubectl get aitenant models-as-a-service -n ai-tenants
kubectl get tenant default-tenant -n models-as-a-service
# Check RHOAI/KServe
kubectl get pods -n kserve
kubectl get pods -n ${APP_NS}
For detailed validation and troubleshooting, see the Validation Guide.
Next Steps
After deployment, proceed to Model Setup to deploy sample models, then Validation to test and verify your deployment.