Tier Concepts
This section provides reference information about how the tier system works.
Tier Membership Mapping
MaaS and Kubernetes administrators can defined the subscription levels using the tier-to-group-mapping ConfigMap in the maas-api namespace:
tier-to-group-mapping.yaml ConfigMap example:
apiVersion: v1
kind: ConfigMap
metadata:
name: tier-to-group-mapping
namespace: maas-api
data:
tiers: |
- name: free
description: Free tier for basic users
level: 1
groups:
- system:authenticated
- name: premium
description: Premium tier
level: 10
groups:
- premium-users
- name: enterprise
description: Enterprise tier
level: 20
groups:
- enterprise-users
ConfigMap Field Breakdown
| Field | Purpose | Default Value |
|---|---|---|
| name | The tier identifier used throughout the system. Must be unique and matches tier names in rate limit policies. | free, premium, enterprise |
| description | Human-readable description of the tier's purpose and who it's intended for. Used for documentation and UI display. | Free tier for basic users, Enterprise tier for high-volume customers |
| level | Numeric hierarchy for tier precedence. Higher numbers indicate higher tiers. When a user belongs to multiple groups, the highest level tier is selected. |
1 (lowest), 10 (medium), 20 (highest) |
| groups | Kubernetes groups whose members are assigned to this tier. Users must be members of at least one group in the list to get this tier. |
system:authenticated, premium-users, enterprise-users |
Important Notes:
- Users with multiple group memberships are assigned to the tier with the highest level number
- The
system:authenticatedgroup includes all authenticated users, commonly used for the free tier - Group names must exist in your Kubernetes identity provider (LDAP, OIDC, etc.)
- Tier
namevalues are case-sensitive and must match exactly with rate limit policy predicates
Tier Rate Limits Configuration
MaaS and Kubernetes administrators can configure rate limits for each tier using the RateLimitPolicy custom resource.
RateLimitPolicy.yaml example:
apiVersion: kuadrant.io/v1beta2
kind: RateLimitPolicy
metadata:
name: model-rate-limits
namespace: llm
Tier Namespaces
Each tier gets a dedicated namespace following the pattern <instance-name>-tier-<tier-name>:
maas-default-gateway-tier-freemaas-default-gateway-tier-premiummaas-default-gateway-tier-enterprise
Tier Resolution Process
- User authenticates with JWT token
- Gateway extracts user groups from token
- MaaS API resolves tier based on group membership
- Tier information is cached for 5 minutes
- Access control and rate limiting are applied based on tier