Skip to content

Provision

What Will You Do

In this part, you will provision an Amazon EKS cluster using Custom Networking.


Update Cluster Specification

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

Cluster Spec Explained

In the example cluster spec provided,

  • The name of the EKS cluster will be "custom-networking-demo" and it is configured to be provisioned in the "defaultproject" in your Org.
  • The EKS cluster is configured with one managed node group.
  • (3) ENI Configs will be created, one for each AZ we are using.

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

  • cluster name: "custom-networking-demo"
  • project: "defaultproject"
  • cloudCredentials: "my-cloud-credential"
  • region: "us-west-2"
  • Subnet IDs
  • AWS Tags as required in your AWS account
apiVersion: infra.k8smgmt.io/v3
kind: Cluster
metadata:
  name: custom-networking-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
      instanceType: t3.large
      maxSize: 6
      minSize: 1
      name: my-ng
      privateNetworking: true
      version: "1.25"
      volumeSize: 80
      volumeType: gp3
    metadata:
      name: custom-networking-demo
      region: us-west-2
      tags:
        owner: rafay
      version: "1.25"
    network:
      cni:
        name: aws-cni
        params:
          customCniCrdSpec:
            us-west-2a:
            - subnet: subnet-081ff5e370607fafa
            us-west-2c:
            - subnet: subnet-0d336d3350d55a986
            us-west-2d:
            - subnet: subnet-0a4548dabae4b34cb
    vpc:
      clusterEndpoints:
        privateAccess: true
        publicAccess: false
      nat:
        gateway: Single
      subnets:
        private:
          subnet-083bf5944d5ecb3dd:
            id: subnet-083bf5944d5ecb3dd
          subnet-0bce0fb4a1f682e13:
            id: subnet-0bce0fb4a1f682e13
          subnet-0f4534f41b98dd7be:
            id: subnet-0f4534f41b98dd7be
        public:
          subnet-0238aec96d29bc809:
            id: subnet-0238aec96d29bc809
          subnet-0ad39284a3ed57cfe:
            id: subnet-0ad39284a3ed57cfe
          subnet-0fb450e17506bd15d:
            id: subnet-0fb450e17506bd15d
  proxyConfig: {}
  type: aws-eks

Provision EKS Cluster

  • Type the command below to provision the EKS cluster
rctl apply -f custom-networking-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": "pkvgygk",
  "operations": [
    {
      "operation": "ClusterCreation",
      "resource_name": "custom-networking-demo",
      "status": "PROVISION_TASK_STATUS_PENDING"
    },
    {
      "operation": "NodegroupCreation",
      "resource_name": "my-ng",
      "status": "PROVISION_TASK_STATUS_PENDING"
    },
    {
      "operation": "BlueprintSync",
      "resource_name": "custom-networking-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. Once provisioning is complete, you should see a healthy cluster in the project in your Org

Provisioned Cluster