Multi-Tenant Auto-Provisioning
Read tenant data from external datasources (MySQL) and automatically create/sync Kubernetes resources using templates
Declarative, template-based resource provisioning with Server-Side Apply

apiVersion: operator.kubernetes-tenants.org/v1
kind: TenantRegistry
metadata:
  name: my-saas-registry
spec:
  source:
    type: mysql
    mysql:
      host: mysql.default.svc.cluster.local
      port: 3306
      database: tenants
      table: tenant_data
      username: tenant_reader
      passwordRef:
        name: mysql-secret
        key: password
    syncInterval: 30s
  valueMappings:
    uid: tenant_id
    hostOrUrl: domain
    activate: is_activeapiVersion: operator.kubernetes-tenants.org/v1
kind: TenantTemplate
metadata:
  name: web-app
spec:
  registryId: my-saas-registry
  deployments:
    - id: app-deployment
      nameTemplate: "{{ .uid }}-app"
      spec:
        apiVersion: apps/v1
        kind: Deployment
        spec:
          replicas: 2
          template:
            spec:
              containers:
                - name: app
                  image: "nginx:latest"
                  env:
                    - name: TENANT_ID
                      value: "{{ .uid }}"
                    - name: DOMAIN
                      value: "{{ .host }}"The operator automatically creates Tenant CRs for each active row:
apiVersion: operator.kubernetes-tenants.org/v1
kind: Tenant
metadata:
  name: acme-web-app
spec:
  uid: acme
  templateRef: web-app
  registryId: my-saas-registry
  # ... auto-populated resources
status:
  desiredResources: 10
  readyResources: 10
  failedResources: 0
  conditions:
    - type: Ready
      status: "True"Getting Started
Core Concepts
Operations