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
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/v3kind:Clustermetadata:# The name of the clustername:external-dns-demo# The name of the project the cluster will be created inproject:defaultprojectspec:blueprintConfig:# The name of the blueprint the cluster will usename:minimal# The version of the blueprint the cluster will useversion:latest# The name of the cloud credential that will be used to create the cluster cloudCredentials:my-cloud-credentialconfig:# The EKS addons that will be applied to the clusteraddons:-name:kube-proxyversion:latest-name:vpc-cniversion:latest-name:corednsversion:latestmanagedNodeGroups:# The AWS AMI family type the nodes will use-amiFamily:AmazonLinux2# The desired number of nodes that can run in the node group desiredCapacity:1iam:withAddonPolicies:# Enables the IAM policy for cluster autoscaleautoScaler:true# Adds policies for using the aws-load-balancer-controllerawsLoadBalancerController:true# Adds the external-dns project policies for Amazon Route 53externalDNS:true# The AWS EC2 instance type that will be used for the nodesinstanceType:t3.large# The maximum number of nodes that can run in the node groupmaxSize:6# The minimum number of nodes that can run in the node groupminSize:1# The name of the node group that will be created in AWSname:my-ng# Enable private networking for the nodegroupprivateNetworking:true# The size in gigabytes of the volume attached to each nodevolumeSize:80# The type of disk backing the node volume. alid variants are: "gp2" is General Purpose SSD, "gp3" is General Purpose SSD which can be optimised for high throughput (default), "io1" is Provisioned volumeType:gp3metadata:# The name of the clustername:external-dns-demo# The AWS region the cluster will be created inregion:us-west-2# The tags that will be applied to the AWS cluster resourcestags:owner:rafay# The Kubernetes version that will be installed on the cluster version:latestvpc:clusterEndpoints:# Enables private access to the Kubernetes API server endpointsprivateAccess:true# Enables public access to the Kubernetes API server endpointspublicAccess:falseproxyConfig:{}type:aws-eks
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.