Self-Hosted Architecture Overview
Self-hosting is only available with Pulumi Business Critical. If you would like to evaluate the self-hosted Pulumi Cloud, sign up for the 30-day trial or contact us.
This page describes the high-level architecture of a self-hosted Pulumi Cloud deployment. For detailed configuration of individual components, see Components.
Core components
| Component | Description |
|---|---|
| API service | Go-based REST API that handles CLI requests, state management, and all backend operations |
| Console | Web UI served as a static Angular application |
| Database | MySQL 8.0.x for metadata, stack state references, and user/organization data |
| Workflow runners | Docker hosts or Kubernetes cluster that runs the workflow runners for Pulumi Deployments and Insights scanning (Optional) |
Supporting infrastructure
| Component | Description |
|---|---|
| Object storage | Blob storage for checkpoint (state) files and policy packs. Supported: S3 and compatible implementations, Azure Blob Storage, Google Cloud Storage |
| Search | OpenSearch 2.x or Elasticsearch 7.x for resource search and AI features |
Data flow
graph TB
subgraph Clients
CLI[Pulumi CLI]
Browser[Web Browser]
end
subgraph Load Balancer
LB[Application Load Balancer]
end
subgraph Compute - Stateless
API[API Service]
Console[Console]
end
subgraph Data - Stateful
DB[(MySQL 8.0)]
S3[Object Storage]
end
subgraph Search
OpenSearch[OpenSearch]
end
CLI -->|api.domain| LB
Browser -->|app.domain| LB
LB --> API
LB --> Console
API --> DB
API --> S3
API --> OpenSearch
Console -->|API calls| API
The API and Console services are stateless - all persistent data lives in the database and object storage. This makes the compute tier straightforward to scale horizontally and recover from failures.
Next steps
- Database best practices - MySQL HA, sizing, and migration guidance
- Compute sizing - Container resource allocation by platform
- Object storage - Bucket architecture, versioning, and lifecycle
- Networking - Multi-AZ deployment, load balancing, and TLS
Thank you for your feedback!
If you have a question about how to use Pulumi, reach out in Community Slack.
Open an issue on GitHub to report a problem or suggest an improvement.