In today's fast-paced technology landscape, creating a robust developer platform is essential for streamlining software development processes and ensuring efficient collaboration across teams. In this talk, we will explore how you can build your own developer platform in just 90 minutes using a powerful combination of Backstage, ArgoCD, and Kubernetes (K8s). By the end of this workshop, attendees will have a solid understanding of how to leverage Backstage, ArgoCD, and Kubernetes to create a developer platform that enhances productivity, enables efficient collaboration, and ensures reliable application deployments. Join us and learn how to build your own developer platform in just 90 minutes, empowering your teams to deliver high-quality software faster and more efficiently. Come prepared for the workshop by following these instructions beforehand: https://gist.github.com/dirien/bfedaeb916c8088b340b91e8b2613647 The following is a post-event recording of the LIVE workshop delivered by Udi Hofesh and Engin Diri on DevOpsDays Tel Aviv 2024. Below is an AI-generated transcript of the video: https://youtu.be/T1e9lfS0xm4 0:01 Hi everyone, welcome to "Build Your Own Developer Platform," a 90-minute workshop. I'm Udi Hofesh, heading Developer Relations and Technical Product Marketing at Komodor. I'm also the co-founder of the Platformers community, and today, with Engin, we're going to show you how to build an IDP using Backstage, Kubernetes, and Argo CD. 0:21 Hi, I'm Engin, working as a Customer Experience Architect at Pulumi, and I'm passionate about cloud transformation enablement. As you can see, I love Java (it's life!), and you can find my credentials below, including my Blue Sky handle. Let’s dive in! 0:50 Our agenda for today is as follows: We’ll provide an overview of developer platforms—what they are, what use cases they fit, and why use them. Then, we’ll get to work, starting by deploying a cluster on DigitalOcean. Next, we’ll set up Argo CD as our CI/CD pipeline and source control, then deploy Backstage as our developer platform UI. Finally, we’ll deploy our first application to Backstage and, once done, destroy the setup. 1:51 What is Platform Engineering? Platform engineering is about building and operating a platform as a product for technology teams. In simpler terms, it addresses the complexity and multitude of tools, libraries, frameworks, and languages that modern development involves. It provides a shared platform that makes essential tools accessible, easing cognitive load and enabling development and other teams (like data engineering or BI) to efficiently access resources through a unified UI—in this case, Backstage. 2:55 An example: the platform team treats this platform as a product, not just a project. Developers are the platform’s end users, and as with any product, the team iterates based on feedback, constantly releasing improvements. 4:52 Our Blueprint We’ll use Kubernetes as our base platform, with GitHub as our repo (specifically GitHub Codespaces). We’ll deploy a Kubernetes cluster on DigitalOcean via Pulumi, and set up Argo CD as our CD pipeline and GitOps engine. Backstage will serve as our interface for developers to access templates, services, and resources. Finally, we’ll run our first application on this setup. 5:54 Prerequisites Fork the GitHub repo. A GitHub account with Codespaces. A DigitalOcean token (you’ll need your own if recreating this setup). 6:41 While setting up Codespaces, note that the dev container has all necessary tools pre-installed—Pulumi CLI, kubectl, Helm, etc., saving you from versioning concerns. Once our setup is ready, we’ll dive into building the cluster. 7:46 Introduction to Pulumi Pulumi is a modern infrastructure-as-code tool that lets you define infrastructure using familiar programming languages like Python, Go, or TypeScript. It supports all major cloud providers and is open source with a free tier on Pulumi Cloud, simplifying state management. Pulumi’s flexibility is one of its key strengths. 9:24 Pulumi operates in three main stages: Build: Define your infrastructure in your preferred programming language. Deploy: Pulumi has a rich ecosystem that lets you deploy on any major cloud provider. Manage: Pulumi is non-invasive and integrates easily with existing CI/CD systems. 13:16 Creating the Kubernetes Cluster In our Pulumi YAML file, we define properties for a DigitalOcean cluster, setting up a Kubernetes provider and an NGINX Ingress controller to route traffic for Argo CD and Backstage. 15:01 Once the setup is completed, we’re ready to deploy Argo CD as our GitOps engine. 16:38 What is GitOps? In a typical CI/CD workflow, changes pushed to a Git repository trigger a CI pipeline, which builds images, updates definitions, and deploys changes to clusters. GitOps centralizes this by having a GitOps engine (Argo CD in our case) monitor a Git repository for changes and apply them automatically, simplifying access management and security. 19:31 Argo CD extends the Kubernetes API, using custom resources like "Application" and "ApplicationSet." We’ll configure these to deploy and manage apps in our cluster. 20:04 Introduction to Backstage Backstage, developed by Spotify, is an open-source developer portal that helps developers manage, monitor, and troubleshoot their applications. Backstage allows developers to work independently, speeding up development cycles and reducing cognitive load. It also fosters a better developer experience with self-service capabilities and organizational transparency. 28:04 Here, we use Backstage as a portal to visualize dependencies, access APIs, and manage the entire software landscape. Backstage's plugin-based architecture lets us add custom functionality, like integrating with Commodore for monitoring. 30:35 Deploying our First Application We’ll import an existing project into Backstage. This involves defining a component YAML file, which describes application metadata and links it to plugins like Kubernetes and Argo CD. This allows Backstage to display deployment states, logs, and more for each component, providing a centralized view of our applications. 36:13 Housekeeping After our demo, we’ll destroy everything using Pulumi to avoid any unnecessary resource costs. This involves removing apps from the Git repo, allowing Argo CD to clean up Kubernetes resources, and finally destroying the DigitalOcean cluster. Recap We deployed a Kubernetes cluster using DigitalOcean and Pulumi. We set up Argo CD as our GitOps engine. We deployed Backstage for developer access. Our first application was deployed and managed via Backstage. Finally, we cleaned up all resources to conclude the workshop. 39:06 Thank you for joining us! We hope this provided a solid foundation for building and scaling developer platforms. You can reach out to us on LinkedIn, Twitter, or BlueSky. See you next time!