EKS library for the Halloumi modules of the AWS CDK
Project description
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
hcdk_eks-0.0.3.tar.gz
(4.4 kB
view hashes)