Code Monkey home page Code Monkey logo

cdk-eks-blueprints's Introduction

Amazon EKS Blueprints for CDK

GitHub Build

Welcome to Amazon EKS Blueprints for CDK.

This repository contains the source code for the eks-blueprints NPM module. It can be used by AWS customers, partners, and internal AWS teams to configure and manage complete EKS clusters that are fully bootstrapped with the operational software that is needed to deploy and operate workloads.

Getting Started

The easiest way to get started with EKS Blueprints is to follow our Getting Started guide.

Documentation

For complete project documentation, please see our official project documentation site.

Examples

To view a library of examples for how you can leverage the eks-blueprints, please see our Blueprints Patterns Repository.

What can I do with this QuickStart?

Customers can use this QuickStart to easily architect and deploy a multi-team Blueprints built on EKS. Specifically, customers can leverage the eks-blueprints module to:

  • Deploy Well-Architected EKS clusters across any number of accounts and regions.
  • Manage cluster configuration, including addons that run in each cluster, from a single Git repository.
  • Define teams, namespaces, and their associated access permissions for your clusters.
  • Create Continuous Delivery (CD) pipelines that are responsible for deploying your infrastructure.
  • Leverage GitOps-based workflows for onboarding and managing workloads for your teams.

You can also find a sample implementation that resides in this repository in bin/main.ts.

Getting Started

First, make sure you have the aws-cli installed. To verify your installation, run the following:

aws --version
# output aws-cli/2.2.3 Python/3.9.5 Darwin/20.3.0 source/x86_64 prompt/off

Install CDK matching the current version of the Blueprints QuickStart (which can be found in package.json).

npm install -g [email protected]

Verify the installation.

cdk --version
# must output 2.99.1

Create a new CDK project. We use typescript for this example.

cdk init app --language typescript

Bootstrap your environment.

cdk bootstrap aws://<AWS_ACCOUNT_ID>/<AWS_REGION>

Usage

Run the following command to install the eks-blueprints dependency in your project.

npm i @aws-quickstart/eks-blueprints

Replace the contents of bin/<your-main-file>.ts (where your-main-file by default is the name of the root project directory) with the following:

import 'source-map-support/register';
import * as cdk from 'aws-cdk-lib';
import * as blueprints from '@aws-quickstart/eks-blueprints';

const app = new cdk.App();

// AddOns for the cluster.
const addOns: Array<blueprints.ClusterAddOn> = [
    new blueprints.addons.ArgoCDAddOn,
    new blueprints.addons.CalicoOperatorAddOn,
    new blueprints.addons.MetricsServerAddOn,
    new blueprints.addons.ClusterAutoScalerAddOn,
    new blueprints.addons.ContainerInsightsAddOn,
    new blueprints.addons.AwsLoadBalancerControllerAddOn(),
    new blueprints.addons.VpcCniAddOn(),
    new blueprints.addons.CoreDnsAddOn(),
    new blueprints.addons.KubeProxyAddOn(),
    new blueprints.addons.XrayAddOn()
];

const account = 'XXXXXXXXXXXXX';
const region = 'us-east-2';

const stack = blueprints.EksBlueprint.builder()
    .account(account)
    .region(region)
    .addOns(...addOns)
    .build(app, 'eks-blueprint');
// do something with stack or drop this variable

Note: if the account/region combination used in the code example above is different from the initial combination used with cdk bootstrap, you will need to perform cdk bootstrap again to avoid error.

Please reference CDK usage doc for detail.

Deploy the stack using the following command

cdk deploy

This will provision the following:


Why should I use this QuickStart?

The ecosystem of tools that have developed around Kubernetes and the Cloud Native Computing Foundation (CNCF) provides cloud engineers with a wealth of choice when it comes to architecting their infrastructure. Determining the right mix of tools and services however, in addition to how they integrate, can be a challenge. As your Kubernetes estate grows, managing configuration for your clusters can also become a challenge.

AWS customers are building internal platforms to tame this complexity, automate the management of their Kubernetes environments, and make it easy for developers to onboard their workloads. However, these platforms require investment of time and engineering resources to build. The goal of this QuickStart is to provide customers with a tool chain that can help them deploy a Well-Architected platform on top of EKS with ease. The eks-blueprints framework provides logical abstractions and prescriptive guidance for building a platform. Ultimately, we want to help EKS customers accelerate time to market for their own platform initiatives.

Contributing

Please see Internal Guidelines for details on contributions.

Feedback

For architectural details, step-by-step instructions, and customization options, see our official documentation site.

To post feedback, submit feature ideas, or report bugs, use the Issues section of this GitHub repo.

To submit code for this Quick Start, see the AWS Quick Start Contributor's Kit.

License

This library is licensed under the Apache 2.0 License.

cdk-eks-blueprints's People

Contributors

shapirov103 avatar elamaran11 avatar youngjeong46 avatar askulkarni2 avatar kcoleman731 avatar zjaco13 avatar aliaksei-ivanou avatar parkand1 avatar camba1 avatar starchx avatar 5herlocked avatar kcaws avatar howlla avatar freschri avatar haofeif avatar tsahiduek avatar codemato avatar lmouhib avatar arpitn2020 avatar edgarsilva948 avatar anjanaviyer avatar pflorek avatar bnaydenov avatar ybezsonov avatar aimichelle avatar niravparikh05 avatar elenalape avatar ratnopamc avatar danilko avatar eli1123 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.