MATIH Platform is in active MVP development. Documentation reflects current implementation status.
2. Architecture
Namespace Isolation

Namespace Isolation

Each tenant in the MATIH Platform receives a dedicated Kubernetes namespace for its Data Plane services. This namespace provides compute isolation, network boundaries, and resource quota enforcement at the infrastructure level.


Namespace Naming

EnvironmentPatternExample
Developmentmatih-data-planeSingle shared namespace
Productionmatih-data-plane-{tenant-slug}matih-data-plane-acme-corp

Namespace Contents

Each tenant namespace contains:

Resource TypeExamples
DeploymentsAI Service, Query Engine, BI Service, and all other Data Plane services
ServicesKubernetes Service objects for each deployment
SecretsDatabase credentials, API keys, TLS certificates
ConfigMapsService configuration, feature flags
NetworkPoliciesIngress/egress rules for tenant isolation
ResourceQuotasCPU, memory, pod, and storage limits
LimitRangesDefault and maximum per-pod resource limits
ServiceAccountTenant-specific service account with RBAC bindings

ResourceQuota

Each namespace has a ResourceQuota that prevents resource starvation:

apiVersion: v1
kind: ResourceQuota
metadata:
  name: tenant-quota
  namespace: matih-data-plane-acme-corp
spec:
  hard:
    requests.cpu: "4"
    requests.memory: 8Gi
    limits.cpu: "8"
    limits.memory: 16Gi
    pods: "50"
    services: "20"
    persistentvolumeclaims: "10"

Quota values are configured per tenant tier (Free, Professional, Enterprise).


LimitRange

Default resource limits for pods within the namespace:

apiVersion: v1
kind: LimitRange
metadata:
  name: tenant-limits
  namespace: matih-data-plane-acme-corp
spec:
  limits:
    - type: Container
      default:
        cpu: 500m
        memory: 512Mi
      defaultRequest:
        cpu: 100m
        memory: 256Mi
      max:
        cpu: "2"
        memory: 4Gi

RBAC

Each tenant namespace has a dedicated ServiceAccount with limited permissions:

ResourcePermissionScope
Podsget, listOwn namespace only
Servicesget, listOwn namespace only
SecretsgetOwn namespace only
ConfigMapsget, listOwn namespace only

Cross-namespace access is denied. The tenant ServiceAccount cannot read resources from other tenant namespaces or the Control Plane namespace.


Pod Security

ControlPolicy
Run as non-rootEnforced via PodSecurityStandards
Read-only root filesystemEnabled where possible
Privilege escalationDisabled
Host networkDisabled
Host PIDDisabled

Related Pages