GithubHelp home page GithubHelp logo

neilkuan / cdk8s-aws-load-balancer-controller Goto Github PK

View Code? Open in Web Editor NEW
11.0 2.0 5.0 3.99 MB

cdk8s aws alb ingress controller(aka. aws load balance controller)

License: Apache License 2.0

JavaScript 0.38% TypeScript 97.56% Shell 2.05%
cdk8s cdk aws alb-ingress-controller v1 v2

cdk8s-aws-load-balancer-controller's Introduction

NPM version PyPI version Release

Downloads npm PyPI

cdk8s-aws-load-balancer-controller

cdk8s aws load balancer controller constructs for cdk8s

This project was formerly known as "CDK AWS ALB Ingress Controller", I just rename it to be "CDK AWS Load Balancer Controller".

Basic implementation of a aws load balancer controller construct for cdk8s. Contributions are welcome!

Before Usage need to install helm

curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh

Usage

npm i cdk8s-aws-load-balancer-controller 
npm i cdk8s
or 
yarn add cdk8s-aws-load-balancer-controller
yarn add cdk8s

AWS Load Balance Controller V1

import { App, Chart } from 'cdk8s';
import { Construct } from 'constructs';
import { AlbIngressController } from 'cdk8s-aws-load-balancer-controller';

export class MyChart extends Chart {
  constructor(scope: Construct, name: string) {
    super(scope, name);
    new AlbIngressController(this, 'albingresscntroller', {
      clusterName: 'EKScluster',
    });
  }
}
const app = new App();
new MyChart(app, 'testcdk8s');
app.synth();

AWS Load Balance Controller V2

import { App, Chart } from 'cdk8s';
import { AwsLoadBalancerController } from 'cdk8s-aws-load-balancer-controller';
import * as constructs from 'constructs';

export interface MyChartProps {
  readonly clusterName: string;
}

export class MyChart extends Chart {
  readonly deploymentName: string;
  readonly deploymentNameSpace: string;
  constructor(scope: Construct, name: string, props: MyChartProps) {
    super(scope, name);
    const alb = new AwsLoadBalancerController(this, 'alb', {
      clusterName: props.clusterName,
      createServiceAccount: false,
    });
    this.deploymentName = alb.deploymentName;
    this.deploymentNameSpace = alb.namespace;
  }
}
const app = new App();
new MyChart(app, 'testcdk8s');
app.synth();

AWS Load Balance Controller V2 specific Namespace.

import { App, Chart } from 'cdk8s';
import { AwsLoadBalancerController } from 'cdk8s-aws-load-balancer-controller';
import * as constructs from 'constructs';

export interface MyChartProps {
  readonly clusterName: string;
}

export class MyChart extends Chart {
  readonly deploymentName: string;
  readonly deploymentNameSpace: string;
  constructor(scope: Construct, name: string, props: MyChartProps) {
    super(scope, name);
    const alb = new AwsLoadBalancerController(this, 'alb', {
      clusterName: props.clusterName,
      createServiceAccount: false,
      namespace: 'kube-system',
    });
    this.deploymentName = alb.deploymentName;
    this.deploymentNameSpace = alb.namespace;
  }
}
const app = new App();
new MyChart(app, 'testcdk8s');
app.synth();

Featrue For Add IAM Policy.

  • For IRSA add IAM Policy version 1.
// CDK APP like eks_cluster.ts
import { AwsLoadBalancePolicy, VersionsLists } from 'cdk8s-aws-load-balancer-controller';
import * as eks from '@aws-cdk/aws-eks';
    const cluster = new eks.Cluster(this, 'MyK8SCluster', {
      defaultCapacity: 0,
      mastersRole: clusterAdmin,
      version: eks.KubernetesVersion.V1_18,
    });

    const albServiceAccount = cluster.addServiceAccount('alb-ingress-controller', {
      name: 'alb-ingress-controller',
      namespace: 'kube-system',
    });
    // will help you add policy to IAM Role .
    AwsLoadBalancePolicy.addPolicy(VersionsLists.AWS_LOAD_BALANCER_CONTROLLER_POLICY_V1, albServiceAccount);
  • For IRSA add IAM Policy version 2.
// CDK APP like eks_cluster.ts
import { AwsLoadBalancePolicy, VersionsLists } from 'cdk8s-aws-load-balancer-controller';
import * as eks from '@aws-cdk/aws-eks';
    const cluster = new eks.Cluster(this, 'MyK8SCluster', {
      defaultCapacity: 0,
      mastersRole: clusterAdmin,
      version: eks.KubernetesVersion.V1_18,
    });

    const sa = new eks.ServiceAccount(this, 'albserviceaccount', {
      cluster: cluster,
      name: 'aws-load-balancer-controller',
    });
    AwsLoadBalancePolicy.addPolicy(VersionsLists.AWS_LOAD_BALANCER_CONTROLLER_POLICY_V2, sa );

Also can see example repo 1 or example repo 2 work with aws cdk.

License

Distributed under the Apache 2.0 license.

cdk8s-aws-load-balancer-controller's People

Contributors

dependabot[bot] avatar mergify[bot] avatar neilkuan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

cdk8s-aws-load-balancer-controller's Issues

Hard dep on CDK version

There is a hard dep on 1.113.0 of the CDK. Could this be changed to a ^1.113.0 and a peer dep

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.