You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/learning-paths/servers-and-cloud-computing/rafay-eks/_index.md
+58-13Lines changed: 58 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,30 +1,74 @@
1
1
---
2
-
title: "Deploy an EKS cluster with Graviton nodes using Rafay"
2
+
title: Deploy an Amazon EKS cluster with AWS Graviton-based nodes using Rafay
3
3
4
-
description: Use the Rafay Kubernetes Operations Platform to provision an Amazon EKS cluster with an Arm Graviton node group and deploy NGINX to verify the setup.
4
+
description: Use the Rafay Kubernetes Operations Platform to provision an Amazon EKS cluster with an AWS Graviton-based node group and deploy NGINX to verify the setup.
5
5
6
-
draft: true
7
-
cascade:
8
-
draft: true
9
6
10
7
minutes_to_complete: 60
11
8
12
9
who_is_this_for: >
13
-
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 Arm Graviton instances.
10
+
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.
14
11
15
12
learning_objectives:
16
13
- Connect your AWS account to the Rafay platform using a cross-account IAM role
17
-
- Provision an Amazon EKS cluster with an Arm Graviton node group using Rafay
18
-
- Deploy and verify NGINX on Arm nodes and clean up all cloud resources
14
+
- Provision an Amazon EKS cluster with an AWS Graviton-based node group using Rafay
15
+
- Deploy and verify workloads on arm64 nodes and clean up all cloud resources
19
16
20
17
prerequisites:
21
-
- An Amazon Web Services (AWS) [account](https://aws.amazon.com/)
22
-
- A [Rafay account](https://rafay.co)
23
-
- The [AWS CLI](/install-guides/aws-cli/) installed and configured
18
+
- 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.
19
+
- A [Rafay account](https://rafay.co).
20
+
- The [AWS CLI](/install-guides/aws-cli/) installed and configured.
In this Learning Path, you'll provision an Amazon EKS cluster on Arm using
38
+
the Rafay Kubernetes Operations Platform and validate workloads on AWS Graviton-based nodes.
39
+
You'll define a declarative cluster manifest in Rafay referencing an existing project,
40
+
blueprint, and cloud credential. Then, you'll create the EKS cluster and deploy NGINX pinned to arm64
41
+
to confirm scheduling on Graviton-based instances. Finally, you'll remove the NGINX workload and deprovision the EKS resources to avoid ongoing cloud costs.
42
+
faqs:
43
+
- question: How do I know the AWS connection to Rafay is set up correctly before creating the
44
+
cluster?
45
+
answer: >-
46
+
Ensure the cross-account IAM role is configured in AWS and added to Rafay as a cloud credential.
47
+
In the cluster manifest, reference this credential by name. If it's missing or has insufficient
48
+
permissions, cluster creation will fail.
49
+
- question: Which fields in the Rafay cluster manifest must match existing configuration?
50
+
answer: >-
51
+
The project, blueprint name and version, and the cloud credential must already exist in
52
+
Rafay. If any of these don't match, the cluster won't be created.
53
+
- question: What result should I expect when the EKS cluster is ready to use?
54
+
answer: >-
55
+
A running cluster with a Graviton-based (`arm64`) node group will be available for workloads.
56
+
Nodes should advertise the label `kubernetes.io/arch=arm64`, indicating they can run `arm64`
57
+
pods.
58
+
- question: How do I verify that the NGINX deployment is running on Graviton nodes?
59
+
answer: >-
60
+
The provided manifest pins the pods using `nodeSelector: kubernetes.io/arch: arm64`. After
61
+
deployment, the pod should schedule and run on nodes labeled `arm64`. If it remains `Pending`,
62
+
verify the node group is active and the selector matches node labels.
63
+
- question: What should I clean up to avoid ongoing AWS charges?
64
+
answer: >-
65
+
Delete the NGINX workload and namespace created for the test, then deprovision the EKS cluster
66
+
from Rafay. This releases the associated AWS resources.
Copy file name to clipboardExpand all lines: content/learning-paths/servers-and-cloud-computing/rafay-eks/cluster.md
+21-13Lines changed: 21 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,16 +1,17 @@
1
1
---
2
-
title: "Create the EKS cluster"
2
+
title: Create an Amazon EKS cluster using a Rafay cluster manifest
3
+
description: Create and apply a Rafay cluster manifest to provision an Amazon EKS cluster with an AWS Graviton-based node group, then download kubeconfig and verify the nodes report arm64.
3
4
weight: 3
4
5
5
6
### FIXED, DO NOT MODIFY
6
7
layout: learningpathall
7
8
---
8
9
9
-
In this section, you define and provision an EKS cluster with a Graviton-based node group using Rafay's declarative manifest format. You then apply the manifest with RCTL, wait for the cluster to reach a ready state, and download the kubeconfig so you can interact with the cluster.
10
-
11
10
## Create the cluster manifest
12
11
13
-
The Rafay platform uses a declarative YAML manifest to define your EKS cluster. Create a file named `demo-eks-graviton.yaml` with the following content:
12
+
The Rafay platform uses a declarative YAML manifest to define your EKS cluster.
13
+
14
+
Create a file named `demo-eks-graviton.yaml` with the following content:
14
15
15
16
```yaml
16
17
apiVersion: infra.k8smgmt.io/v3
@@ -48,7 +49,7 @@ spec:
48
49
autoScaler: true
49
50
# Allows for full ECR (Elastic Container Registry) access. This is useful for building, for example, a CI server that needs to push images to ECR
50
51
imageBuilder: true
51
-
# The AWS EC2 instance type that will be used for the nodes
52
+
# The Amazon EC2 instance type that will be used for the nodes
52
53
instanceType: m7g.large
53
54
# The maximum number of nodes that can run in the node group
54
55
maxSize: 1
@@ -82,10 +83,10 @@ spec:
82
83
83
84
Key fields to note:
84
85
85
-
- `cloudCredentials` — must exactly match the credential name you entered in the Rafay console
86
-
- `project`- must be the project you attached the credential to
87
-
- `instanceType: m7g.large` — a Graviton3 instance with Arm Neoverse processors
88
-
- `publicAccess: false` — the Kubernetes API server has no public endpoint. You reach the cluster exclusively through RCTL, which routes traffic through the Rafay control plane.
86
+
- `cloudCredentials` must exactly match the credential name you entered in the Rafay console.
87
+
- `project`must be the project you attached the credential to.
88
+
- `instanceType`must be a Graviton-based EC2 instance type with Arm Neoverse processors. In this manifest, it's Graviton3-based `m7g.large`.
89
+
- `publicAccess`must be `false`. The Kubernetes API server has no public endpoint. You reach the cluster exclusively through RCTL, which routes traffic through the Rafay control plane.
89
90
90
91
## Apply the cluster manifest
91
92
@@ -126,11 +127,12 @@ The output is similar to:
126
127
127
128
## Monitor cluster provisioning
128
129
129
-
Poll the cluster status until it reports `READY`. Provisioning typically takes 15–20 minutes as Rafay creates the VPC, EKS control plane, and managed node group.
130
+
Poll the cluster status until it reports `READY`:
130
131
131
132
```console
132
133
rctl get cluster demo-eks-graviton
133
134
```
135
+
Provisioning typically takes 15–20 minutes as Rafay creates the VPC, EKS control plane, and managed node group.
While waiting, you can run the command again every few minutes. You will see various status values before the status changes to `READY`. You can also check the AWS CloudFormation console to see project and look for any stack errors.
147
+
While waiting, you can run the command again every few minutes. You'll see various status values before the status changes to `READY`. You can also check the AWS CloudFormation console to look for any stack errors.
146
148
147
149
## Download the kubeconfig
148
150
149
-
Once the cluster is `READY`, download the kubeconfig file:
151
+
After the cluster is `READY`, download the kubeconfig file:
The `arm64` value in the `ARCH` column confirms that the node is running on an AWS Graviton instance. Your EKS cluster is ready to accept workloads. In the next section, you will deploy NGINX to this cluster and verify it runs on the Graviton node.
184
+
The `arm64` value in the `ARCH` column confirms that the node is running on an AWS Graviton-based instance. Your EKS cluster is ready to accept workloads.
185
+
186
+
## What you've accomplished and what's next
187
+
188
+
You've now defined and provisioned an Amazon EKS cluster with a Graviton-based node group using Rafay's declarative manifest format. You then applied the manifest with RCTL, waited for the cluster to reach a ready state, and downloaded the kubeconfig so you can interact with the cluster.
189
+
190
+
In the next section, you'll deploy NGINX to this cluster and verify it runs on the Graviton-based node.
Copy file name to clipboardExpand all lines: content/learning-paths/servers-and-cloud-computing/rafay-eks/nginx.md
+12-15Lines changed: 12 additions & 15 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,16 +1,15 @@
1
1
---
2
-
title: "Deploy NGINX and clean up"
2
+
title: Deploy NGINX to the Amazon EKS cluster and clean up
3
+
description: Deploy NGINX to an Amazon EKS cluster on AWS Graviton-based nodes, test in-cluster connectivity, and clean up the Kubernetes and cloud resources.
3
4
weight: 4
4
5
5
6
### FIXED, DO NOT MODIFY
6
7
layout: learningpathall
7
8
---
8
9
9
-
With the cluster running, you can now validate it by deploying a workload. In this section, you deploy NGINX using a manifest that pins pods to `arm64` nodes, verify the pod reaches a `Running` state, and test connectivity from inside the cluster. You then clean up all provisioned resources.
10
-
11
10
## Deploy NGINX
12
11
13
-
With the EKS cluster running on Graviton nodes, deploy NGINX to confirm that arm64 workloads schedule and run correctly.
12
+
With the Amazon EKS cluster running on Graviton-based nodes, deploy NGINX to confirm that `arm64` workloads schedule and run correctly.
14
13
15
14
Create a file named `nginx-graviton.yaml` with the following content:
The NGINX service is type `ClusterIP`, which means it has no external IP and is only reachable from within the cluster network. The cluster also has `publicAccess: false`, so there is no public Kubernetes API endpoint. Both constraints mean you cannot test connectivity from your laptop directly. Instead, run a one-off pod inside the cluster that sends a request to the service and then deletes itself:
106
+
The NGINX service is type `ClusterIP`, which means it has no external IP and is reachable only from within the cluster network. The cluster also has `publicAccess: false`, so there's no public Kubernetes API endpoint. Both constraints mean you can't test connectivity from your local machine directly.
107
+
108
+
Instead, run a one-off pod inside the cluster that sends a request to the service and then deletes itself:
108
109
109
110
```console
110
111
kubectl run curl-test --rm -it --image=curlimages/curl --restart=Never -- curl http://nginx-arm-svc.nginx.svc
@@ -127,9 +128,9 @@ working. Further configuration is required.</p>
127
128
pod "curl-test" deleted
128
129
```
129
130
130
-
The NGINX welcome page confirms that the workload is running and reachable on your Graviton-backed EKS cluster.
131
+
The NGINX welcome page confirms that the workload is running and reachable on your Graviton-based EKS cluster.
131
132
132
-
## Clean up
133
+
## Clean up resources
133
134
134
135
Remove the NGINX workload and then delete the cluster to avoid ongoing AWS charges.
135
136
@@ -148,7 +149,7 @@ service "nginx-arm-svc" deleted
148
149
```
149
150
150
151
{{< notice warning >}}
151
-
Deleting the cluster through RCTL triggers the removal of the EKS control plane, managed node group, and associated CloudFormation stacks in your AWS account. If you do not run this command, AWS will continue to charge you for the running EC2 instances and EKS control plane.
152
+
Deleting the cluster through RCTL triggers the removal of the EKS control plane, managed node group, and associated CloudFormation stacks in your AWS account. If you don't run this command, AWS will continue to charge you for the running EC2 instances and EKS control plane.
152
153
{{< /notice >}}
153
154
154
155
Delete the EKS cluster through Rafay:
@@ -157,13 +158,9 @@ Delete the EKS cluster through Rafay:
157
158
rctl delete cluster demo-eks-graviton
158
159
```
159
160
160
-
## Summary
161
+
## What you've accomplished
161
162
162
-
In this Learning Path you:
163
+
You've now deployed NGINX using a manifest that pins pods to `arm64` nodes, verified the pod reaches a `Running` state, and tested connectivity from inside the cluster. You then cleaned up all provisioned resources.
163
164
164
-
- Connected your AWS account to the Rafay platform using a cross-account IAM role and cloud credential.
165
-
- Provisioned a private Amazon EKS cluster with a Graviton (`m7g.large`) node group using a declarative Rafay manifest and `rctl`.
166
-
- Deployed NGINX with a `nodeSelector` that pins workloads to `arm64` nodes, confirming that Arm-native containers schedule and run correctly.
167
-
- Tested in-cluster connectivity using a one-off curl pod, and cleaned up all AWS and Rafay resources.
165
+
Rafay's control plane handles cluster access without requiring a public Kubernetes API endpoint, so you can use Rafay to run private, Graviton-based EKS clusters at scale.
168
166
169
-
Rafay's control plane handles cluster access without requiring a public Kubernetes API endpoint, making it straightforward to run private, Graviton-backed EKS clusters at scale.
0 commit comments