Innovate at the speed of light with modern applications powered by modular architectures running on purpose-built AWS services.
Learn how you can deploy Amazon EKS Kubernetes clusters built on top of AWS Cloud Development Kit in just minutes using Amazon EKS blueprints.
AWS just released Amazon EKS Blueprints! In this post, we will walk through the core features, some key terminology, when to use EKS Blueprints, and how it can help you to deploy production-grade Kubernetes clusters in minutes.
EKS Blueprints is built on top of AWS Cloud Development Kit (CDK). You may have heard about CDK before on this blog but if you are not aware of what CDK is we can briefly summarize it as “A development framework to define your cloud infrastructure”, you can write your infrastructure as code in familiar programming languages like Typescript, Python, Java, and others. CDK also supports several extensions in the form of CDKTFfor Terraform, and CDK8s for Kubernetes.
EKS Blueprints is a framework specifically for deploying EKS clusters built on top of CDK, currently EKS Blueprints is available via the CDK with a sister repo supporting much of the same functionality in Terraform.
The framework will enable you to deploy “Blueprints” which are EKS clusters with built-in features like user management, ArgoCD, AWS Load Balancer Controller, and even AWS CodePipeline to automatically deliver your infrastructure.
Example: To quickly create a test cluster: create and navigate to a new directory e.g. (
~/eks-bp-testing). Then run the following command (assuming a recent version of node):
npx aws-cdk init –language typescript
This will create a basic CDK environment in the directory. Next, install the EKS blueprints
npm i @aws-quickstart/eks-blueprints
Note, we typically
alias cdk to
npx aws-cdk to use either the latest version of CDK or the version of the CDK local to each project.
From here we can modify the
bin/eks-bp-testing.ts file to launch a basic EKS blueprint with no addons, teams, or pipelines:
Note, you might need to run cdk-bootstrap if you’ve not used CDK in the AWS account before. After running cdk deploy you will see the output to configure your kubectl. Now, we can modify the cluster to enable let’s enable ArgoCD:
Since we are not using an Ingress controller, for now, you will need to do a port-forward to connect to the ArgoCD UI.
Go to http://localhost:8080 and you should see the ArgoCD UI:
You can find more information on how ArgoCD works here.
The same Blueprint can be easily deployed in different regions or different accounts.
Add-ons: EKS Blueprints provides multiple built-in add-ons like ArgoCD, Nginx, External DNS, AWS Load Balancer and etc. You can check the full list here.
You can create your own Add-ons by implementing the ClusterAddOn interface.
Teams: You can easily configure which AWS IAM entity has access to your cluster just by extending the classes ApplicationTeam and PlatformTeam.
While PlatformTeam has administrative access to the cluster, ApplicationTeam will only have access to a specific namespace.
It is really helpful to be able to define your users with code in the same place where you have your cluster definition.
Pipelines: While you can use the CDK CLI tool to deploy your changes, it is recommended that you leverage the Pipelines CDK module to create CodePipelines and release your code using Continuous Integration.
Application: Since you can use the built-in ArgoCD add-on, you can deploy ArgoCD applications and automatically deliver your workloads to your cluster. Learn more about how to do it here.
EKS Blueprints’ main focus is to make the deployment of EKS and its additional features easy for everyone, you don’t need to build your own EKS module with Terraform and if you are a developer with no Terraform experience you can use TypeScript to build your infrastructure, just like you would do with your application.
If you are like most people that only need a running EKS cluster with RBAC and an Ingress Controller, EKS Blueprints will work very well for you.
You can also take advantage of Pipelines and easily create CodePipelines to release your infrastructure to different environments, without having to understand how AWS CloudFormation works under the hood.
If you are already deploying EKS and its components in your infrastructure, then you probably don’t have much use for EKS Blueprints. Also, if you are planning on integrating non-AWS resources into your environment, like a different CI tool other than CodePipelines, it can be tricky to make EKS Blueprints work.
Overall we’re excited about EKS Blueprints at Caylent. That said, this is a new release and we recommend testing it out yourself. If you would like to learn more about modern operations for your Kubernetes workloads, contact us.
Learn how to implement disaster recovery capabilities for your Amazon Quantum Ledger Data Base to improve the availability of your applications across different regions or accounts
Save costs while simultaneously improving your application performance and developer velocity by modernizing applications on AWS
Carefully strategize your application modernization when going cloud native on AWS, with a checklist of considerations and best practices.