# Deploy an Amazon EKS cluster with AWS Graviton-based nodes using Rafay

## In this learning path

- [Introduction](https://learn.arm.com/learning-paths/servers-and-cloud-computing/rafay-eks/)
- [Set up Rafay and AWS access](https://learn.arm.com/learning-paths/servers-and-cloud-computing/rafay-eks/setup/)
- [Create an Amazon EKS cluster using a Rafay cluster manifest](https://learn.arm.com/learning-paths/servers-and-cloud-computing/rafay-eks/cluster/)
- [Deploy NGINX to the Amazon EKS cluster and clean up](https://learn.arm.com/learning-paths/servers-and-cloud-computing/rafay-eks/nginx/)
- [Next Steps](https://learn.arm.com/learning-paths/servers-and-cloud-computing/rafay-eks/_next-steps/)

## About this Learning Path

|                      |                     |
|----------------------|---------------------|
| Skill level:         | Advanced            |
| Reading time:        | 1 hr                |
| Last updated:        | 31 Jul 2026         |

### Authors:
- Jason Andrews, Arm [GitHub](https://github.com/jasonrandrews) | [LinkedIn](https://linkedin.com/in/jason-andrews-7b05a8)
- Steve Jordahl, Rafay

### Arm IP:
[Neoverse](https://support.arm.com/?tab=compute-ip&Product%20Type=Infrastructure%20Processors)

### Tags:
[Containers and Virtualization](https://learn.arm.com/tag/containers-and-virtualization)  
[AWS](https://learn.arm.com/tag/aws)  
[Linux](https://learn.arm.com/tag/linux)  
[Kubernetes](https://learn.arm.com/tag/kubernetes)  
[Amazon EKS](https://learn.arm.com/tag/amazon-eks)  
[Rafay](https://learn.arm.com/tag/rafay)  
[NGINX](https://learn.arm.com/tag/nginx)  
[rctl](https://learn.arm.com/tag/rctl)  

### Who is this for?
This is an advanced topic for software developers familiar with Kubernetes and AWS who want to learn how to use the Rafay platform to provision and manage EKS clusters backed by AWS Graviton-based instances.

### What will you learn?
Upon completion of this Learning Path, you will be able to:
- Connect your AWS account to the Rafay platform using a cross-account IAM role
- Provision an Amazon EKS cluster with an AWS Graviton-based node group using Rafay
- Deploy and verify workloads on arm64 nodes and clean up all cloud resources

### Prerequisites
Before starting, you will need the following:
- An Amazon Web Services (AWS) [account](https://aws.amazon.com/) with sufficient IAM permissions to create roles, EKS clusters, EC2 instances, CloudFormation stacks, and related resources.
- A [Rafay account](https://rafay.co).
- The [AWS CLI](https://learn.arm.com/install-guides/aws-cli/) installed and configured.

### Summary
You’ll provision an Amazon EKS cluster on Arm using the Rafay Kubernetes Operations Platform and validate workloads on AWS Graviton-based nodes. First, you’ll define a declarative cluster manifest in Rafay referencing an existing project, blueprint, and cloud credential. Then, you’ll create the EKS cluster and deploy NGINX pinned to arm64 to confirm scheduling on Graviton-based instances. Finally, you’ll remove the NGINX workload and deprovision the EKS resources to avoid ongoing cloud costs.

### Frequently asked questions
<details>
<summary>How do I know the AWS connection to Rafay is set up correctly before creating the cluster?</summary>
Ensure the cross-account IAM role is configured in AWS and added to Rafay as a cloud credential. In the cluster manifest, reference this credential by name. If it’s missing or has insufficient permissions, cluster creation will fail.
</details>

<details>
<summary>Which fields in the Rafay cluster manifest must match existing configuration?</summary>
The project, blueprint name and version, and the cloud credential must already exist in Rafay. If any of these don’t match, the cluster won’t be created.
</details>

<details>
<summary>What result should I expect when the EKS cluster is ready to use?</summary>
A running cluster with a Graviton-based (`arm64`) node group will be available for workloads. Nodes should advertise the label `kubernetes.io/arch=arm64`, indicating they can run `arm64` pods.
</details>

<details>
<summary>How do I verify that the NGINX deployment is running on Graviton nodes?</summary>
The provided manifest pins the pods using `nodeSelector: kubernetes.io/arch: arm64`. After deployment, the pod should schedule and run on nodes labeled `arm64`. If it remains `Pending`, verify the node group is active and the selector matches node labels.
</details>

<details>
<summary>What should I clean up to avoid ongoing AWS charges?</summary>
Delete the NGINX workload and namespace created for the test, then deprovision the EKS cluster from Rafay. This releases the associated AWS resources.
</details>
