How do you create an EKS cluster utilizing CloudFormation


The steps to attain this

To create an Amazon Elastic Kubernetes Service (EKS) cluster utilizing CloudFormation, you’ll be able to observe these steps:

  1. Create a CloudFormation template: Begin by making a CloudFormation template in YAML or JSON format. This template will outline the sources required in your EKS cluster, together with the cluster itself, employee nodes, and different needed elements.

  2. Outline the EKS cluster useful resource: Inside your CloudFormation template, outline an AWS::EKS::Cluster useful resource. Specify the specified configuration in your EKS cluster, such because the model, title, and role-based entry management (RBAC) configuration.

  3. Outline the employee node sources: Subsequent, outline the employee node sources in your CloudFormation template. This may be achieved utilizing AWS::AutoScaling::AutoScalingGroup and AWS::EC2::LaunchTemplate sources. Specify the specified occasion sort, AMI, and different configurations in your employee nodes.

  4. Outline the mandatory IAM roles and insurance policies: EKS requires a number of IAM roles and insurance policies for its operation. In your CloudFormation template, outline the mandatory IAM roles and insurance policies utilizing AWS::IAM::Position and AWS::IAM::Coverage sources. These roles will grant permissions to your EKS cluster and employee nodes to work together with different AWS companies.

  5. Add any further sources or configurations: Relying in your particular necessities, you might want to incorporate further sources or configurations in your CloudFormation template. For instance, you may wish to provision a VPC, subnets, safety teams, or configure networking settings.

  6. Launch the CloudFormation stack: As soon as your CloudFormation template is prepared, you’ll be able to launch a CloudFormation stack utilizing the AWS Administration Console, AWS CLI, or AWS SDKs. Present the CloudFormation template file, specify any required parameters, and provoke the stack creation course of.

  7. Monitor the stack creation: CloudFormation will create and provision the mandatory sources in response to your template. You’ll be able to monitor the progress of the stack creation within the CloudFormation console or use the AWS CLI or SDKs to verify the stack standing.

  8. Entry your EKS cluster: After the CloudFormation stack creation is full, you’ll be able to entry your EKS cluster utilizing the AWS Administration Console, AWS CLI, or Kubernetes command-line instruments (kubectl). You’ll usually want the cluster title and acceptable credentials to authenticate and work together with the cluster.

By following these steps, you’ll be able to create an EKS cluster utilizing CloudFormation and outline the mandatory sources and configurations to satisfy your particular necessities.

The code to attain this

Right here’s an instance CloudFormation template in YAML format that you should use to create an EKS cluster with employee nodes:

AWSTemplateFormatVersion: "2010-09-09"
Parameters:
  ClusterName:
    Kind: String
    Description: Identify of the EKS cluster
  WorkerNodeGroupName:
    Kind: String
    Description: Identify of the employee node group
  VpcId:
    Kind: AWS::EC2::VPC::Id
    Description: ID of the VPC the place the cluster will probably be created
  SubnetIds:
    Kind: Checklist<AWS::EC2::Subnet::Id>
    Description: Checklist of subnet IDs in numerous availability zones
  KeyName:
    Kind: AWS::EC2::KeyPair::KeyName
    Description: Identify of an current EC2 key pair for SSH entry to employee nodes
Sources:
  EKSCluster:
    Kind: AWS::EKS::Cluster
    Properties:
      Identify: !Ref ClusterName
      ResourcesVpcConfig:
        SecurityGroupIds:
          - !Ref ClusterSecurityGroup
        SubnetIds: !Ref SubnetIds
  ClusterSecurityGroup:
    Kind: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: EKS cluster safety group
      VpcId: !Ref VpcId
  NodeInstanceProfile:
    Kind: AWS::IAM::InstanceProfile
    Properties:
      Roles:
        - !Ref NodeInstanceRole
  NodeInstanceRole:
    Kind: AWS::IAM::Position
    Properties:
      AssumeRolePolicyDocument:
        Model: "2012-10-17"
        Assertion:
          - Impact: Permit
            Principal:
              Service: ec2.amazonaws.com
            Motion: sts:AssumeRole
      ManagedPolicyArns:
        - arn:aws:iam::aws:coverage/AmazonEKSWorkerNodePolicy
        - arn:aws:iam::aws:coverage/AmazonEKS_CNI_Policy
        - arn:aws:iam::aws:coverage/AmazonEC2ContainerRegistryReadOnly
  NodeAutoScalingGroup:
    Kind: AWS::AutoScaling::AutoScalingGroup
    Properties:
      AutoScalingGroupName: !Ref WorkerNodeGroupName
      VPCZoneIdentifier: !Ref SubnetIds
      MinSize: 1
      MaxSize: 3
      DesiredCapacity: 2
      LaunchConfigurationName: !Ref NodeLaunchConfig
      Tags:
        - Key: kubernetes.io/cluster/${ClusterName}
          Worth: "owned"
          PropagateAtLaunch: true
  NodeLaunchConfig:
    Kind: AWS::AutoScaling::LaunchConfiguration
    Properties:
      ImageId: ami-xxxxxxxxxxxxxx  # Specify the suitable employee node AMI ID in your area
      InstanceType: t3.medium     # Specify the specified employee node occasion sort
      IamInstanceProfile: !Ref NodeInstanceProfile
      SecurityGroups:
        - !Ref NodeSecurityGroup
      KeyName: !Ref KeyName
  NodeSecurityGroup:
    Kind: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: EKS employee node safety group
      VpcId: !Ref VpcId
Outputs:
  ClusterName:
    Description: EKS cluster title
    Worth: !Ref ClusterName
  ClusterEndpoint:
    Description: EKS cluster endpoint
    Worth: !GetAtt EKSCluster.Endpoint
  WorkerNodeGroupName:
    Description: EKS employee node group title
    Worth: !Ref WorkerNodeGroupName

On this template, you’ll be able to substitute ami-xxxxxxxxxxxxxx with the suitable AMI ID in your area and specify the specified occasion sort (t3.medium within the instance). Additionally, ensure to offer legitimate values for different parameters resembling ClusterName, WorkerNodeGroupName, VpcId, SubnetIds, and KeyName.

This template will create an EKS cluster with the required title and VPC configuration. It is going to additionally create a employee node group utilizing an Auto Scaling Group and launch configuration. The employee nodes will probably be related to the EKS cluster and can have the mandatory IAM roles and safety teams.

You should use this CloudFormation template to create a stack utilizing the AWS Administration Console, AWS CLI, or AWS SDKs.

Related Articles

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Latest Articles