A Pulumi component for easily creating an Amazon EKS Cluster
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
build Initial commit. Aug 17, 2018
nodejs Merge pull request #55 from pulumi/lukehoban/desiredcapacity Jan 29, 2019
scripts Update version scripts (#26) Nov 21, 2018
.gitignore Delete yarn.lock files Nov 16, 2018
.travis.yml Don't use `dev` tags as version contraints Nov 20, 2018
CHANGELOG.md Prepare for 0.16.6 release Jan 30, 2019
CODE-OF-CONDUCT.md Initial commit. Aug 17, 2018
Gopkg.lock
Gopkg.toml
LICENSE Initial commit. Aug 17, 2018
Makefile Various fixes and improvements (#5) Sep 11, 2018
README.md Fix up links to repo (#38) Dec 13, 2018

README.md

Build Status

Pulumi Amazon Web Services (AWS) EKS Components

Pulumi's library for easily creating and managing EKS Kubernetes clusters.

This package is meant for use with the Pulumi CLI. Please visit pulumi.io for installation instructions.

Installing

This package is available in JavaScript/TypeScript for use with Node.js. Install it using either npm:

$ npm install @pulumi/eks

or yarn:

$ yarn add @pulumi/eks

This package requires aws-iam-authenticator for Amazon EKS in order to deploy resources to EKS clusters. Install this tool using the official instructions under "To install aws-iam-authenticator for Amazon EKS".

kubectl is also required if any VPC CNI options are configured; installation instructions are here.

Concepts

This package provides a Pulumi component that creates and manages the resource necessary to run an EKS Kubernetes cluster in AWS. This includes:

  • The EKS cluster itself
  • The cluster's worker nodes, which are managed by an autoscaling group
  • The Kubernetes resources needed to allow the worker nodes to access the cluster
  • Any Kubernetes StorageClasses needed for applications that will be deployed to the cluster
  • An optional deployment of the Kubernetes Dashboard

The default configuration targets the default VPC and creates an autoscaling group of 2 "t2.medium" EC2 instances, a "gp2" default StorageClass, and a deployment of the Kubernetes Dashboard:

import * as eks from "@pulumi/eks";

const cluster = new eks.Cluster("cluster");

export const kubeconfig = cluster.kubeconfig;

Once the cluster is created, you can deploy into the cluster using "@pulumi/kubernetes", kubectl, helm, etc.

import * as eks from "@pulumi/eks";
import * as k8s from "@pulumi/kubernetes";

const cluster = new eks.Cluster("cluster");

const hackmd = new k8s.helm.v2.Chart("hackmd", {
    repo: "stable",
    chart: "hackmd",
    version: "0.1.1",
    values: {
        service: {
            type: "LoadBalancer",
            port: 80,
        },
    },
}, { providers: { kubernetes: cluster.provider } });

Reference

For detailed reference documentation, please visit the API docs.