Repository navigation
Grant ec2:DescribeSubnets to the IPv6 VPC CNI role - #8835
Merged
Merged
Conversation
Creating an IPv6 cluster currently fails. The nodes launch and join, but
never become ready, so the managed nodegroup stays in CREATING until
eksctl gives up after 30 minutes:
Error: failed to create cluster "..."
exceeded max wait time for StackCreateComplete waiter
The cause is that aws-node crash-loops. ipamd on the node reports:
Initialization failure: checking to exclude configured subnet,
error: failed to get VPC subnets: AllocENI: unable to describe
subnets: api error UnauthorizedOperation: ... is not authorized to
perform: ec2:DescribeSubnets because no identity-based policy allows
the ec2:DescribeSubnets action
The VPC CNI logs "Subnet discovery enabled true" and calls
ec2:DescribeSubnets during initialisation. It is enabled by default, so
the call is not optional. The CNI also raises its own MissingIAMPermissions
warning event pointing at the upstream IAM policy documentation.
makeIPv6VPCCNIPolicyDocument did not grant that action. Only IPv6 clusters
are affected: the IPv4 path attaches the AWS-managed AmazonEKS_CNI_Policy,
which already includes ec2:DescribeSubnets, whereas the IPv6 path uses this
inline policy.
This also explains why the ipv6 integration suite began failing without any
corresponding change to eksctl. Nothing here changed; the CNI addon version
advanced to one that performs subnet discovery.
Verified end to end against a real cluster. Before the change, aws-node was
in CrashLoopBackOff with both nodes NotReady and the nodegroup stuck in
CREATING with an empty health.issues list. Adding ec2:DescribeSubnets to the
live role took aws-node to 2/2 Running, both nodes to Ready, coredns off
Pending and the nodegroup to ACTIVE, with no other change.
Contributor
|
Hello gustavodiaz7722 👋 Thank you for opening a Pull Request in |
NicholasBlaskey
approved these changes
Aug 13, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Creating an IPv6 cluster fails. Nodes launch and join the cluster, but never become
ready, so the managed nodegroup stays in
CREATINGuntil eksctl gives up after 30minutes:
aws-nodeis inCrashLoopBackOff. ipamd on the node says exactly why:The CNI logs
Subnet discovery enabled trueand callsec2:DescribeSubnetsduringinitialisation. It is on by default, so the call is not optional. The CNI also raises
its own
MissingIAMPermissionswarning event, pointing atthe upstream IAM policy docs.
makeIPv6VPCCNIPolicyDocumentdoes not grant that action.Why only IPv6
The IPv4 path attaches the AWS-managed
AmazonEKS_CNI_Policy, which already includesec2:DescribeSubnets. The IPv6 path uses this hand-written inline policy instead, sothe permission has to be granted explicitly.
Why this started without an eksctl change
The
ipv6integration suite has been failing since 2026-07-30 with no correspondingcommit. Nothing in eksctl changed; the VPC CNI addon version advanced to one that
performs subnet discovery, and the missing permission became load-bearing.
This is why the failure was so hard to place. The symptom surfaces well above the
cause:
ManagedNodeGroup CREATE_FAILED "Resource creation cancelled", and only because eksctl initiates the delete. CFN itself never fails.describe-nodegroupreportshealth.issues: []throughout, because from EKS's pointof view the instances launched correctly.
InService/Healthyin the ASG andnodeadmcompletes cleanly.Fix
Add
ec2:DescribeSubnetsto the IPv6 VPC CNI policy.Testing
Verified end to end against a real IPv6 cluster, reproducing with the released
v0.229.0 binary, so this affects a shipped version and not just
main.Before, with the policy as-is on
main:Adding
ec2:DescribeSubnetsto the live role, changing nothing else:The unit test for the IPv6 IRSA policy is extended to assert
DescribeSubnetsispresent, so the permission cannot be dropped again silently.
Note for reviewers
Worth sanity-checking the IPv6 policy against the upstream CNI IAM doc more broadly
while we are here, in case subnet discovery is not the only capability that has been
added since this list was written. I only added what I could demonstrate is required.