Skip to content

Provision

What Will You Do

In this part of the self-paced exercise, you will provision an Amazon EKS cluster with an ARM Graviton based node group using a declarative cluster specification.

Important

For clusters with ARM only nodes, you need to use the minimal cluster blueprint as the blueprint or base blueprint.


Step 1: Cluster Specification

  • Open a suitable YAML editor and copy/paste the example EKS cluster specification provided below.
  • Save the file as "demo-eks-graviton.yaml" (an example)
kind: Cluster
metadata:
  name: demo-eks-graviton
  project: webinar
spec:
  blueprint: minimal
  cloudprovider: demo
  cniprovider: aws-cni
  proxyconfig: {}
  type: eks
---
apiVersion: rafay.io/v1alpha5
kind: ClusterConfig
metadata:
  name: demo-eks-graviton
  region: us-west-2
  version: "1.22"
nodeGroups:
- amiFamily: AmazonLinux2
  desiredCapacity: 1
  iam:
    withAddonPolicies:
      autoScaler: true
      imageBuilder: true
  instanceType: t4g.xlarge
  maxSize: 1
  minSize: 1
  name: graviton
  version: "1.22"
  volumeSize: 80
  volumeType: gp3
vpc:
  cidr: 192.168.0.0/16
  clusterEndpoints:
    privateAccess: true
    publicAccess: false
  nat:
    gateway: Single

The following items in the declarative cluster specification will need to be updated/customized for your environment.

  • cluster name: "demo-eks-graviton"
  • project: "webinar"
  • cloud provider: "demo"
  • name: "demo-eks-graviton"
  • region: "us-west-2"

Important

Not all Graviton instance types are available in all AWS regions. Navigate to the Graviton webpage to check availability.


Step 2: Provision Cluster

  • Type the command below to provision the EKS cluster
rctl apply -f demo-eks-graviton.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": "lk5opd2",
  "operations": [
    {
      "operation": "NodegroupCreation",
      "resource_name": "graviton",
      "status": "PROVISION_TASK_STATUS_PENDING"
    },
    {
      "operation": "ClusterCreation",
      "resource_name": "demo-eks-graviton",
      "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 specified "project" in your Org
  • Click on Infrastructure -> Clusters. You should see something like the following

Provisioning in Process

The provisioning process can take approximately 30 minutes to fully complete.


Step 3: Verify Cluster

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

Provisioned Cluster

  • Click on the "Node" tab and expand the attached node description

You should see something like the following

ARM Graviton Node

Specifically, look for the following "node labels". As you can see, the worker node is based on AWS Graviton "t4g.xlarge" instance type and the CPU architecture is "ARM64".

  • kubernetes.io/arch = arm64
  • node.kubernetes.io/instance-type = t4g.xlarge

Recap

As of this step, you have provisioned an Amazon EKS cluster with an ARM Graviton based node group. The cluster is also configured with a minimal cluster blueprint.

In the next step, you will configure and deploy an ARM architecture compatible workload to the newly provisioned EKS cluster.