Skip to content
Proud to collaborate with Microsoft for Startups

cluster.provision-eks ​

Provision an AWS EKS control plane and managed nodegroup, then register and verify Kubernetes access.

Overview ​

PropertyValue
Workflow typeDag
LibraryApp-clusters-aws
Version1.0

Input Schema ​

FieldTypeRequiredDefaultDescription
organization_uuiduuidYes—Organization UUID that will own the Kubernetes CloudConnection.
aws_connection_uuiduuidYes—AWS CloudConnection UUID used for provider calls.
cluster_namestringYes—EKS cluster name.
regionstringYes—AWS region.
cluster_role_arnstringYes—IAM role ARN for the EKS control plane.
subnet_idslistYes—VPC subnet IDs for the EKS control plane.
security_group_idslistNo—Security group IDs for the EKS control plane.
kubernetes_versionstringNo—Requested Kubernetes version.
endpoint_public_accessbooleanNo—Whether the EKS public endpoint is enabled.
endpoint_private_accessbooleanNo—Whether the EKS private endpoint is enabled.
public_access_cidrslistNo—CIDR blocks allowed to reach the public endpoint.
nodegroup_namestringYes—Managed nodegroup name.
node_role_arnstringYes—IAM role ARN for worker nodes.
kubeconfig_role_arnstringNo—IAM role ARN used by aws eks get-token in the generated kubeconfig.
node_subnet_idslistNo—Worker subnet IDs. Defaults to subnet_ids.
scaling_configjsonNo—EKS nodegroup scaling config.
instance_typeslistNo—EC2 instance types for the nodegroup.
capacity_typestringNo—EKS nodegroup capacity type.
disk_size_gibintegerNo—Worker node disk size in GiB.
tagsjsonNo—Provider tags applied to supported AWS resources.
register_connection_namestringNo—Name for the registered Kubernetes CloudConnection.
cluster_timeout_secondsintegerNo—Timeout while waiting for the control plane.
nodegroup_timeout_secondsintegerNo—Timeout while waiting for the nodegroup.
verify_timeout_secondsintegerNo—Reserved for future verification timeout support.
poll_interval_secondsintegerNo—Poll interval for provider waiters.

Output Schema ​

FieldTypeRequiredDefaultDescription
organization_uuiduuidYes—Organization UUID that will own the Kubernetes CloudConnection.
aws_connection_uuiduuidYes—AWS CloudConnection UUID used for provider calls.
cluster_namestringYes—EKS cluster name.
regionstringYes—AWS region.
cluster_role_arnstringYes—IAM role ARN for the EKS control plane.
subnet_idslistYes—VPC subnet IDs for the EKS control plane.
security_group_idslistNo—Security group IDs for the EKS control plane.
kubernetes_versionstringNo—Requested Kubernetes version.
endpoint_public_accessbooleanNo—Whether the EKS public endpoint is enabled.
endpoint_private_accessbooleanNo—Whether the EKS private endpoint is enabled.
public_access_cidrslistNo—CIDR blocks allowed to reach the public endpoint.
nodegroup_namestringYes—Managed nodegroup name.
node_role_arnstringYes—IAM role ARN for worker nodes.
kubeconfig_role_arnstringNo—IAM role ARN used by aws eks get-token in the generated kubeconfig.
node_subnet_idslistNo—Worker subnet IDs. Defaults to subnet_ids.
scaling_configjsonNo—EKS nodegroup scaling config.
instance_typeslistNo—EC2 instance types for the nodegroup.
capacity_typestringNo—EKS nodegroup capacity type.
disk_size_gibintegerNo—Worker node disk size in GiB.
tagsjsonNo—Provider tags applied to supported AWS resources.
register_connection_namestringNo—Name for the registered Kubernetes CloudConnection.
cluster_timeout_secondsintegerNo—Timeout while waiting for the control plane.
nodegroup_timeout_secondsintegerNo—Timeout while waiting for the nodegroup.
verify_timeout_secondsintegerNo—Reserved for future verification timeout support.
poll_interval_secondsintegerNo—Poll interval for provider waiters.
describe_subnetsjsonNo—Output from aws.ec2.describe_subnets.
create_clusterjsonNo—Output from aws.eks.create_cluster.
wait_cluster_activejsonNo—Output from aws.eks.wait_cluster_active.
create_nodegroupjsonNo—Output from aws.eks.create_nodegroup.
wait_nodegroup_activejsonNo—Output from aws.eks.wait_nodegroup_active.
build_kubeconfigjsonNo—Output from aws.eks.build_kubeconfig.
register_kubernetes_connectionjsonNo—Output from cluster.register-kubernetes-connection.
verify_kubernetes_connectionjsonNo—Output from cluster.verify-kubernetes-connection.
connection_uuiduuidNo—Registered Kubernetes CloudConnection UUID.
provider_cluster_refstringNo—EKS cluster ARN or name.
cluster_endpointstringNo—Kubernetes API endpoint.
statusstringNo—Aggregated provision status.
completed_atstringNo—ISO-8601 completion timestamp.
workflow_run_uuidstringNo—Engine DAG run UUID for child step state.
failure_reasonstringNo—Engine failure reason.
failed_stepjsonNo—Failed DAG step.
failed_layerjsonNo—Failed DAG layer.
failed_at_statejsonNo—Failed state metadata.
errorstringNo—Error message.
error_typestringNo—Error class.
compensation_triggerjsonNo—DAG compensation trigger.
comp_current_layerjsonNo—Current compensation layer.
comp_queuejsonNo—Remaining compensation queue.
comp_retry_countjsonNo—Current compensation retry count.

DAG Layers ​

#LayerStepsCompensation
1validate_networkaws.ec2.describe_subnets—
2create_clusteraws.eks.create_clustercluster.delete-eks
3wait_clusteraws.eks.wait_cluster_active—
4create_nodegroupaws.eks.create_nodegroupcluster.delete-eks
5wait_nodegroupaws.eks.wait_nodegroup_active—
6build_kubeconfigaws.eks.build_kubeconfig—
7register_connectioncluster.register-kubernetes-connectioncluster.delete
8verify_connectioncluster.verify-kubernetes-connection—

Execution Flow ​

Compensation ​

When any layer fails, its compensation steps run in reverse order to roll back the work completed so far.

Sub-workflows ​

Sub-workflowStep name
aws.ec2.describe_subnetsdescribe_subnets
aws.eks.create_clustercreate_cluster
aws.eks.wait_cluster_activewait_cluster_active
aws.eks.create_nodegroupcreate_nodegroup
aws.eks.wait_nodegroup_activewait_nodegroup_active
aws.eks.build_kubeconfigbuild_kubeconfig
cluster.register-kubernetes-connectionregister_kubernetes_connection
cluster.verify-kubernetes-connectionverify_kubernetes_connection
cluster.delete-eksdelete_eks_cluster
cluster.deletedelete_registered_cluster

API Usage ​

bash
POST /api/workflows/start
Content-Type: application/json

{
  "workflow_type": "cluster.provision-eks",
  "initial_data": {
    "organization_uuid": "value",
    "aws_connection_uuid": "value",
    "cluster_name": "value",
    "region": "value"
  }
}