Skip to main content

EKS library for the Halloumi modules of the AWS CDK

Project description

Github

Halloumi EKS for the CDK

EKS library for the Halloumi modules of the AWS CDK

Installation

pip install hcdk_eks

Usage

Halloumi EKS can be used as a basis to deploy EKS clusters with managed Nodegroups on AWS using the CDK.

Passing your own VPC

Example

Within a sample stack, the following example code should be present for minimum functionality.

self.eks_cluster_public_subnet_name = 'eks_public'
self.eks_cluster_private_subnet_name = 'eks_private'
self.eks_cluster_name = 'EksCluster'
self.eks_stack_name = 'eks-cluster-stack'

# prerequisites for EKS
self.vpc = ec2.Vpc(
    self, 'Vpc',
    cidr='10.0.0.0/16',
    max_azs=99,  # use all available AZs,
    subnet_configuration=[
        {
            'cidrMask': 26,
            'name': self.eks_cluster_public_subnet_name,
            'subnetType': ec2.SubnetType.PUBLIC
        },
        {
            'cidrMask': 24,
            'name': self.eks_cluster_private_subnet_name,
            'subnetType': ec2.SubnetType.PRIVATE
        }
    ]
)

# Add necessary tags to subnets for the EKS Cluster
private_eks_subnets = self.vpc.select_subnets(
    subnet_name=self.eks_cluster_private_subnet_name
).subnets
for subnet in private_eks_subnets:
    core.Tag.add(
        subnet,
        key=f'kubernetes.io/cluster/{self.eks_cluster_name}',
        value='shared'
    )
    core.Tag.add(
        subnet,
        key=f'kubernetes.io/role/internal-elb',
        value='1'
    )

# Add necessary tags to subnets for the EKS Cluster
public_eks_subnets = self.vpc.select_subnets(
    subnet_name=self.eks_cluster_public_subnet_name
).subnets
for subnet in public_eks_subnets:
    core.Tag.add(
        subnet,
        key=f'kubernetes.io/cluster/{self.eks_cluster_name}',
        value='shared'
    )
    core.Tag.add(
        subnet,
        key=f'kubernetes.io/role/elb',
        value='1'
    )

EKS Cluster

Example

from hcdk_eks import HalloumiEksCluster

app = core.App()

sample_stack = SampleAppStack(app, "sample-app")

__config_eks_cluster = {
    'stack_name': sample_stack.eks_stack_name,
    'eks_cluster_public_subnet_name': sample_stack.eks_cluster_public_subnet_name,
    'eks_cluster_private_subnet_name': sample_stack.eks_cluster_private_subnet_name,
    'eks_cluster_name': sample_stack.eks_cluster_name,
    'kubernetes_version': '1.14',
    'nodegroups': {
        'nodegroup1': {
            'instance_types': [
                't3.large'
            ]
        },
        'nodegroup2': {
            'instance_types': [
                't3.xlarge'
            ]
        }
    }
}

eks_stack = cfn.NestedStack(
    sample_stack, 'eks-stack'
)

HalloumiEksCluster(
    scope=eks_stack,
    vpc=sample_stack.vpc,
    config=__config_eks_cluster
)

app.synth()

Using the VPC from the module

Example

from hcdk_eks import HalloumiEksCluster

app = core.App()
sample_stack = SampleAppStack(app, "sample-app")

__config_eks_cluster = {
    'nodegroups': {
        'nodegroup1': {
            'instance_types': [
                't3.large'
            ]
        },
        'nodegroup2': {
            'instance_types': [
                't3.xlarge'
            ]
        }
    }
}

# EKS Cluster Stack
eks_cluster_stack = cfn.NestedStack(
    sample_stack, 'eks-cluster-stack'
)

eks_cluster = HalloumiEksCluster(
    scope=eks_cluster_stack,
    config=__config_eks_cluster
)

synth = app.synth()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for hcdk-eks, version 0.0.3
Filename, size File type Python version Upload date Hashes
Filename, size hcdk_eks-0.0.3-py3-none-any.whl (8.0 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size hcdk_eks-0.0.3.tar.gz (4.4 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page