Skip to content

v21 Proposed Changes #3394

@bryantbiggs

Description

@bryantbiggs

In addition, the minimum supported versions of the AWS provider and Terraform will be v6.0 and v1.5.7 respectively. Removed arguments in v6.0 of the provider will be remediated as well

  1. Remove aws-auth sub-module

  2. Correct add-ons behavior

  3. Remove identity provider correction added in 1.30

    • terraform-aws-eks/main.tf

      Lines 664 to 669 in 5583604

      # Maintain current behavior for <= 1.29, remove default for >= 1.30
      # `null` will return the latest Kubernetes version from the EKS API, which at time of writing is 1.30
      # https://github.com/kubernetes/kubernetes/pull/123561
      # TODO - remove on next breaking change in conjunction with issuer URL change below
      idpc_backwards_compat_version = contains(["1.21", "1.22", "1.23", "1.24", "1.25", "1.26", "1.27", "1.28", "1.29"], coalesce(var.cluster_version, "1.30"))
      idpc_issuer_url = local.idpc_backwards_compat_version ? try(aws_eks_cluster.this[0].identity[0].oidc[0].issuer, null) : null
    • Prevent conflicts between service account and jwt issuers kubernetes/kubernetes#123561
  4. Correct AMI input behavior

    • Remove platform variable - legacy artifact when there were 3 OS'es (platforms). The number of AMI types and OS'es has grown quite a bit since its introduction
    • Change ami_type to be required; it will default to AL2023_x86_64_STANDARD to match similar behavior of EKS MNG starting on 1.30
  5. Correct IAM permissions

    • [Cluster] Remove arn:aws:iam::aws:policy/AmazonEKSVPCResourceController - this is for SGPP and users can pass in to their node group when needed
    • [Node] Remove arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy and arn:aws:iam::aws:policy/AmazonEKS_CNI_IPv6_Policy from node roles - this will need to come via the VPC CNI pod identity
    • [Node] Replace arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly with arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryPullOnly
    • [Node] Investigate adding the the node name convention via nodeadm user data in order to use arn:aws:iam::aws:policy/AmazonEKSWorkerNodeMinimalPolicy instead of arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy to better match what EKS Auto Mode does
      • How would this affect Bottlerocket? Windows?
      • Whats the benefit - need to diff the policies. Tradeoff in terms of complexity versus permissions removed.
    • [Node groups] Set hop limit to 1 with changes above
      http_put_response_hop_limit = 2
  6. Correct Karpenter permissions

    • Switch to v1 policy, remove prior policy remnants
      # TODO - make v1 permssions the default policy at next breaking change
    • Enable pod identity association by default
      # TODO - Change default to `true` at next breaking change
    • Remove IRSA? Doesn’t seem like there are any plausible situations where cross account would be useful with Karpenter so we could probably just remove IRSA entirely
    • Update node IAM role permissions with node role changes above
  7. Switch to dualstack compatible OIDC endpoint for identity provider

  8. Switch to efa-only enabled by default

Questions

  1. Should the default version for add-ons default to latest?
    • Pro: new features are pushed out through latest versions so users can utilizes those without any issues or changes
    • Con: more noise in the changes as new versions are continuously pushed out, some users have claimed that they have been burnt by new versions (unknown how valid these claims are)
  2. How to make the transition to VPC CNI pod identity association easier since that will require an IAM role which currently lives in another module.
    • Current implementation is generic over the add-ons API; you pass in the add-on name you wish to enable. This would impose a double loop or loop and compare
    • This also introduces a conflict that we are trying to remove with embedding an external module (KMS)

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions