Skip to content

Part 1: 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 using the minimal blueprint


Step 1: Cluster Spec

  • Open a suitable YAML editor and copy/paste the example EKS cluster specification provided below.
  • Save the file as "external-dns-demo.yaml" (an example)

Cluster Spec Explained

In the example cluster spec provided,

  • The name of the EKS cluster will be "external-dns-demo" and it is configured to be provisioned in the "defaultproject" in your Org
  • The EKS cluster is configured with one managed node group
  • The node group will have the necessary permissions to modify Route 53 hosted zones

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

  • cluster name: "external-dns-demo"
  • project: "defaultproject"
  • cloudCredentials: "my-cloud-credential"
  • region: "us-west-2"
  • AWS Tags as required in your AWS account
apiVersion: infra.k8smgmt.io/v3
kind: Cluster
metadata:
  name: external-dns-demo
  project: defaultproject
spec:
  blueprintConfig:
    name: minimal
  cloudCredentials: my-cloud-credential
  config:
    addons:
    - name: aws-ebs-csi-driver
      version: latest
    managedNodeGroups:
    - amiFamily: AmazonLinux2
      desiredCapacity: 1
      iam:
        withAddonPolicies:
          autoScaler: true
          awsLoadBalancerController: true
          externalDNS: true
      instanceType: t3.large
      maxSize: 6
      minSize: 1
      name: my-ng
      privateNetworking: true
      version: "1.25"
      volumeSize: 80
      volumeType: gp3
    metadata:
      name: external-dns-demo
      region: us-west-2
      tags:
        owner: rafay
      version: "1.25"
    vpc:
      clusterEndpoints:
        privateAccess: true
        publicAccess: false
      nat:
        gateway: Single
  proxyConfig: {}
  type: aws-eks

Step 2: Provision Cluster

  • Type the command below to provision the EKS cluster
rctl apply -f external-dns-demo.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": "z24xwvk",
  "operations": [
    {
      "operation": "ClusterCreation",
      "resource_name": "external-dns-demo",
      "status": "PROVISION_TASK_STATUS_PENDING"
    },
    {
      "operation": "NodegroupCreation",
      "resource_name": "my-ng",
      "status": "PROVISION_TASK_STATUS_PENDING"
    },
    {
      "operation": "BlueprintSync",
      "resource_name": "external-dns-demo",
      "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.

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

Cluster Provisioning


Step 3: Verify Cluster

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

Provisioned Cluster


Recap

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