Skip to content

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)
    • kubectl
    • jq
    • kustomize (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:

  1. cert-manager and LWS: ./.github/hack/install-cert-manager-and-lws.sh
  2. 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-gateway in openshift-ingress namespace
  • HTTPRoutes: maas-api-route in the application namespace (deployed by Tenant reconciler)
  • Policies:
  • maas-api-auth-policy (deployed by Tenant reconciler) - Protects MaaS API
  • gateway-default-auth (deployed by Tenant reconciler) - Denies unauthenticated traffic
  • gateway-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-service in ai-tenants, plus Tenant/default-tenant in models-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.