Skip to content

Docs should clarify private endpoint need to be true when public endpoint is IP filtered #1111

@schollii

Description

@schollii

I have issues

I'm submitting a...

  • bug report
  • feature request
  • support request - read the FAQ first!
  • kudos, thank you, warm fuzzy

If this is a bug, how to reproduce? Please include a code sample if relevant.

Use the managed node group example and override cluster_endpoint_public_access_cidrs to be [YOUR_WAN_IP/32] but do not set cluster_endpoint_private_access

terraform apply: after 15 min to create EKS cluster, the node group will loop waiting for 25 minutes when TF gives up, with the following error:

Error: error waiting for EKS Node Group (eks-experiment-3:eks-experiment-3-main-wise-gobbler) creation: NodeCreationFailure: Instances failed to join the kubernetes cluster. Resource IDs: [... ... ...]

What's the expected behavior?

I didn't realize until after a lot of pain trying to figure out causes that it was result of having cluster_endpoint_public_access_cidrs = [MY_WAN_IP], but have only a public cluster endpoint: the nodes would then talk to the cluster through the public endpoint but their IP would not match the above list so could never join.

So this might be more of an enhancement than a bug report:

  • I should have seen in the docs for cluster_endpoint_public_access_cidrs that in almost all cases where you override this value, you will need to set cluster_endpoint_private_access to true
  • the cluster_endpoint_private_access should have defaulted to true since cluster_endpoint_public_access_cidrs was not the default value, how could it possibly work with anything but private=true?

Are you able to fix this problem and submit a PR? Link here if you have already.

Environment details

  • Affected module version: 13.2.1
  • OS: Ubuntu
  • Terraform version: 0.13.5

Any other relevant info

If you override the default of cluster_endpoint_public_access_cidrs (which is [0.0.0.0] by default), you are pretty much guaranteed, IMO, to need to activate the private endpoint. In fact, enabling nodes to use the private endpoint should probably be a default. What would be the downside? What benefit to have node-to-node traffic ever leave the cluster?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions