-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
- Loading branch information
There are no files selected for viewing
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,83 @@ | ||
from aws_cdk import ( | ||
aws_eks as eks, | ||
core as cdk | ||
) | ||
|
||
class MyStack(cdk.Stack): | ||
def __init__(self, scope: cdk.Construct, id: str, **kwargs) -> None: | ||
super().__init__(scope, id, **kwargs) | ||
|
||
region = self.region | ||
cluster_name = "seeding" | ||
node_role_arn = f"arn:aws:iam::{self.account}:role/AmazonEKSNodeRole" | ||
|
||
subnet_ids = [ | ||
"subnet-074b20489ec871f49", | ||
"subnet-0857a5df8524ba123", | ||
"subnet-0377bf26f064cb8b4", | ||
"subnet-022080e2e17c47186" | ||
] | ||
|
||
eks.CfnCluster( | ||
self, | ||
"EKSCluster", | ||
name=cluster_name, | ||
role_arn=f"arn:aws:iam::{self.account}:role/eksctl-{cluster_name}-ServiceRole-1JCJBVAEJHHNK", | ||
version="1.26", | ||
resources_vpc_config={ | ||
"security_group_ids": ["sg-044a1e970c2d60905"], | ||
"subnet_ids": subnet_ids | ||
}, | ||
kubernetes_network_config={"service_ipv4_cidr": "10.100.0.0/16"} | ||
) | ||
|
||
nodegroup_props = { | ||
"version": "1.26", | ||
"release_version": "1.26.6-20230711", | ||
"instance_types": ["t3.xlarge"], | ||
"subnets": subnet_ids, | ||
"ami_type": "AL2_x86_64", | ||
"node_role": node_role_arn, | ||
"disk_size": 50, | ||
"capacity_type": "ON_DEMAND" | ||
} | ||
|
||
eks.CfnNodegroup(self, "EKSNodegroup1", nodegroup_name="se-hub2", cluster_name=cluster_name, **nodegroup_props) | ||
|
||
nodegroup_props.update( | ||
{ | ||
"nodegroup_name": "Prometheus", | ||
"min_size": 1, | ||
"max_size": 1, | ||
"desired_size": 1, | ||
"instance_types": ["t3.medium"], | ||
"labels": {"app": "prometheus-server"} | ||
} | ||
) | ||
eks.CfnNodegroup(self, "EKSNodegroup2", cluster_name=cluster_name, **nodegroup_props) | ||
|
||
nodegroup_props.update( | ||
{ | ||
"nodegroup_name": "se-1", | ||
"version": "1.25", | ||
"release_version": "1.25.11-20230711", | ||
"min_size": 1, | ||
"max_size": 1, | ||
"desired_size": 1, | ||
"instance_types": ["t3.xlarge"], | ||
"remote_access": {"ec2_ssh_key": "784264783", "source_security_groups": ["sg-005e0e4d4e9762b20"]}, | ||
"labels": {}, | ||
"tags": {"app": "seeding", "grid": "hub"} | ||
} | ||
) | ||
eks.CfnNodegroup(self, "EKSNodegroup3", cluster_name=cluster_name, **nodegroup_props) | ||
|
||
eks.CfnAddon(self, "EKSAddon1", addon_name="coredns", addon_version="v1.9.3-eksbuild.2", cluster_name=cluster_name) | ||
eks.CfnAddon(self, "EKSAddon2", addon_name="vpc-cni", addon_version="v1.12.2-eksbuild.1", cluster_name=cluster_name) | ||
eks.CfnAddon(self, "EKSAddon3", addon_name="kubecost_kubecost", addon_version="v1.102.2-eksbuild.0", cluster_name=cluster_name) | ||
eks.CfnAddon(self, "EKSAddon4", addon_name="kube-proxy", addon_version="v1.25.6-eksbuild.1", cluster_name=cluster_name) | ||
eks.CfnAddon(self, "EKSAddon5", addon_name="aws-ebs-csi-driver", addon_version="v1.17.0-eksbuild.1", cluster_name=cluster_name, service_account_role_arn="arn:aws:iam::331911183167:role/AmazonEKS_EBS_CSI_Driver") | ||
|
||
app = cdk.App() | ||
MyStack(app, "my-stack-name", env={'region': 'us-east-1'}) | ||
app.synth() |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
from aws_cdk import ( | ||
aws_eks as eks, | ||
aws_ec2 as ec2, | ||
aws_iam as iam, | ||
core as cdk | ||
) | ||
|
||
class MyStack(cdk.Stack): | ||
def __init__(self, scope: cdk.Construct, id: str, **kwargs) -> None: | ||
super().__init__(scope, id, **kwargs) | ||
self.create_resources() | ||
|
||
def create_resources(self): | ||
# ... Define VPC and subnets ... | ||
|
||
# IAM Roles and Policies | ||
# ... Define IAM roles and policies ... | ||
|
||
# EKS Cluster | ||
cluster_name = "seeding" | ||
eks_version = "1.26" | ||
cluster = eks.CfnCluster( | ||
self, | ||
"EKSCluster", | ||
name=cluster_name, | ||
role_arn=iam_role_8.attr_arn, # Replace with appropriate IAM role | ||
version=eks_version, | ||
resources_vpc_config={ | ||
"security_group_ids": ["sg-044a1e970c2d60905"], | ||
"subnet_ids": subnets | ||
}, | ||
kubernetes_network_config={"service_ipv4_cidr": "10.100.0.0/16"} | ||
) | ||
|
||
# EKS Nodegroups | ||
nodegroup_configs = [ | ||
{"name": "se-1", "instance_type": "t3.xlarge"}, | ||
# ... Other nodegroups ... | ||
] | ||
|
||
for i, nodegroup_config in enumerate(nodegroup_configs, start=1): | ||
eks.CfnNodegroup( | ||
self, | ||
f"EKSNodegroup{i}", | ||
nodegroup_name=nodegroup_config['name'], | ||
cluster_name=cluster_name, | ||
version=eks_version, | ||
# ... Other attributes ... | ||
) | ||
|
||
# EKS Addons | ||
addons = [ | ||
{"name": "kube-proxy", "version": "v1.25.6-eksbuild.1"}, | ||
{"name": "vpc-cni", "version": "v1.12.2-eksbuild.1"}, | ||
{"name": "aws-ebs-csi-driver", "version": "v1.17.0-eksbuild.1", "role_arn": iam_role4.attr_arn}, | ||
# ... Other addons ... | ||
] | ||
|
||
for i, addon in enumerate(addons, start=1): | ||
eks.CfnAddon( | ||
self, | ||
f"EKSAddon{i}", | ||
addon_name=addon['name'], | ||
addon_version=addon['version'], | ||
cluster_name=cluster_name, | ||
service_account_role_arn=addon.get('role_arn', None) | ||
) | ||
|
||
# ... Synthesize the app ... | ||
|
||
app = cdk.App() | ||
MyStack(app, "my-stack-name", env={'region': 'us-east-1'}) | ||
app.synth() |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,115 @@ | ||
from aws_cdk import ( | ||
aws_eks as eks, | ||
aws_ec2 as ec2, | ||
aws_iam as iam, | ||
core as cdk | ||
) | ||
|
||
class MyStack(cdk.Stack): | ||
def __init__(self, scope: cdk.Construct, id: str, **kwargs) -> None: | ||
super().__init__(scope, id, **kwargs) | ||
|
||
self.create_eks_cluster() | ||
|
||
def create_eks_cluster(self): | ||
vpc = self.create_vpc() | ||
eks_role = self.create_eks_service_role() | ||
|
||
cluster = eks.CfnCluster( | ||
self, | ||
"EKSCluster", | ||
name="seeding", | ||
role_arn=eks_role.attr_arn, | ||
version="1.26", | ||
resources_vpc_config={ | ||
"security_group_ids": ["sg-044a1e970c2d60905"], | ||
"subnet_ids": [subnet.ref for subnet in vpc.private_subnets] | ||
}, | ||
kubernetes_network_config={ | ||
"service_ipv4_cidr": "10.100.0.0/16" | ||
} | ||
) | ||
|
||
self.create_eks_nodegroup("se-1", cluster, vpc.private_subnets, "t3.xlarge", "1.25") | ||
self.create_eks_nodegroup("Prometheus", cluster, vpc.private_subnets, "t3.medium", "1.26") | ||
self.create_eks_nodegroup("se-hub2", cluster, vpc.private_subnets, "t3.xlarge", "1.26") | ||
|
||
self.create_eks_addon("kube-proxy", "v1.25.6-eksbuild.1", cluster) | ||
self.create_eks_addon("vpc-cni", "v1.12.2-eksbuild.1", cluster) | ||
self.create_eks_addon("aws-ebs-csi-driver", "v1.17.0-eksbuild.1", cluster, iamrole4.attr_arn) | ||
self.create_eks_addon("coredns", "v1.9.3-eksbuild.2", cluster) | ||
self.create_eks_addon("kubecost_kubecost", "v1.102.2-eksbuild.0", cluster) | ||
|
||
def create_vpc(self): | ||
return ec2.Vpc( | ||
self, | ||
"EKSVpc", | ||
cidr="192.168.0.0/16", | ||
max_azs=2, | ||
nat_gateways=1, | ||
enable_dns_support=True, | ||
enable_dns_hostnames=True, | ||
subnet_configuration=[ | ||
ec2.SubnetConfiguration( | ||
subnet_type=ec2.SubnetType.PUBLIC, | ||
name="Public", | ||
cidr_mask=24 | ||
), | ||
ec2.SubnetConfiguration( | ||
subnet_type=ec2.SubnetType.PRIVATE, | ||
name="Private", | ||
cidr_mask=24 | ||
) | ||
] | ||
) | ||
|
||
def create_eks_service_role(self): | ||
return iam.CfnRole( | ||
self, | ||
"EKSServiceRole", | ||
path="/", | ||
role_name="EKSServiceRole", | ||
assume_role_policy_document={ | ||
"Version": "2012-10-17", | ||
"Statement": [ | ||
{ | ||
"Effect": "Allow", | ||
"Principal": {"Service": "eks.amazonaws.com"}, | ||
"Action": "sts:AssumeRole" | ||
} | ||
] | ||
} | ||
) | ||
|
||
def create_eks_nodegroup(self, name, cluster, subnets, instance_type, version): | ||
eks.CfnNodegroup( | ||
self, | ||
f"EKSNodegroup{name}", | ||
nodegroup_name=name, | ||
cluster_name=cluster.name, | ||
version=version, | ||
scaling_config={ | ||
"min_size": 1, | ||
"max_size": 1, | ||
"desired_size": 1 | ||
}, | ||
instance_types=[instance_type], | ||
subnets=[subnet.ref for subnet in subnets], | ||
ami_type="AL2_x86_64", | ||
disk_size=50, | ||
capacity_type="ON_DEMAND" | ||
) | ||
|
||
def create_eks_addon(self, name, version, cluster, role_arn=None): | ||
eks.CfnAddon( | ||
self, | ||
f"EKSAddon{name}", | ||
addon_name=name, | ||
addon_version=version, | ||
cluster_name=cluster.name, | ||
service_account_role_arn=role_arn | ||
) | ||
|
||
app = cdk.App() | ||
MyStack(app, "my-stack-name", env={'region': 'us-east-1'}) | ||
app.synth() |