Pulumi EKS ML Infrastructure
An opinionated library for multi-tenant, multi-region Machine Learning platforms on AWS.
This repository provides a modular set of Pulumi components (pulumi_eks_ml) to spin up multi-tenant, multi-region ML infrastructure with minimal pain.
💡 Philosophy
This project treats infrastructure as a composable library. Instead of one giant deployment, you get modular building blocks (VPC, EKS, GPU Node Pools) that you can assemble into your own topology.
Whether it's a single cluster for testing or a global mesh for distributed workloads, you can define your architecture once in Python, then deploy identical copies across different environments thanks to Pulumi stacks.
Architectural examples with pulumi_eks_ml
| Project | Description | Architecture |
|---|---|---|
| Starter | Single VPC, single EKS cluster with recommended addons. | diagram |
| EKS Multi-Region | Full-mesh VPC peering across regions, each with an EKS cluster. | diagram |
| SkyPilot Multi-Tenant | Hub-and-Spoke multi-region network with multi-tenant SkyPilot API server, Cognito auth, Tailscale VPN, and isolated data planes. | diagram |
⚡ Quickstart
Use the starter project as the fastest path to a working EKS cluster.
# __main__.py
import pulumi
from pulumi_eks_ml import eks, eks_addons, vpc
main_region = pulumi.Config("aws").require("region")
cfg = pulumi.Config()
deployment_name = f"{pulumi.get_project()}-{pulumi.get_stack()}"
node_pools_config = cfg.require_object("node_pools")
node_pools = [eks.NodePoolConfig.from_dict(pool) for pool in node_pools_config]
vpc_resource = vpc.VPC(
name=f"{deployment_name}-vpc",
cidr_block="10.0.0.0/16",
setup_internet_egress=True,
)
cluster = eks.EKSCluster(
f"{deployment_name}-cls",
vpc_id=vpc_resource.vpc_id,
subnet_ids=vpc_resource.private_subnet_ids,
node_pools=node_pools,
)
eks.cluster.EKSClusterAddonInstaller(
f"{deployment_name}-addons",
cluster=cluster,
addon_types=eks_addons.recommended_addons(),
)
pulumi.export("vpc_id", vpc_resource.vpc_id)
pulumi.export("cluster_name", cluster.cluster_name)
uv sync --dev
cd projects/starter
pulumi stack init dev
pulumi config set aws:region us-west-2
uv run pulumi up
🚀 Key Features
- ML-Optimized Compute: Pre-configured EKS clusters with Karpenter for autoscaling (Spot/On-Demand) and NVIDIA GPU drivers ready to go.
- Global Networking: Easy Multi-Region connectivity with Hub-and-Spoke or Full Mesh VPC peering topologies.
- Opinionated Add-ons for ML: Built-in support for ALB Controller, EBS/EFS CSI drivers, FluentBit, Metrics Server, etc...
- Secure network with Tailscale: Secure network with Tailscale for VPN access, in additional to public/private subnet isolation.
- SkyPilot Multi-Tenant Platform: Opinionated deployment of SkyPilot for multi-tenant, multi-region AI workloads.
📂 Repository Structure
pulumi_eks_ml/: The core Python library containing reusable infrastructure components.projects/: Reference implementations and live infrastructure code.starter/: A simple single-region EKS cluster.multi-region/: A full-mesh global network connecting clusters across regions.skypilot-multi-tenant/: A SkyPilot platform with isolated data planes for multiple teams.
🛠 Getting Started
Prerequisites
- Pulumi CLI
- Python 3.12+
- uv (recommended)
1. Install & Setup
# Clone the repo
git clone https://github.com/Roulbac/pulumi-eks-ml.git
cd pulumi-eks-ml
# Install dependencies
uv sync --dev
2. Deploy a Project
Navigate to one of the reference projects to see it in action.
cd projects/starter
# Initialize your stack (e.g., dev)
pulumi stack init dev
# Deploy
uv run pulumi up
For custom infrastructure, create a new folder in projects/, import pulumi_eks_ml, and define your topology (see projects/starter/__main__.py for a template).
🧪 Testing
We include both unit and integration tests (using LocalStack).
# Run Unit Tests
uv run pytest -vv tests/unit
# Run Integration Tests
uv run pytest -vv tests/integration
📄 License
Metadata
Release files for pulumi-eks-ml 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| pulumi_eks_ml-0.2.0.tar.gz | 32.8 kB | With provenance | Details for pulumi_eks_ml-0.2.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| pulumi_eks_ml-0.2.0-py3-none-any.whl | Python 3 | none | any | Details for pulumi_eks_ml-0.2.0-py3-none-any.whl |
Total release size: 81.4 kB
Release files / pulumi_eks_ml-0.2.0.tar.gz
| Download URL | pulumi_eks_ml-0.2.0.tar.gz |
|---|---|
| Size | 32.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a74112316b8070d1c67b128a131a815b204cd525fbc5399a62b61d41cc7529d0
|
|
BLAKE2b-256 checksum How to use checksums |
0908fa4ae287d5f72685a527be62e439bd5f943ef52d7a03a845a9a460ad9ccf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Feb 7, 2026.
Transparency logRelease files / pulumi_eks_ml-0.2.0-py3-none-any.whl
| Download URL | pulumi_eks_ml-0.2.0-py3-none-any.whl |
|---|---|
| Size | 48.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e7e3ee5f71c97ce1467f4fbabcaa039546d4c640ea1f84e0b8765da3d3bdd5f5
|
|
BLAKE2b-256 checksum How to use checksums |
132216c1c6142626b3378254ef1af560ec7c0114a00d681ebe4bc6fb79312323
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Feb 7, 2026.
Transparency logSecurity for pulumi-eks-ml 0.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for pulumi_eks_ml-0.2.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Feb 7, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.