AWSTemplateFormatVersion: "2010-09-09" Description: Deploy KubeSphere into a new EKS cluster in an existing VPC (qs-1r813c2mi). Metadata: QuickStartDocumentation: EntrypointName: "Launch into Existing VPC" Order: 2 OptionalParameters: - Openpitrix - Devops - Servicemesh - Notification - Alerting - Auditing - Logging - Events - Multicluster - Networkpolicy - MetricsServer AWS::CloudFormation::Interface: ParameterGroups: - Label: default: Network configuration Parameters: - VPCID - PrivateSubnet1ID - PrivateSubnet2ID - PrivateSubnet3ID - PublicSubnet1ID - PublicSubnet2ID - PublicSubnet3ID - RemoteAccessCIDR - Label: default: Amazon EC2 configuration Parameters: - KeyPairName - Label: default: EKS configuration Parameters: - NodeInstanceType - NumberOfNodes - LoadBalancerType - Label: default: "Boomi Molecule configuration" Parameters: - BoomiAccountID - BoomiUsername - BoomiPassword - BoomiMFAAPIToken - MoleculeClusterName - EKSClusterName - EFSProvisionedThroughputInMibps - Label: default: AWS Quick Start configuration Parameters: - QSS3BucketName - QSS3BucketRegion - QSS3KeyPrefix - PerAccountSharedResources - PerRegionSharedResources ParameterLabels: QSS3BucketName: default: Quick Start S3 bucket name QSS3KeyPrefix: default: Quick Start S3 key prefix QSS3BucketRegion: default: Quick Start S3 bucket region RemoteAccessCIDR: default: Allowed external access CIDR NodeInstanceType: default: Nodes instance type NumberOfNodes: default: Number of nodes PublicSubnet1ID: default: Public subnet 1 ID PublicSubnet2ID: default: Public subnet 2 ID PublicSubnet3ID: default: Public subnet 3 ID PrivateSubnet1ID: default: Private subnet 1 ID PrivateSubnet2ID: default: Private subnet 2 ID PrivateSubnet3ID: default: Private subnet 3 ID VPCID: default: VPC ID KeyPairName: default: Key pair name BoomiAccountID: default: Boomi account ID BoomiUsername: default: Boomi user name BoomiPassword: default: Boomi password BoomiMFAAPIToken: default: Boomi MFA API token MoleculeClusterName: default: Molecule cluster name EKSClusterName: default: EKS cluster name PerAccountSharedResources: default: Per account shared resources PerRegionSharedResources: default: Per region shared resources LoadBalancerType: default: Load balancer type Parameters: PublicSubnet1ID: Type: "AWS::EC2::Subnet::Id" Description: The ID of the public subnet in Availability Zone 1 in your existing VPC (e.g., subnet-a0246dcd). PublicSubnet2ID: Type: "AWS::EC2::Subnet::Id" Description: The ID of the public subnet in Availability Zone 2 in your existing VPC (e.g., subnet-b1236eea). PublicSubnet3ID: Type: "AWS::EC2::Subnet::Id" Description: The ID of the public subnet in Availability Zone 3 in your existing VPC (e.g., subnet-c3456aba). PrivateSubnet1ID: Type: "AWS::EC2::Subnet::Id" Description: The ID of the private subnet in Availability Zone 1 in your existing VPC (e.g., subnet-fe9a8b32). PrivateSubnet2ID: Type: "AWS::EC2::Subnet::Id" Description: The ID of the private subnet in Availability Zone 2 in your existing VPC (e.g., subnet-be8b01ea). PrivateSubnet3ID: Type: "AWS::EC2::Subnet::Id" Description: The ID of the private subnet in Availability Zone 3 in your existing VPC (e.g., subnet-abd39039). KeyPairName: Description: Key name for access to EC2 instances. Type: AWS::EC2::KeyPair::KeyName ConstraintDescription: Must be the name of an existing key name QSS3BucketName: AllowedPattern: ^[0-9a-zA-Z]+([0-9a-zA-Z-]*[0-9a-zA-Z])*$ ConstraintDescription: Quick Start bucket name can include numbers, lowercase letters, uppercase letters, and hyphens (-). It cannot start or end with a hyphen (-). Default: aws-quickstart Description: S3 bucket name for the Quick Start assets. This string can include numbers, lowercase letters, uppercase letters, and hyphens (-). It cannot start or end with a hyphen (-). Type: String QSS3KeyPrefix: AllowedPattern: ^[0-9a-zA-Z-/.]*$ ConstraintDescription: Quick Start key prefix can include numbers, lowercase letters, uppercase letters, hyphens (-), dots(.) and forward slash (/). Default: quickstart-eks-boomi-molecule/ Description: The S3 key prefix for the Quick Start assets. Quick Start key prefix can include numbers, lowercase letters, uppercase letters, hyphens (-), dots(.) and forward slash (/). Type: String QSS3BucketRegion: Default: 'us-east-1' Description: The AWS Region where the Quick Start S3 bucket (QSS3BucketName) is hosted. When using your own bucket, you must specify this value. Type: String RemoteAccessCIDR: AllowedPattern: ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/([0-9]|[1-2][0-9]|3[0-2]))$ ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/x Description: The CIDR IP range that is permitted to access the instances. We recommend that you set this value to a trusted IP range. Type: String VPCID: Type: "AWS::EC2::VPC::Id" Description: The ID of your existing VPC (e.g., vpc-0343606e). NodeInstanceType: Default: t3.xlarge AllowedValues: - t3.nano - t3.micro - t3.small - t3.medium - t3.large - t3.xlarge - t3.2xlarge - m5.large - m5.xlarge - m5.2xlarge - m5.4xlarge - m5.12xlarge - m5.24xlarge - c5.large - c5.xlarge - c5.2xlarge - c5.4xlarge - c5.9xlarge - c5.18xlarge - i3.large - i3.xlarge - i3.2xlarge - i3.4xlarge - i3.8xlarge - i3.16xlarge - x1.16xlarge - x1.32xlarge - p3.2xlarge - p3.8xlarge - p3.16xlarge - r5.large - r5.xlarge - r5.2xlarge - r5.4xlarge - r5.12xlarge - r5.24xlarge - r5d.large - r5d.xlarge - r5d.2xlarge - r5d.4xlarge - r5d.12xlarge - r5d.24xlarge - z1d.large - z1d.xlarge - z1d.2xlarge - z1d.3xlarge - z1d.6xlarge - z1d.12xlarge ConstraintDescription: Must be a valid EC2 instance type Description: The type of EC2 instance for the node instances. Type: String NumberOfNodes: Default: 1 Description: The number of Amazon EKS node instances. The default is one for each of the three Availability Zones. Type: Number BoomiUsername: Description: The email account associated with the Boomi account. Type: String NoEcho: true BoomiPassword: Description: The password associated with the Boomi account. Type: String NoEcho: true Default: '' BoomiAccountID: Description: The Boomi account ID that you want to associate with the new Molecule cluster. Type: String NoEcho: true BoomiMFAAPIToken: Description: An MFA API token generated by your Boomi Administrator. Type: String NoEcho: true Default: '' LoadBalancerType: Type: String Default: ALB AllowedValues: - ALB - NLB Description: EKS Service Load Balancer Type. PerAccountSharedResources: Type: String AllowedValues: ['AutoDetect', 'Yes', 'No'] Default: 'AutoDetect' Description: Choose "No" if you already deployed another EKS Quick Start stack in your AWS account. PerRegionSharedResources: Type: String AllowedValues: ['AutoDetect', 'Yes', 'No'] Default: 'AutoDetect' Description: Choose "No" if you already deployed another EKS Quick Start stack in your Region. MoleculeClusterName: Description: The name for the Boomi Molecule cluster. Type: String AllowedPattern: "[a-zA-Z0-9_-]*" Default: Boomi-Molecule-EKS EKSClusterName: Type: String Description: "(Optional) Name for the EKS cluster. If left blank, one is auto-generated. This must be unique within the Region." Default: '' EFSProvisionedThroughputInMibps: Description: The provisioned throughput value for the EFS volume. Type: Number Default: 10 MaxValue: 1024 ConstraintDescription: "Value must be between 1-1024" EFSThroughputMode: Description: The throughput mode for the EFS volume. Type: String Default: bursting AllowedValues: - provisioned - bursting Rules: SubnetsInVPC: Assertions: - Assert: 'Fn::EachMemberIn': - 'Fn::ValueOfAll': - 'AWS::EC2::Subnet::Id' - VpcId - 'Fn::RefAll': 'AWS::EC2::VPC::Id' AssertDescription: All subnets must exist in the VPC PasswordOrMFAToken: Assertions: - Assert: !Or - !And - !Equals [!Ref BoomiPassword, ''] - !Not [!Equals [!Ref BoomiMFAAPIToken, '']] - !And - !Not [!Equals [!Ref BoomiPassword, '']] - !Equals [!Ref BoomiMFAAPIToken, ''] AssertDescription: You must supply either a password *or* an MFA installation and API token. Conditions: APITokenProvided: !Not [!Equals [!Ref BoomiMFAAPIToken, ""]] UsingDefaultBucket: !Equals [!Ref QSS3BucketName, 'aws-quickstart'] EFSBurstingThroughput: !Equals [!Ref EFSThroughputMode, 'bursting'] Resources: LicenseStack: Type: AWS::CloudFormation::Stack Properties: TemplateURL: !Sub - "https://${S3Bucket}.s3.${S3Region}.${AWS::URLSuffix}/${QSS3KeyPrefix}templates/boomi-license.template.yaml" - S3Region: !If [UsingDefaultBucket, !Ref 'AWS::Region', !Ref QSS3BucketRegion] S3Bucket: !If [UsingDefaultBucket, !Sub '${QSS3BucketName}-${AWS::Region}', !Ref QSS3BucketName] Parameters: QSS3BucketName: !Ref QSS3BucketName QSS3KeyPrefix: !Ref QSS3KeyPrefix BoomiUsername: !Ref BoomiUsername BoomiPassword: !Ref BoomiPassword BoomiMFAAPIToken: !Ref BoomiMFAAPIToken BoomiAccountID: !Ref BoomiAccountID AdvancedConfigStack: Type: AWS::CloudFormation::Stack Metadata: { cfn-lint: { config: { ignore_checks: [E9902, W9901] } } } Properties: TemplateURL: !Sub - 'https://${S3Bucket}.s3.${S3Region}.${AWS::URLSuffix}/${QSS3KeyPrefix}submodules/quickstart-amazon-eks/templates/amazon-eks-advanced-configuration.template.yaml' - S3Region: !If [UsingDefaultBucket, !Ref 'AWS::Region', !Ref QSS3BucketRegion] S3Bucket: !If [UsingDefaultBucket, !Sub '${QSS3BucketName}-${AWS::Region}', !Ref QSS3BucketName] Parameters: ConfigSetName: !Ref AWS::StackName EfsThroughputMode: !Ref EFSThroughputMode EfsProvisionedThroughputInMibps: !If [EFSBurstingThroughput, 0, !Ref EFSProvisionedThroughputInMibps] EKSStack: Type: AWS::CloudFormation::Stack DependsOn: - AdvancedConfigStack Properties: TemplateURL: !Sub - 'https://${S3Bucket}.s3.${S3Region}.${AWS::URLSuffix}/${QSS3KeyPrefix}submodules/quickstart-amazon-eks/templates/amazon-eks-entrypoint-existing-vpc.template.yaml' - S3Region: !If [UsingDefaultBucket, !Ref 'AWS::Region', !Ref QSS3BucketRegion] S3Bucket: !If [UsingDefaultBucket, !Sub '${QSS3BucketName}-${AWS::Region}', !Ref QSS3BucketName] Parameters: ConfigSetName: !Ref AWS::StackName PublicSubnet1ID: !Ref PublicSubnet1ID PublicSubnet2ID: !Ref PublicSubnet2ID PublicSubnet3ID: !Ref PublicSubnet3ID KeyPairName: !Ref KeyPairName QSS3BucketName: !Ref QSS3BucketName QSS3BucketRegion: !Ref QSS3BucketRegion QSS3KeyPrefix: !Sub "${QSS3KeyPrefix}submodules/quickstart-amazon-eks/" PrivateSubnet1ID: !Ref PrivateSubnet1ID PrivateSubnet2ID: !Ref PrivateSubnet2ID PrivateSubnet3ID: !Ref PrivateSubnet3ID NumberOfNodes: !Ref NumberOfNodes EKSClusterName: !Ref EKSClusterName NodeInstanceType: !Ref NodeInstanceType RemoteAccessCIDR: !Ref RemoteAccessCIDR VPCID: !Ref VPCID PerAccountSharedResources: !Ref PerAccountSharedResources PerRegionSharedResources: !Ref PerRegionSharedResources EfsStorageClass: 'Enabled' ClusterAutoScaler: 'Enabled' MoleculeManifestStack: Type: AWS::CloudFormation::Stack Properties: TemplateURL: !Sub - 'https://${S3Bucket}.s3.${S3Region}.${AWS::URLSuffix}/${QSS3KeyPrefix}templates/manifests.template.yaml' - S3Region: !If [UsingDefaultBucket, !Ref 'AWS::Region', !Ref QSS3BucketRegion] S3Bucket: !If [UsingDefaultBucket, !Sub '${QSS3BucketName}-${AWS::Region}', !Ref QSS3BucketName] Parameters: BoomiUsername: !Ref BoomiUsername BoomiPassword: !Ref BoomiPassword BoomiAccountID: !Ref BoomiAccountID BoomiMFAInstallToken: !GetAtt LicenseStack.Outputs.BoomiMFAInstallToken BoomiMFAAPIToken: !Ref BoomiMFAAPIToken LoadBalancerType: !Ref LoadBalancerType MoleculeClusterName: !Ref MoleculeClusterName ClusterName: !GetAtt EKSStack.Outputs.EKSClusterName Outputs: EKSClusterName: Value: !GetAtt EKSStack.Outputs.EKSClusterName BastionIP: Value: !GetAtt EKSStack.Outputs.BastionIP