Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
391 changes: 391 additions & 0 deletions integration/tests/existing_vpc/cf-template.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,391 @@
---
AWSTemplateFormatVersion: '2010-09-09'
Description: 'Networking and roles for EKSCTL unowned cluster integration test'

Mappings:
ServicePrincipalPartitionMap:
aws:
EC2: ec2.amazonaws.com
EKS: eks.amazonaws.com
EKSFargatePods: eks-fargate-pods.amazonaws.com

Parameters:
VpcBlock:
Type: String
Default: 192.168.0.0/16
Description: The CIDR range for the VPC. This should be a valid private (RFC 1918) CIDR range.

Subnet01Block:
Type: String
Default: 192.168.0.0/19
Description: CidrBlock for subnet 01 within the VPC

Subnet02Block:
Type: String
Default: 192.168.32.0/19
Description: CidrBlock for subnet 02 within the VPC

Subnet03Block:
Type: String
Default: 192.168.64.0/19
Description: CidrBlock for subnet 03 within the VPC. This is used only if the region has more than 2 AZs.

Subnet04Block:
Type: String
Default: 192.168.96.0/19
Description: CidrBlock for private subnet 04 within the VPC.

Subnet05Block:
Type: String
Default: 192.168.128.0/19
Description: CidrBlock for private subnet 05 within the VPC.

Subnet06Block:
Type: String
Default: 192.168.160.0/19
Description: CidrBlock for private subnet 06 within the VPC. This is used only if the region has more than 2 AZs.

Metadata:
AWS::CloudFormation::Interface:
ParameterGroups:
-
Label:
default: "Worker Network Configuration"
Parameters:
- VpcBlock
- Subnet01Block
- Subnet02Block
- Subnet03Block
- Subnet04Block
- Subnet05Block
- Subnet06Block

Conditions:
Has2Azs:
Fn::Or:
- Fn::Equals:
- {Ref: 'AWS::Region'}
- ap-south-1
- Fn::Equals:
- {Ref: 'AWS::Region'}
- ap-northeast-2
- Fn::Equals:
- {Ref: 'AWS::Region'}
- ca-central-1
- Fn::Equals:
- {Ref: 'AWS::Region'}
- cn-north-1
- Fn::Equals:
- {Ref: 'AWS::Region'}
- sa-east-1
- Fn::Equals:
- {Ref: 'AWS::Region'}
- us-west-1

HasMoreThan2Azs:
Fn::Not:
- Condition: Has2Azs

Resources:
NodeRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Statement:
- Action:
- sts:AssumeRole
Effect: Allow
Principal:
Service:
- Fn::FindInMap:
- ServicePrincipalPartitionMap
- Ref: AWS::Partition
- EC2
Version: '2012-10-17'
ManagedPolicyArns:
- Fn::Sub: arn:${AWS::Partition}:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly
- Fn::Sub: arn:${AWS::Partition}:iam::aws:policy/AmazonEKSWorkerNodePolicy
- Fn::Sub: arn:${AWS::Partition}:iam::aws:policy/AmazonEKS_CNI_Policy
Path: "/"
Tags:
- Key: Name
Value:
Fn::Sub: "${AWS::StackName}/NodeRole"
ClusterRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Statement:
- Action:
- sts:AssumeRole
Effect: Allow
Principal:
Service:
- Fn::FindInMap:
- ServicePrincipalPartitionMap
- Ref: AWS::Partition
- EKS
- Fn::FindInMap:
- ServicePrincipalPartitionMap
- Ref: AWS::Partition
- EKSFargatePods
Version: '2012-10-17'
ManagedPolicyArns:
- Fn::Sub: arn:${AWS::Partition}:iam::aws:policy/AmazonEKSClusterPolicy
- Fn::Sub: arn:${AWS::Partition}:iam::aws:policy/AmazonEKSVPCResourceController
Tags:
- Key: Name
Value:
Fn::Sub: "${AWS::StackName}/ClusterRole"
VPC:
Type: AWS::EC2::VPC
Properties:
CidrBlock: !Ref VpcBlock
EnableDnsSupport: true
EnableDnsHostnames: true
Tags:
- Key: Name
Value: !Sub '${AWS::StackName}-VPC'

InternetGateway:
Type: "AWS::EC2::InternetGateway"

VPCGatewayAttachment:
Type: "AWS::EC2::VPCGatewayAttachment"
Properties:
InternetGatewayId: !Ref InternetGateway
VpcId: !Ref VPC

RouteTable:
Type: AWS::EC2::RouteTable
Properties:
VpcId: !Ref VPC
Tags:
- Key: Name
Value: Public Subnets
- Key: Network
Value: Public

PrivateRouteTable:
Type: AWS::EC2::RouteTable
Properties:
VpcId: !Ref VPC
Tags:
- Key: Name
Value: Private Subnets
- Key: Network
Value: Private

Route:
DependsOn: VPCGatewayAttachment
Type: AWS::EC2::Route
Properties:
RouteTableId: !Ref RouteTable
DestinationCidrBlock: 0.0.0.0/0
GatewayId: !Ref InternetGateway

Subnet01:
Type: AWS::EC2::Subnet
Metadata:
Comment: Subnet 01
Properties:
MapPublicIpOnLaunch: true
AvailabilityZone:
Fn::Select:
- '0'
- Fn::GetAZs:
Ref: AWS::Region
CidrBlock:
Ref: Subnet01Block
VpcId:
Ref: VPC
Tags:
- Key: Name
Value: !Sub "${AWS::StackName}-Subnet01"
- Key: kubernetes.io/role/elb
Value: 1

Subnet02:
Type: AWS::EC2::Subnet
Metadata:
Comment: Subnet 02
Properties:
MapPublicIpOnLaunch: true
AvailabilityZone:
Fn::Select:
- '1'
- Fn::GetAZs:
Ref: AWS::Region
CidrBlock:
Ref: Subnet02Block
VpcId:
Ref: VPC
Tags:
- Key: Name
Value: !Sub "${AWS::StackName}-Subnet02"
- Key: kubernetes.io/role/elb
Value: 1

Subnet03:
Condition: HasMoreThan2Azs
Type: AWS::EC2::Subnet
Metadata:
Comment: Subnet 03
Properties:
MapPublicIpOnLaunch: true
AvailabilityZone:
Fn::Select:
- '2'
- Fn::GetAZs:
Ref: AWS::Region
CidrBlock:
Ref: Subnet03Block
VpcId:
Ref: VPC
Tags:
- Key: Name
Value: !Sub "${AWS::StackName}-Subnet03"
- Key: kubernetes.io/role/elb
Value: 1

Subnet04:
Type: AWS::EC2::Subnet
Metadata:
Comment: Subnet 04
Properties:
AvailabilityZone:
Fn::Select:
- '1'
- Fn::GetAZs:
Ref: AWS::Region
CidrBlock:
Ref: Subnet04Block
VpcId:
Ref: VPC
Tags:
- Key: Name
Value: !Sub "${AWS::StackName}-Subnet04"

Subnet05:
Type: AWS::EC2::Subnet
Metadata:
Comment: Subnet 05
Properties:
AvailabilityZone:
Fn::Select:
- '1'
- Fn::GetAZs:
Ref: AWS::Region
CidrBlock:
Ref: Subnet05Block
VpcId:
Ref: VPC
Tags:
- Key: Name
Value: !Sub "${AWS::StackName}-Subnet05"

Subnet06:
Condition: HasMoreThan2Azs
Type: AWS::EC2::Subnet
Metadata:
Comment: Subnet 06
Properties:
AvailabilityZone:
Fn::Select:
- '1'
- Fn::GetAZs:
Ref: AWS::Region
CidrBlock:
Ref: Subnet06Block
VpcId:
Ref: VPC
Tags:
- Key: Name
Value: !Sub "${AWS::StackName}-Subnet06"

Subnet01RouteTableAssociation:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
SubnetId: !Ref Subnet01
RouteTableId: !Ref RouteTable

Subnet02RouteTableAssociation:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
SubnetId: !Ref Subnet02
RouteTableId: !Ref RouteTable

Subnet03RouteTableAssociation:
Condition: HasMoreThan2Azs
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
SubnetId: !Ref Subnet03
RouteTableId: !Ref RouteTable

Subnet04RouteTableAssociation:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
SubnetId: !Ref Subnet04
RouteTableId: !Ref PrivateRouteTable

Subnet05RouteTableAssociation:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
SubnetId: !Ref Subnet05
RouteTableId: !Ref PrivateRouteTable

Subnet06RouteTableAssociation:
Condition: HasMoreThan2Azs
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
SubnetId: !Ref Subnet06
RouteTableId: !Ref PrivateRouteTable

ControlPlaneSecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: Cluster communication with worker nodes
VpcId: !Ref VPC

Outputs:
ClusterRoleARN:
Value:
Fn::GetAtt:
- "ClusterRole"
- "Arn"
Export:
Name:
Fn::Sub: "${AWS::StackName}::ClusterRoleARN"

NodeRoleARN:
Value:
Fn::GetAtt:
- "NodeRole"
- "Arn"
Export:
Name:
Fn::Sub: "${AWS::StackName}::NodeRoleARN"

PrivateSubnetIds:
Description: All private subnets in the VPC
Value:
Fn::If:
- HasMoreThan2Azs
- !Join [ ",", [ !Ref Subnet04, !Ref Subnet05, !Ref Subnet06 ] ]
- !Join [ ",", [ !Ref Subnet04, !Ref Subnet05 ] ]

PublicSubnetIds:
Description: All public subnets in the VPC
Value:
Fn::If:
- HasMoreThan2Azs
- !Join [ ",", [ !Ref Subnet01, !Ref Subnet02, !Ref Subnet03 ] ]
- !Join [ ",", [ !Ref Subnet01, !Ref Subnet02 ] ]

SecurityGroups:
Description: Security group for the cluster control plane communication with worker nodes
Value: !Join [ ",", [ !Ref ControlPlaneSecurityGroup ] ]

VpcId:
Description: The VPC Id
Value: !Ref VPC
Loading