Skip to content

Part 3: Provision

What Will You Do

In this part of the self-paced exercise, you will provision an Amazon EKS cluster based on a declarative cluster specification


Step 1: Cluster Spec

  • Open Terminal (on macOS/Linux) or Command Prompt (Windows) and navigate to the folder where you forked the Git repository
  • Navigate to the folder "/getstarted/autoscaler/cluster"

The "autoscaler-eks-cluster.yaml" file contains the declarative specification for our Amazon EKS Cluster.

Cluster Details

The following items may need to be updated/customized if you made changes to these or used alternate names.

  • cluster name: "autoscaler-cluster"
  • project: "defaultproject"
  • blueprint: "autoscaler-blueprint"
  • blueprintversion: "v1"
  • cloud provider: "aws-cloud-credential"
  • name: "autoscaler-cluster"
  • region: "us-west-1"
kind: Cluster
metadata:
  name: autoscaler-cluster
  project: defaultproject
spec:
  blueprint: autoscaler-blueprint
  blueprintversion: v1
  cloudprovider: aws-cloud-credential
  cniprovider: aws-cni
  type: eks
---
apiVersion: rafay.io/v1alpha5
kind: ClusterConfig
metadata:
  name: autoscaler-cluster
  region: us-west-1
  tags:
  version: "1.21"
managedNodeGroups:
  - name: ng-1
    instanceType: t3.large
    desiredCapacity: 2
    maxSize: 4
    minSize: 1
    iam:
     withAddonPolicies:
      albIngress: true
      autoScaler: true
      efs: true

Step 2: Provision Cluster

  • Type the command below to provision the EKS cluster
rctl apply -f autoscaler-eks-cluster.yaml

If there are no errors, you will be presented with a "Task ID" that you can use to check progress/status. Note that this step requires creation of infrastructure in your AWS account and can take ~20-30 minutes to complete.

{
  "taskset_id": "emplg72",
  "operations": [
    {
      "operation": "NodegroupCreation",
      "resource_name": "ng-1",
      "status": "PROVISION_TASK_STATUS_PENDING"
    },
    {
      "operation": "ClusterCreation",
      "resource_name": "autoscaler-cluster",
      "status": "PROVISION_TASK_STATUS_PENDING"
    }
  ],
  "comments": "The status of the operations can be fetched using taskset_id",
  "status": "PROVISION_TASKSET_STATUS_PENDING"
}
  • Navigate to the "defaultproject" project in your Org
  • Click on Infrastructure -> Clusters. You should see something like the following

Provisioning in Process

  • Click on the cluster name to monitor progress

Provisioning in Process


Step 3: Verify Cluster

Once provisioning is complete, you should see the cluster in the web console

Provisioned Cluster

  • Click on the kubectl link and type the following command
kubectl get nodes

You should see something like the following

NAME                                           STATUS   ROLES    AGE   VERSION
ip-192-168-24-14.us-west-1.compute.internal    Ready    <none>   11m   v1.21.5-eks-bc4871b
ip-192-168-90-123.us-west-1.compute.internal   Ready    <none>   11m   v1.21.5-eks-bc4871b

Step 4: Verify Cluster Autoscaler

Now, let us verify the Cluster Autoscaler resources are operational on the EKS cluster

  • Click on the kubectl link and type the following command
kubectl get pod -n autoscaler

You should see something like the following

NAME                                                       READY   STATUS    RESTARTS   AGE
autoscaler-addon-aws-cluster-autoscaler-54bcf79cdf-t5zcl   1/1     Running   0          8m

Recap

Congratulations! At this point, you have successfully configured and provisioned an Amazon EKS cluster with Cluster Autoscaler in your AWS account using the RCTL CLI.