Platform engineering

Enable self-service infrastructure
without scaling your platform team

Looking for a platform engineering solution? Build internal developer platforms that let engineers provision infrastructure safely, with policies, guardrails, and full auditability built in.

Trusted by innovative companies

“Pulumi supercharged our infrastructure team by helping us create reusable building blocks that developers can leverage to provision new resources and enforce organizational policies for logging, permissions, resource tagging, and security.”

Igor Shapiro, Principal Engineer, Lemonade

Empower developers with guardrails

Pulumi Infrastructure as Code Engine

Write policies in TypeScript, Python, or Go to define what teams can provision, then let them self-service within boundaries

Pulumi code being written in TypeScript showing autocomplete for creating a new S3 bucket Pulumi code being written in Python showing autocomplete for creating a new S3 bucket Pulumi code being written in Go showing autocomplete for creating a new S3 bucket Pulumi code being written in C# showing autocomplete for creating a new S3 bucket Pulumi code being written in Java showing autocomplete for creating a new S3 bucket Pulumi code being written in YAML showing autocomplete for creating a new S3 bucket
Empower developers with guardrails

Write policies in TypeScript, Python, or Go to define what teams can provision, then let them self-service within boundaries

Prove platform ROI with metrics

Track adoption, cost, and compliance across every stack and environment with centralized visibility

Reduce ticket backlog

Developers get infrastructure on-demand while platform engineers maintain control and governance

Build infrastructure faster with reusable components

Pulumi Packages

Build and reuse higher-level abstractions for cloud architectures with multi-language Pulumi Packages. Distribute the packages through repositories or package managers so your team members can reuse them.

import * as eks from "@pulumi/eks";

// Create an EKS cluster with the default configuration.
const cluster = new eks.Cluster("eks-cluster");

// Export the cluster's kubeconfig.
export const kubeconfig = cluster.kubeconfig;
import pulumi
import pulumi_eks as eks

# Create an EKS cluster with the default configuration.
cluster = eks.Cluster("eks-cluster")

# Export the cluster's kubeconfig.
pulumi.export("kubeconfig", cluster.kubeconfig)
package main

import (
  "github.com/pulumi/pulumi-eks/sdk/go/eks"
  "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
  pulumi.Run(func(ctx *pulumi.Context) error {
    // Create an EKS cluster with default settings.
    cluster, err := eks.NewCluster(ctx, "eks-cluster", nil)
    if err != nil {
      return err
    }

    // Export the cluster's kubeconfig.
    ctx.Export("kubeconfig", cluster.Kubeconfig)
    return nil
  })
}
using System.Collections.Generic;
using Pulumi;
using Pulumi.Eks;

await Deployment.RunAsync(() =>
{
  // Create an EKS cluster with default settings.
  var cluster = new Cluster("eks-cluster");

  // Export the cluster's kubeconfig.
  return new Dictionary<string, object?>
  {
    ["kubeconfig"] = cluster.Kubeconfig
  };
});
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.eks.Cluster;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    private static void stack(Context ctx) {
    final var cluster = new Cluster("eks-cluster");
    ctx.export("kubeconfig", cluster.kubeconfig());
  }
}
resources:
  eks-cluster:
    type: eks:Cluster
outputs:
  kubeconfig: ${cluster.kubeconfig}
Native cloud providers

Full API coverage for AWS, Azure, Google Cloud, and Kubernetes with same-day updates.

Crosswalk for AWS

Adopt well-architected best practices for your infrastructure easily with the Crosswalk library.

Cloud Native support

Use a single workflow to manage both Kubernetes resources and infrastructure.

Deliver infrastructure through software delivery pipelines

CI/CD Integrations

Version, review, test, and deploy infrastructure code through the same tools and processes used for your application code.

Pulumi infrastructure as code example
Version and review

Manage infrastructure code in Git and approve changes through pull requests.

Shift left

Get rapid feedback on your code with fast unit tests, and run integration tests against ephemeral infrastructure.

Continuous delivery

Integrate your CI/CD provider with Pulumi or use GitOps to manage Kubernetes clusters.

Trusted by thousands

Pulumi’s Infrastructure as Code CLI and SDK is an open-source project that’s supported by an active community. We maintain a public roadmap and welcome feedback and contributions.

350,000+

developers

3,700+

organizations

170+

Cloud and service integrations

Customers innovating with Pulumi Cloud

Atlassian

Developers reduced their time spent on maintenance by 50%.

Elkjop

Increased developers’ agility and speed through platform engineering.

Starburst

Increased velocity and speed, with deployments that are up to 3x faster.

BMW

Enabled developers to deploy across hybrid cloud environments.

Lemonade

Standardized infrastructure architectures with reusable components.

Snowflake

Built a multicloud, Kubernetes-based platform to standardize all deployments