feat(eks): pin the cluster addon versions with addon_versions - #581
Merged
Conversation
The five addons the module installs were left on the upstream default,
most_recent = true, so every plan re-read the newest version available in
EKS and showed drift as soon as AWS published a build — on installations
that had not touched their EKS configuration at all.
addon_versions is a map keyed by addon name; an addon left out keeps
resolving to the most recent version, so the default {} reproduces
today's behaviour exactly.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
timossileandro
approved these changes
Sep 11, 2026
release-application Bot
added a commit
that referenced
this pull request
Sep 11, 2026
🤖 I have created a release *beep* *boop* --- ## [7.8.0](v7.7.0...v7.8.0) (2026-09-11) ### Features * **eks:** pin the cluster addon versions with addon_versions ([#581](#581)) ([ee87a05](ee87a05)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
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.
El problema
El módulo instala cinco addons y los deja con el default de upstream,
most_recent = true:Con eso, cada
planconsulta a EKS cuál es la versión más nueva y la compara con la instalada. El resultado es que una instalación que no tocó nada de su EKS ve drift apenas AWS publica un build. Nos pasó tres veces en la misma semana en una instalación real:Ese drift aparece mezclado con cambios de otro módulo, y quien está aplicando otra cosa tiene que decidir en el momento si se lleva puesto un upgrade del CNI del cluster. Es justo lo que
VERSIONS.mdpide evitar: ahí la política dice pinear charts, imágenes y refs, y los addons eran lo único que quedaba resuelto como "lo último que haya".Qué cambia
Un input nuevo,
addon_versions, un mapa por nombre de addon:Cada addon pasa su valor con
lookup(var.addon_versions, "<nombre>", null). Upstream resuelvecoalesce(addon_version, data.aws_eks_addon_version.this[...].version), así que el pin gana sobre la consulta de "más reciente", y un addon que no esté en el mapa sigue exactamente como hoy.Una
validationrechaza nombres que el módulo no instala, para que un typo (vpc-cni-typo) falle en el plan en vez de quedar sin efecto y sin aviso.Compatibilidad
El default es
{}: sin pasar nada, los values renderizados son idénticos a los de hoy. Ninguna instalación cambia al bumpear la versión.Verificado contra una instalación real (EKS, cluster con los cinco addons)
Apuntando el
module "eks"a este branch:addon_versions→No changes. El default no altera nada.No changes.vpc-cnipineado a una versión anterior a la instalada → el plan propone el downgrade, que es la prueba de que el pin gana sobremost_recent:Error: Invalid value for variableen el plan.tofu validateytofu fmt -checkOK.Cómo leer los valores actuales para pinear
La contrapartida esperada: con los addons pineados, los upgrades pasan a ser una decisión explícita en el tfvars, incluidos los parches de seguridad del CNI. Por eso el default no pinea nada y cada instalación elige.
🤖 Generated with Claude Code