What is Self-Managed Materialize?
Self-Managed Materialize allows you to deploy and operate Materialize in your own infrastructure using Kubernetes. This deployment model provides complete control over:- Infrastructure: Deploy on any Kubernetes cluster (AWS EKS, GCP GKE, Azure AKS, or on-premises)
- Data residency: Keep all data within your own environment
- Network configuration: Full control over network policies and connectivity
- Compliance: Meet strict regulatory requirements for data handling
- Resource management: Direct control over compute, memory, and storage resources
Self-managed deployments require Kubernetes expertise and operational overhead. Consider Materialize Cloud for a fully-managed option.
Architecture
Self-Managed Materialize runs on Kubernetes using the Materialize Operator:Components
Materialize Operator (orchestratord)
The operator manages the lifecycle of Materialize environments:- Custom Resource Definitions (CRDs): Define Materialize environments declaratively
- Reconciliation: Ensures actual state matches desired state
- Upgrades: Manages rolling upgrades with minimal downtime
- Scaling: Handles cluster scaling and replica management
misc/helm-charts/operator
environmentd
The SQL interface and query coordinator:- Accepts PostgreSQL wire protocol connections on port 6875
- HTTP API on port 6876
- Coordinates query execution across compute clusters
- Manages catalog and metadata
- CPU: 1 core
- Memory: 4 GiB
clusterd
Distributed compute workers:- Execute data processing and maintain materialized views
- Run as pods on Kubernetes nodes
- Scale horizontally based on workload
- Require local NVMe storage for optimal performance
balancerd
Load balancer for SQL connections:- Distributes connections across environmentd replicas
- Provides health checking and failover
- Exposes external SQL endpoint
- CPU: 500m
- Memory: 256 MiB
console
Web-based management interface:- Environment monitoring and metrics
- Query history and performance analysis
- Cluster management UI
- User and role management
- CPU: 500m
- Memory: 256 MiB
Prerequisites
Kubernetes Requirements
- Kubernetes version: 1.29 or later
- Helm: 3.2.0 or later
- Storage: Local NVMe storage with provisioner (OpenEBS recommended)
- Node requirements:
- ARM-based CPU (AWS Graviton, GCP Tau, or equivalent)
- 1:8 ratio of vCPU to GiB memory
- Local instance storage (for spill-to-disk)
Recommended Instance Types
AWS
r7g.xlargetor7g.16xlarge(with local NVMe)r7gd.xlargetor7gd.16xlarge(with instance store)r6g,r6gdfamilies also supported
GCP
n2-standard-*series with local SSDsc2-standard-*series with local SSDstau-*series (Arm-based)
Azure
D-seriesv5 with local NVMeE-seriesv5 with local NVMe
External Dependencies
PostgreSQL or CockroachDB (Metadata Store)
Materialize requires a PostgreSQL-compatible database for metadata:- PostgreSQL: Version 13 or later
- CockroachDB: Version 23.1 or later (recommended)
Object Storage (Persist Backend)
Materialize uses object storage for durable data:- AWS S3: Recommended for AWS deployments
- GCS: Recommended for GCP deployments
- Azure Blob Storage: Recommended for Azure deployments
- MinIO: For on-premises or testing
Deployment Options
Kubernetes Deployment
The recommended deployment method using Helm charts:- Install Materialize Operator via Helm
- Deploy Materialize environments using Custom Resources
- Manage via kubectl and Kubernetes APIs
Docker Deployment
For testing and development:- Run Materialize containers with Docker Compose
- Suitable for local development
- Not recommended for production
Licensing
Self-managed deployments require a valid license key:- Trial licenses: Available for evaluation (contact Materialize)
- Commercial licenses: Required for production use
- License enforcement: Newer versions enforce license key checks
Support
Self-managed deployments are supported through:- Documentation: Comprehensive deployment guides
- GitHub: Source code and issue tracking
- Enterprise support: Available for commercial customers
- Community: Slack channel for community support
Support Scope
Materialize provides support for:- Materialize software issues and bugs
- Configuration guidance
- Upgrade assistance
- Performance tuning recommendations
- Kubernetes cluster management
- Infrastructure provisioning and scaling
- Backup and disaster recovery operations
- Monitoring and alerting setup
Comparison: Cloud vs Self-Managed
| Feature | Materialize Cloud | Self-Managed |
|---|---|---|
| Infrastructure | Managed by Materialize | You manage |
| Kubernetes | Not required | Required |
| Upgrades | Automatic | Manual |
| Scaling | Automatic | Manual |
| Monitoring | Included | You configure |
| SLA | 99.9% uptime | You manage |
| Data residency | Select region | Full control |
| Cost | Credit-based pricing | Infrastructure + license |
| Support | 24/7 included | Commercial license |
| Time to deploy | 2-3 minutes | Hours to days |
| Operational burden | Low | High |
Next Steps
Kubernetes Deployment
Deploy Materialize on Kubernetes using Helm
Docker Deployment
Run Materialize locally with Docker Compose
Configuration Reference
Detailed configuration options and parameters
Operational Guidelines
Best practices for running Materialize in production