Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Blog updates - batch 2 #14305

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: "From CDK to Pulumi: The Evolution of SST"
title: "AWS CDK vs Pulumi: Why SST Chose Pulumi"

# The date represents the post's publish date, and by default corresponds with
# the date and time this file was generated. Dates are used for display and
Expand All @@ -8,6 +8,7 @@ title: "From CDK to Pulumi: The Evolution of SST"
# the time portion of the date value; posts are sorted in descending order by
# date/time.
date: 2024-09-25T07:32:40Z
updated: 2025-03-05

# The draft setting determines whether a post is published. Set it to true if
# you want to be able to merge the post without publishing it.
Expand All @@ -17,7 +18,7 @@ draft: false
# of the content of the post, which is useful for targeting search results or
# social-media previews. This field is required or the build will fail the
# linter test. Max length is 160 characters.
meta_desc: Explore how SST evolved from AWS CDK to Pulumi, overcoming limitations to offer a flexible, provider-agnostic infrastructure management solution for developers.
meta_desc: Why did SST move from AWS CDK to Pulumi? Learn how this shift unlocks multi-cloud flexibility, faster deployments, and a better developer experience.

# The meta_image appears in social-media previews and on the blog home page. A
# placeholder image representing the recommended format, dimensions and aspect
Expand All @@ -34,10 +35,8 @@ authors:
tags:
- cloudformation
- aws-cdk
- aws
- case-studies
- developer-experience-devex
- infrastructure-as-code

# The social copy used to promote this post on Twitter and Linkedin. These
# properties do not actually create the post and have no effect on the
Expand All @@ -57,14 +56,24 @@ social:

# See the blogging docs at https://github.com/pulumi/docs/blob/master/BLOGGING.md
# for details, and please remove these comments before submitting for review.
aliases:
- /blog/from-cdk-pulumi-evolution-of-sst/
---
As cloud computing continues to evolve, so do the tools and frameworks that developers rely on to manage their infrastructure. For the team building Serverless Stack (SST), a framework built to empower application developers, the journey began with AWS's CDK. While CDK offered a way to define infrastructure using familiar programming languages, it soon became clear that more was needed to meet developers' growing needs.
Cloud computing tools evolve, and so must the frameworks developers rely on. For SST (Serverless Stack), AWS CDK was a great starting point—but it had limitations.

Explore SST's journey from its origins with CDK to its transition to Pulumi, a modern IaC platform that addresses many of the limitations faced by application developers.
🪢 CDK tied infrastructure to AWS.

😣 Debugging was frustrating due to CloudFormation templates.

☁️ Multi-cloud was nearly impossible.

The solution? Pulumi. In this post, we’ll explore why SST moved to Pulumi, what challenges they overcame, and what this means for developers building modern cloud applications.

👀 TL;DR: Pulumi lets SST offer a faster, more flexible, and provider-agnostic infrastructure experience.

<!--more-->

## On this article:
## In This Article:

- [The Beginnings of SST](/blog/from-cdk-pulumi-evolution-of-sst/#the-beginnings-of-sst)
- [CDK and CloudFormation Limitations](/blog/from-cdk-pulumi-evolution-of-sst/#cdk-and-cloudformation-limitations)
Expand All @@ -89,6 +98,17 @@ With CDK and [CloudFormation](https://www.pulumi.com/docs/iac/concepts/vs/cloud-

Additionally, as the SST's team expanded its focus beyond the AWS ecosystem and started exploring other cloud providers and even on-premises infrastructure, it found that the [AWS-centric nature of CDK](https://www.pulumi.com/docs/iac/concepts/vs/cloud-template-transpilers/aws-cdk/#what-is-aws-cdk) and CloudFormation was becoming a limitation. It needed a more flexible and provider-agnostic solution that would allow it to deploy and manage infrastructure across a wide range of platforms.

| Feature | AWS CDK | Pulumi |
|-------------------------|----------------------------|--------------------------------|
| **Multi-Cloud Support** | ❌ AWS-Only | ✅ AWS, Azure, GCP, On-Prem |
| **Debugging** | ❌ Hard due to CloudFormation | ✅ Real-time debugging |
| **Language Support** | ✅ TypeScript, Python | ✅ Any programming language |
| **Deployment Speed** | ⏳ Slower due to CloudFormation | ⚡ Faster direct execution |
| **Visibility** | 🔍 Hard to trace errors | ✅ Clear deployment state |
| **Extensibility** | ⚠️ Limited to AWS ecosystem | ✅ Custom providers & workflows |
| **State Management** | ❌ CloudFormation state file | ✅ Pulumi-managed state |
| **Secrets Management** | ❌ AWS Secrets Manager only | ✅ Cross-cloud secret support |

## A Provider-agnostic Solution: Discovering Pulumi

It was during this time that the SST team discovered Pulumi, a modern IaC platform that takes a fundamentally different approach to infrastructure management. Instead of generating an intermediary format, Pulumi treats the infrastructure code as a first-class program executed directly during deployment.
Expand All @@ -101,7 +121,7 @@ This paradigm shift had several important implications for SST and its users:

## Transitioning to Pulumi

Transitioning SST [from CDK to Pulumi](https://www.pulumi.com/tutorials/importing-aws-infrastructure/) was not a trivial undertaking. Still, they knew it was a necessary step to truly fulfill their mission of empowering application developers with powerful infrastructure management capabilities.
Transitioning SST from CDK to Pulumi was not a trivial undertaking. Still, they knew it was a necessary step to truly fulfill their mission of empowering application developers with powerful infrastructure management capabilities.

One key challenge they faced was re-implementing the higher-level components and abstractions they had built on top of CDK. These components were designed to simplify the infrastructure management experience for their users, and they wanted to ensure that they could provide a similar level of abstraction and ease of use with Pulumi.

Expand All @@ -111,6 +131,8 @@ Additionally, they had to carefully consider how to handle the various edge case

As they worked through the transition to Pulumi, they realized the significant benefits that Pulumi offered to both the SST team as the framework developers and the users.

![A quote from the Founding Engineer at SST: "With Pulumi, the deployment process feels like a natural extensino of writing code - it's intuitive and powerful and capable of advanced things that traditional IaC tools can't handle."](sst-with-pulumi-infrastructure-as-code-deployments.png)

### Improved Visibility and Debugging

One of Pulumi's most immediate and tangible benefits was the [improved visibility and debugging capabilities](https://www.pulumi.com/product/pulumi-insights/) it provided. With the infrastructure code being the same as the deployment code, they could easily trace issues back to the source and understand exactly what was happening during the deployment process.
Expand Down Expand Up @@ -154,7 +176,8 @@ If you're interested in exploring Pulumi further, here are several ways to get i
- Join an upcoming Platform Engineering & DevOps in-person meetup, [find a location near you](https://info.pulumi.com/platform-engineering-devops-series)
- Watch our on-demand workshop [Getting Stated with Infrastructure as Code on AWS](https://www.pulumi.com/resources/getting-started-with-iac-pulumi-aws/)
- Register for one of our upcoming [Platform Engineering or DevOps workshops](https://www.pulumi.com/resources/#upcoming)

- But most importantly, [try Pulumi](https://app.pulumi.com/signup) today!

---

## Frequently Asked Questions
Expand Down
11 changes: 7 additions & 4 deletions content/blog/executing-remote-commands/index.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,19 @@
---
title: Executing Remote Commands with Pulumi
date: 2022-02-03T22:10:00Z
updated: 2025-03-05
draft: false
meta_desc: In this article, we deploy k3s and use the Command package to retrieve our kubeconfig from the virtual-machine and create a Kubernetes provider
meta_desc: Deploy Kubernetes on DigitalOcean with Pulumi’s Command package. Run remote commands, fetch kubeconfig, and streamline Kubernetes automation effortlessly.
meta_image: meta.png
authors: ["david-flanagan"]
tags: ["kubernetes"]
tags:
- kubernetes
- digitalocean
---

We recently announced in our [release blog (66)](https://www.pulumi.com/blog/pulumi-release-notes-66/) a new package: [Command](https://www.pulumi.com/registry/packages/command/). In this article, I want to show you a practical application of this that will allow us to deploy [k3s](https://k3s.io) to a [DigitalOcean](https://digitalocean.com/products/kubernetes/) droplet. We'll then leverage the Command package to run a remote command to fetch the kubeconfig, generated on the VM, and pull it down to create a Kubernetes provider to deploy nginx.
We recently announced in our [release blog (66)](https://www.pulumi.com/blog/pulumi-release-notes-66/) a new package: [Command](https://www.pulumi.com/registry/packages/command/). In this article, I want to show you a practical application of this that will allow us to deploy [k3s](https://k3s.io) to a [DigitalOcean Kubernetes droplet](https://digitalocean.com/products/kubernetes/). We'll then leverage the Command package to run a remote command to fetch the kubeconfig, generated on the VM, and pull it down to create a Kubernetes provider to deploy nginx.

So, let's get started by deploying our Digital Ocean droplet.
So, let's get started by deploying our DigitalOcean droplet.

The first thing we're going to do is generate an SSH key for the machine.

Expand Down
Binary file not shown.
31 changes: 22 additions & 9 deletions content/blog/intro-architecture-templates/index.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
---
title: "Introducing Pulumi Architecture Templates"
date: 2022-10-19T10:59:37-05:00
meta_desc: |
Pulumi architecture templates provide basic building blocks for many
different cloud scenarios.
updated: 2025-03-05
meta_desc: "Accelerate cloud infrastructure deployments with Pulumi’s architecture templates. Get prebuilt, best-practice templates for AWS, GCP, Azure, and more."
meta_image: meta.png
authors:
- laura-santamaria
Expand All @@ -12,17 +11,21 @@ tags:
- architecture
---

One of the most common needs when someone starts a new project on cloud infrastructure is a scaffold of initial infrastructure that follows best practices. We're pleased to share our new architecture templates that allow you to define that scaffold with a single command on Pulumi.
🚀 Deploying cloud infrastructure is hard. Getting the architecture right from the start can be time-consuming. What if you could skip the hassle and start with prebuilt, best-practice templates?

📢 Pulumi Architecture Templates let you scaffold cloud infrastructure instantly with a single command. Whether you’re launching a serverless app on AWS, a container service on GCP, or a Kubernetes cluster on Azure, Pulumi gives you ready-to-use templates to get started faster.

➡️ Let’s dive in and see how these templates simplify cloud deployments.

<!--more-->

## Best practices for common architectures
## Best Practices for Common Architectures

While Pulumi allows you to define any architecture for any cloud, we often get asked for opinionated architectures to get started with different cloud-based scenarios. To meet this need, we've started building templates around best-practice architectures like [a serverless architecture on Google Cloud](/templates/serverless-application/gcp/) or [a container service architecture on AWS](/templates/container-service/aws/). To give a sense of what these templates are like, let's explore the serverless template for Google Cloud, which uses Cloud Storage and Cloud Functions to deploy a small application that tells the current time.
While Pulumi allows you to define any architecture for any cloud, we often get asked for opinionated architectures to get started with different cloud-based scenarios. To meet this need, we've started building templates around best-practice architectures like a [serverless architecture on Google Cloud](/templates/serverless-application/gcp/) or a [container service architecture on AWS](/templates/container-service/aws/). To give a sense of what these templates are like, let's explore the serverless template for Google Cloud, which uses Cloud Storage and Cloud Functions to deploy a small application that tells the current time.

{{< youtube "DaX8weCHO9A?rel=0" >}}

## An example: Google Cloud Functions
## Google Cloud Functions Example

There are a lot of additional components to add to any infrastructure on modern clouds, including roles created through access management. The Google Cloud Serverless Application template defines a number of necessary components:

Expand All @@ -35,7 +38,7 @@ There are a lot of additional components to add to any infrastructure on modern
* Another IAM member to run the Function
* An object in the bucket to hold some configuration values

## Deployments made simpler
## Deployments Made Simpler

Using this template (or any of the other templates, for that matter), you can create a new Pulumi project with the `pulumi new` command. The template's creation steps will now ask for all of the necessary configuration values for this template. No more deployment errors because you forgot to define your Google Cloud project with `pulumi config set`!

Expand All @@ -62,6 +65,16 @@ errorDocument: The file to use for error pages: (error.html)
indexDocument: The file to use for top-level pages: (index.html)
```

## Check them out yourself
### Pulumi Templates vs Manual Setup

| Feature | Pulumi Architecture Templates | Manual Setup |
|------------------------------|------------------------------|--------------|
| **Preconfigured Best Practices** | ✅ Yes | ❌ No |
| **Multi-Cloud Support** | ✅ AWS, GCP, Azure | ❌ Typically single-cloud |
| **Faster Deployments** | ✅ One command setup | ❌ Manual coding required |
| **Scalability** | ✅ Easily extensible | ⚠️ Needs custom scripts |
| **Infrastructure-as-Code (IaC)** | ✅ Pulumi-native | ❌ Requires manual IaC setup |

## Test Templates Yourself

There are already a number of templates built, and more are coming over the next weeks and months. We'll be exploring more templates in detail here on the blog and on [PulumiTV](https://www.youtube.com/channel/UC2Dhyn4Ev52YSbcpfnfP0Mw/) in the future. Review all the currently available architecture templates at [our templates page](/templates/). We'd love to hear what you think!
Loading
Loading