Deploy a Serverless Application using Crossplane on EKSOverview2 min

In this tutorial, we will walk you through deploying the serverless architecture depicted in the diagram using Crossplane on EKS. Crossplane is a CNCF open source project that extends the capabilities of Kubernetes to include infrastructure resource management. If you are not familiar with the fundamentals of Crossplane, we recommend first completing the official Crossplane getting started guide.

Prerequisites

Before starting this guide, you will need:

  • An AWS account: if you don't already have one follow the Setup Your Environment (Steps 1, 2, and 3) getting started guide for a quick overview.

  • The latest version of the AWS CLI: Visit our guide to get started installing or updating the AWS CLI.

  • Kubectl: Visit Amazon EKS guide to get started installing or updating kubectl.

  • EKS cluster and Crossplane: follow this Readme to create with Terraform >= 1.0.0

  • EKS cluster >= 1.27

  • Crossplane helm chart >= 1.13

  • Crossplane official aws-provider configured to access AWS API >= 0.38

  • Go: Find the installation instructions here.

  • Docker: Find the installation instructions here.

Modules

This tutorial is divided into the following short modules. You must complete each module before moving to the next one.

  • Build a docker image and push to ECR (5 mins): Build a Docker image of a sample application, create an ECR repository, and upload the image to it.

  • Deploy the serverless application (15 mins): Using the Kubernetes command line, deploy Crossplane Resource Definitions, Compositions, and Claims in order to create your resources for your serverless application.

  • Test (5 mins): Send a message to your newly created SQS queue and observe it triggering your Lambda function and publishing the result in your S3 bucket.

  • Clean up resources (5 mins): In this last part of the guide you learn how to clean after you are done.


Created by:

David Boyne
David BoyneHelping people learn about event-driven architectures and serverless