overcast local AWS emulator

Service Reference

EKS — Amazon Elastic Kubernetes Service

EKS supports two modes:

EKS — Amazon Elastic Kubernetes Service

EKS supports two modes:

  • mock (default): metadata-only controller API.
  • live (opt-in via OVERCAST_EKS_MODE=live): launches a k3s control-plane container on CreateCluster.

Behavior notes

  • In mock mode, cluster status is immediately ACTIVE and endpoint/CA fields are synthetic placeholders.
  • In live mode, cluster status starts CREATING and transitions to ACTIVE after k3s /readyz responds. The k3s image is pulled first, so the first cluster on a machine that has never run one waits on that download.
  • In live mode, a control plane that cannot be started reaches FAILED instead of staying CREATING, and DescribeCluster reports why under cluster.health.issues — the Docker error verbatim for an image that cannot be pulled or a container that cannot be created or started.
  • In live mode, DescribeCluster endpoint uses https://<OVERCAST_HOSTNAME-or-localhost>:<mapped-port>.
  • In live mode, ListClusters filters out legacy mock-record clusters (*.mock.eks.local) to avoid mixed-mode leakage.
  • In live mode, cluster-scoped read/update APIs for update/insight/config flows reject legacy mock-record clusters with 501 to keep behavior mode-consistent.
  • In live mode, UpdateClusterConfig follows the same mixed-mode rule and rejects legacy mock-record clusters with 501.
  • In live mode, nodegroup CRUD/update/list endpoints also reject legacy mock-record clusters with 501 for the same mixed-mode safety boundary.
  • In live mode, access-entry and access-policy association endpoints also reject legacy mock-record clusters with 501.
  • In live mode, identity-provider-config and pod-identity-association endpoints also reject legacy mock-record clusters with 501.
  • In live mode, fargate-profile and cluster-scoped add-on endpoints also reject legacy mock-record clusters with 501.
  • In live mode, DeleteCluster remains allowed for legacy mock-record clusters so mixed-mode leftovers can be cleaned up.
  • UpdateKubeconfig is an Overcast extension rather than an AWS API operation: aws eks update-kubeconfig is a CLI-side command that calls DescribeCluster and writes the file locally. Overcast serves the generated kubeconfig at POST /_overcast/eks/clusters/{name}/kubeconfig, which no AWS SDK calls.
  • In live mode, UpdateKubeconfig returns generated kubeconfig once the cluster reaches ACTIVE and runtime CA data is available; when CA is missing it attempts an on-demand backfill from the k3s runtime container before returning 503.
  • Nodegroups are metadata-only in both modes and do not start compute.

Live mode limits and non-goals

  • live mode is intentionally opt-in and has a much larger resource footprint than the default mock mode.
  • Startup and idle-memory headline claims for Overcast are measured with OVERCAST_EKS_MODE=mock.
  • Live-mode EKS launches a k3s control-plane container only; it does not provision real EKS worker capacity.
  • Nodegroup, Fargate profile, add-on, access entry/policy, identity provider config, and pod identity association APIs are control-plane metadata surfaces; they do not enforce IAM policy semantics or schedule Kubernetes workloads on managed EKS infrastructure.
  • Legacy mock-created EKS records remain blocked by design in live mode (501) for read/update/mutation APIs; DeleteCluster stays allowed for cleanup.

Summary

Category✅ Supported
Clusters29
Helpers1
Nodegroups6
Fargate4
Tags3
Addons7

Endpoints

Clusters

OperationStatusNotesAWS Docs
CreateCluster✅ SupportedStores cluster metadata including roleArn, version, resourcesVpcConfig, kubernetesNetworkConfig, and encryptionConfig; describe returns inline tagsdocs
DescribeCluster✅ Supporteddocs
DescribeClusterVersions✅ SupportedReturns synthetic supported Kubernetes version catalogdocs
ListClusters✅ Supporteddocs
CreateAccessEntry✅ SupportedStores cluster principal access entry metadata and persists inline tagsdocs
DescribeAccessEntry✅ SupportedReturns stored access entry metadata for a cluster principal ARN with inline tagsdocs
UpdateAccessEntry✅ SupportedUpdates stored access entry username/groups for a cluster principal ARNdocs
DeleteAccessEntry✅ SupportedDeletes stored access entry metadata for a cluster principal ARNdocs
ListAccessEntries✅ SupportedReturns stored principal ARNs for cluster access entriesdocs
AssociateAccessPolicy✅ SupportedAssociates a policy ARN with a stored access entry principaldocs
ListAccessPolicies✅ SupportedReturns synthetic managed EKS access policy catalogdocs
ListAssociatedAccessPolicies✅ SupportedLists associated policy ARNs and access scopes for a stored access entry principaldocs
DisassociateAccessPolicy✅ SupportedDisassociates a policy ARN from a stored access entry principaldocs
ListIdentityProviderConfigs✅ SupportedReturns stored identity provider config summariesdocs
DescribeIdentityProviderConfig✅ SupportedReturns the stored OIDC config nested under identityProviderConfig.oidc, with its ARN, status and inline tagsdocs
AssociateIdentityProviderConfig✅ SupportedStores OIDC identity provider metadata, persists inline tags, and records an update entrydocs
DisassociateIdentityProviderConfig✅ SupportedRemoves stored identity provider metadata, clears inline tags, and records an update entrydocs
CreatePodIdentityAssociation✅ SupportedCreates and stores pod identity association metadata for a cluster service account, persists inline tags, and rejects duplicate namespace/service-account bindingsdocs
ListPodIdentityAssociations✅ SupportedReturns stored pod identity associations for a clusterdocs
DescribePodIdentityAssociation✅ SupportedReturns stored pod identity association details by association ID with inline tagsdocs
UpdatePodIdentityAssociation✅ SupportedUpdates stored pod identity association role ARN by association IDdocs
DeletePodIdentityAssociation✅ SupportedDeletes stored pod identity association metadata by association IDdocs
ListUpdates✅ SupportedLists recorded update IDs for a clusterdocs
ListInsights✅ SupportedReturns synthetic health/readiness insight summaries for a cluster; honours the modeled category/kubernetesVersion/status filter and maxResults/nextToken pagingdocs
DescribeInsight✅ SupportedReturns synthetic health/readiness insight detail by insight IDdocs
UpdateClusterConfig✅ SupportedUpdates stored cluster logging, resourcesVpcConfig, and kubernetesNetworkConfig; records an update entrydocs
UpdateClusterVersion✅ SupportedUpdates stored cluster version metadatadocs
DescribeUpdate✅ SupportedReturns previously recorded cluster/nodegroup update status by update IDdocs
DeleteCluster✅ SupportedDeletes cluster metadata and nodegroupsdocs

Helpers

OperationStatusNotesAWS Docs
UpdateKubeconfig✅ SupportedEmulator extension, not an AWS API operation — aws eks update-kubeconfig is a CLI-side command that calls DescribeCluster and writes the file locally, so no SDK calls this. Overcast returns the generated kubeconfig YAML instead (503 until a live cluster’s endpoint/CA are ready)cli

Nodegroups

OperationStatusNotesAWS Docs
CreateNodegroup✅ SupportedStores full nodegroup metadata including instanceTypes, amiType, capacityType, diskSize, taints, labels, scalingConfig, updateConfig, launchTemplate, and releaseVersiondocs
UpdateNodegroupVersion✅ SupportedUpdates stored nodegroup version, releaseVersion and launchTemplate; records an update entry. No body member is required, matching the modeldocs
UpdateNodegroupConfig✅ SupportedUpdates stored nodegroup labels, taints, scalingConfig, and updateConfig; records an update entrydocs
DescribeNodegroup✅ Supporteddocs
ListNodegroups✅ Supporteddocs
DeleteNodegroup✅ SupportedDeletes nodegroup metadatadocs

Fargate

OperationStatusNotesAWS Docs
ListFargateProfiles✅ SupportedLists stored profiles; always includes synthetic “default” profiledocs
DescribeFargateProfile✅ SupportedReturns stored or synthetic default profiledocs
CreateFargateProfile✅ SupportedStores Fargate profile metadata including podExecutionRoleArn, subnets, and selectorsdocs
DeleteFargateProfile✅ SupportedRemoves stored Fargate profile metadatadocs

Tags

OperationStatusNotesAWS Docs
ListTagsForResource✅ SupportedReturns tags for any EKS resource ARNdocs
TagResource✅ SupportedAdds tags to an EKS resource by ARNdocs
UntagResource✅ SupportedRemoves tags from an EKS resource by ARNdocs

Addons

OperationStatusNotesAWS Docs
CreateAddon✅ SupportedStores add-on metadata including addonVersion, configurationValues, and serviceAccountRoleArn; describe returns inline tagsdocs
DescribeAddon✅ Supporteddocs
ListAddons✅ Supporteddocs
UpdateAddon✅ SupportedUpdates stored add-on version/configuration/service account role and records an update entry; resolveConflicts is echoed into the update’s params but not enforceddocs
DeleteAddon✅ SupportedRemoves add-on metadatadocs
DescribeAddonConfiguration✅ SupportedReturns the synthetic configuration schema for the requested add-on and version; both query members are required, and an uncatalogued version is a ResourceNotFoundExceptiondocs
DescribeAddonVersions✅ SupportedReturns the synthetic version catalog for vpc-cni, coredns, kube-proxy and aws-ebs-csi-driver, filtered by the addonName/kubernetesVersion/types/publishers/owners query members and paged by maxResults/nextTokendocs