DEV Community

Cover image for Using Rancher API to create EKS, AKS and GKE
Mohamed Radwan for AWS Community Builders

Posted on • Edited on

6 2

Using Rancher API to create EKS, AKS and GKE

Rancher can be used to create Kubernetes clusters on the public cloud through the Rancher web portal or API.

You need to create an API token with no scope to be able to create new clusters.

In the below commands update your cloud credentials depending on the cloud provider with the credential id "cattle-global-data:cc-XXXX"

Create EKS cluster

curl -k -s 'https://rancher.example.com/v3/cluster' -H 'content-type: application/json' -H "Authorization: Bearer $TOKEN" --data-binary '{"dockerRootDir":"/var/lib/docker","enableClusterAlerting":false,"enableClusterMonitoring":false,"enableNetworkPolicy":false,"windowsPreferedCluster":false,"type":"cluster","name":"test","eksConfig":{"imported":false,"amazonCredentialSecret":"cattle-global-data:cc-XXXX","displayName":"test","kmsKey":"","kubernetesVersion":"1.21","loggingTypes":[],"nodeGroups":[{"desiredSize":2,"diskSize":20,"ec2SshKey":"","gpu":false,"imageId":"","instanceType":"t3.medium","labels":{},"maxSize":2,"minSize":2,"nodegroupName":"test","requestSpotInstances":false,"resourceTags":{},"spotInstanceTypes":[],"subnets":[],"tags":{},"type":"nodeGroup","userData":"","launchTemplate":null,"version":"1.21"}],"privateAccess":false,"publicAccess":true,"publicAccessSources":[],"region":"eu-central-1","secretsEncryption":false,"securityGroups":[],"serviceRole":"","subnets":[],"tags":{},"type":"eksclusterconfigspec"},"labels":{}}'
Enter fullscreen mode Exit fullscreen mode

Create AKS cluster

curl -k -s 'https://rancher.example.com/v3/cluster' -H 'content-type: application/json' -H "Authorization: Bearer $TOKEN" --data-binary '{"dockerRootDir":"/var/lib/docker","enableClusterAlerting":false,"enableClusterMonitoring":false,"enableNetworkPolicy":false,"windowsPreferedCluster":false,"type":"cluster","name":"test","aksConfig":{"imported":false,"azureCredentialSecret":"cattle-global-data:cc-XXXXX","clusterName":"test","dnsPrefix":"test","kubernetesVersion":"1.21.9","linuxAdminUsername":"azureuser","loadBalancerSku":"Standard","networkPlugin":"kubenet","nodePools":[{"availabilityZones":["1","2","3"],"count":1,"enableAutoScaling":false,"maxPods":110,"mode":"System","name":"agentpool","orchestratorVersion":"1.21.9","osDiskSizeGB":128,"osDiskType":"Managed","osType":"Linux","type":"aksnodepool","vmSize":"Standard_DS2_v2","isNew":true}],"privateCluster":false,"resourceGroup":"test","resourceLocation":"northeurope","tags":{},"type":"aksclusterconfigspec"},"labels":{}}'
Enter fullscreen mode Exit fullscreen mode

Create GKE cluster

curl -k -s 'https://rancher.example.com/v3/cluster' -H 'content-type: application/json' -H "Authorization: Bearer $TOKEN" --data-binary '{"dockerRootDir":"/var/lib/docker","enableClusterAlerting":false,"enableClusterMonitoring":false,"enableNetworkPolicy":false,"windowsPreferedCluster":false,"type":"cluster","name":"test","gkeConfig":{"imported":false,"clusterAddons":{"horizontalPodAutoscaling":true,"httpLoadBalancing":true,"networkPolicyConfig":false},"clusterIpv4Cidr":"","clusterName":"test","description":"","enableKubernetesAlpha":false,"googleCredentialSecret":"cattle-global-data:cc-XXXX","ipAllocationPolicy":{"clusterIpv4CidrBlock":null,"clusterSecondaryRangeName":null,"createSubnetwork":false,"nodeIpv4CidrBlock":null,"servicesIpv4CidrBlock":null,"servicesSecondaryRangeName":null,"subnetworkName":null,"useIpAliases":true,"clusterIpv4Cidr":""},"kubernetesVersion":"1.21.6-gke.1500","labels":{},"locations":["europe-west3-a","europe-west3-b","europe-west3-c"],"loggingService":"logging.googleapis.com/kubernetes","maintenanceWindow":"","masterAuthorizedNetworks":{"enabled":false},"monitoringService":"monitoring.googleapis.com/kubernetes","network":"default","networkPolicyEnabled":false,"nodePools":[{"autoscaling":{"enabled":false,"maxNodeCount":null,"minNodeCount":null},"config":{"diskSizeGb":100,"diskType":"pd-standard","imageType":"COS","labels":{},"localSsdCount":0,"machineType":"n1-standard-2","oauthScopes":["https://www.googleapis.com/auth/devstorage.read_only","https://www.googleapis.com/auth/logging.write","https://www.googleapis.com/auth/monitoring","https://www.googleapis.com/auth/servicecontrol","https://www.googleapis.com/auth/service.management.readonly","https://www.googleapis.com/auth/trace.append"],"preemptible":false,"taints":null,"tags":null},"initialNodeCount":1,"management":{"autoRepair":true,"autoUpgrade":true},"maxPodsConstraint":110,"name":"test","version":"1.21.6-gke.1500","type":"gkenodepoolconfig","isNew":true}],"privateClusterConfig":{"enablePrivateEndpoint":false,"enablePrivateNodes":false,"masterIpv4CidrBlock":null},"projectID":"XXXXXX","region":"europe-west3","subnetwork":"default","type":"gkeclusterconfigspec","zone":""},"labels":{},"annotations":{}}'
Enter fullscreen mode Exit fullscreen mode

Get the information about the cluster, ex: test

curl -k -s -u $TOKEN -H 'Content-Type: application/json' 'https://rancher.example.com/v3/clusters?name=test' | jq -r .data[]
Enter fullscreen mode Exit fullscreen mode

Delete the Cluster

curl -k -s -u $TOKEN -X DELETE -H 'Accept: application/json' 'https://rancher.example.com/v1/provisioning.cattle.io.clusters/fleet-default/CLUSTER-ID'
Enter fullscreen mode Exit fullscreen mode

Do your career a big favor. Join DEV. (The website you're on right now)

It takes one minute, it's free, and is worth it for your career.

Get started

Community matters

Top comments (0)

Create a simple OTP system with AWS Serverless cover image

Create a simple OTP system with AWS Serverless

Implement a One Time Password (OTP) system with AWS Serverless services including Lambda, API Gateway, DynamoDB, Simple Email Service (SES), and Amplify Web Hosting using VueJS for the frontend.

Read full post