Skip to main content

Pulumi EKS ML Infrastructure

Tests

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

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

MIT

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)

Source distribution for pulumi-eks-ml 0.2.0
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)

Table of built distributions (wheels) for pulumi-eks-ml 0.2.0
File Interpreter ABI Platform Actions
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 log

Release 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 log

Security 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.

Select from 2 files

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 log

A 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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page