Create a New Cluster

This guide details the process of provisioning a new Amazon EKS (Elastic Kubernetes Service) cluster through the Scoutflo Deploy interface. Unlike traditional managed services, Scoutflo empowers your DevOps and GitOps practices by automating infrastructure-as-code.

How It Works: The Scoutflo Automation Engine

Before you begin, it's important to understand the automation behind the process:

  1. Your Cloud, Your Account: The EKS cluster and all associated resources (VPCs, EC2 instances, etc.) are created directly in your AWS account. Scoutflo does not host or manage the infrastructure on its own account.

  2. Terraform Automation: Scoutflo uses Terraform, the industry-standard Infrastructure-as-Code (IaC) tool, to provision your cluster. You define the desired state through our UI, and we generate and execute the precise Terraform code required to achieve it.

  3. GitOps for Audit and Control: To ensure full transparency and an immutable audit trail, the generated Terraform code is automatically committed to a designated repository in your connected GitHub account. This allows you to:

    • Track Changes: Every modification to your infrastructure is version-controlled and attributable.

    • Enable Collaboration: Your team can review Terraform code changes via pull requests.

    • Recreate Environments: You can easily replicate or recover your infrastructure from the known-good code state.

This process combines the simplicity of a UI with the power, safety, and transparency of GitOps.


Step 1: Accessing the Cluster Creation

  • Navigate to "My Cluster": After connecting your Git account, find the 'My Cluster' section on the left sidebar, located below the workspace drop down.

  • Add a New Cluster: Click on the "+Add Cluster" button at the top right corner of the 'My Cluster' screen to initiate the creation of a new cluster.

  1. Add a New Cluster:

  • Click on the "+Add Cluster" button located at the top right corner of the 'My Cluster' screen.

  • Select "Create a cluster" which opens a new screen dedicated to setting up the details of your new cluster.


Step 2: Selecting Cloud Credentials

  • Scoutflo Official Account: Use the default credentials provided by Scoutflo.

  • Add New Credentials: If you prefer to create a custom credential profile, enter your AWS Access Key ID and Secret Access Key.


Step 3: Define Cluster Metadata

Provide the foundational specifications for your Kubernetes cluster.

  • Cluster Name: Enter a unique, descriptive name. This will be used to generate the Terraform workspace name and resource tags.

  • Region: Select the AWS Region (e.g., us-east-1) where all resources will be deployed. This ensures all generated Terraform resources are configured for the correct region.


Step 4: Configure Networking (VPC & Subnets)

Define the virtual network topology for your cluster. The Terraform code will configure the AWS VPC module based on your choice.

VPC Configuration:

  • Create New VPC (Recommended for simplicity): Scoutflo's Terraform code will generate a new, properly configured VPC with both public and private subnets, NAT gateways, and route tables.

  • Use Existing VPC (For advanced users): Specify an existing VPC ID. You must also provide at least two Subnet IDs (from different Availability Zones) that meet the networking requirements for an EKS cluster.

Subnet Selection

  • Subnet IDs: Choose two or more subnets within the selected VPC. At least two subnet IDs must be specified (e.g., subnet-07782a9328cee29e9, subnet-05ac09a44ea968fa6).

Step 5: Configure Node Groups

Define the worker nodes that will run your applications. Each node group translates to a separate Terraform aws_eks_node_group resource.

For each node group, specify:

  • Scaling Configuration: Set the Minimum, Desired, and Maximum number of nodes. This configures the Terraform arguments and integrates with the Cluster Autoscaler.

  • Instance Type: Choose the Instance Family (e.g., t3, m5) and a specific Instance Type (e.g., t3.large). This defines the instance_types parameter in Terraform.

  • Capacity Type: Choose ON_DEMAND for reliability or SPOT for cost optimization. This is a key variable in the Terraform node group definition.

Node Group 1:

  • Min Node: Specify the minimum number of nodes (e.g., 1).

  • Desired Node: Define the desired number of nodes (e.g., 3).

  • Max Node: Set a maximum number of nodes (e.g., 5).

  • Instance Family: Select an instance category (e.g., t3a, m5) — this field is required.

  • Instance Type: Choose a specific instance type (e.g., t3a.large, c5.xlarge) — this field cannot be empty.

  • Capacity Type: Select between ON_DEMAND or SPOT instances.

Node Group 2 (Optional):

Repeat the same steps as Node Group 1 to define additional node groups if needed. You can add more node groups by clicking the "Add More" button.


Step 6: Review Cost & Deploy

  • Cost Estimation: Scoutflo provides a real-time, API-driven cost breakdown based on your node configuration and AWS pricing. Review this estimate carefully.

    • Scoutflo integrates with AWS APIs to provide a real-time cost breakdown based on your configuration. As you adjust parameters, the estimated cost updates automatically, helping you make informed decisions before deployment.

  • Final Review: Scoutflo will summarize all your choices that will be written into the Terraform configuration.

  • Deploy Cluster: Clicking Deploy Cluster triggers the following automated process:

    1. Terraform Generation: Scoutflo generates the complete, reusable Terraform code for your cluster.

    2. Git Commit: This code is committed to the selected branch in your GitHub repository.

    3. Terraform Execution: Scoutflo's agent executes terraform apply using the generated code, streaming the logs directly to the UI for you to monitor.

    4. State Management: The Terraform state file is securely stored and managed by Scoutflo on your behalf.


Instance Configuration Options:

  • Node Configuration:- (Min: 1, Max: User Defined, Desired: User Defined).

  • Instance Type:- Select the instance type based on your workload requirements.

Category
Description
Instance Type Options
vCPUs
Memory (GiB)
Storage
Processor

General Purpose

Versatile instances for various web applications

M5A (AMD)

2

8

EBS Only

AMD

T3A (AMD)

2

8

EBS Only

AMD

M4 (AMD)

8

32

EBS Only

AMD

Compute Optimized

High CPU power for compute-intensive tasks

C5A (AMD)

2

4

EBS Only

AMD

Memory Optimized

Abundant memory for fast data access

R5A (AMD)

2

16

EBS Only

AMD

Storage Optimized

High local storage capacity for large datasets

I3EN (Intel Xeon)

2

16

1 x 1250 GB NVMe SSD

Intel Xeon Skylake

  • Provide a unique name for your cluster to identify it within the workspace.

  • Choose the desired region for your cluster deployment based on your application's needs.

  • Duplicate Cluster Name: Scoutflo Deploy will prevent the creation of clusters with identical names within the same workspace.

  • Region Mismatch: An error message will be displayed if the selected region is incompatible with the chosen cluster name.

Setting Up External Add-ons

Scoutflo Deploy offers several external add-ons to enhance your cluster's capabilities automatically. These add-ons provide essential monitoring, cost management, and control over your infrastructure:

  • Kubecost: Provides cost tracking and optimization tools for efficient resource management.

  • Grafana: Offers data visualization tools to monitor your cluster's performance and metrics.

  • Ingress Controller: Manages external access to services in your cluster, ensuring traffic routing is correctly handled.

  • DNS: Ensures your cluster's domain name resolution works seamlessly.

These add-ons are integrated automatically, saving you time and effort while ensuring your cluster is equipped with essential tools.


What Happens Next?

  • The provisioning process begins. You can monitor the real-time output of the terraform apply command in the Scoutflo UI, which provides detailed feedback on the creation status of each resource (e.g., VPC, EKS Control Plane, Node Groups).

  • This process typically takes 10-15 minutes to complete.

  • Once finished, your new EKS cluster will be running in your AWS account, its configuration is fully described in the Terraform code in your GitHub repository, and it is ready for application deployments.

Last updated