gen_system: noms de ressources dupliqués quand le nom upstream contient déjà le nom du package #6
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Contexte
Pendant le scaffolding de
core/reloader(kustomize de stakater/reloader), les noms générés contenaient le nom du package en double, par exemple :{{instance.appslug}}-{{instance.appslug}}→ rendureloader-reloader{{instance.namespace}}-{{instance.appslug}}-{{instance.namespace}}-{{instance.appslug}}-role[-binding]→ rendu
arvida-core-reloader-arvida-core-reloader-role[-binding]Cause
Dans
gen_package.rhai::gen_system, le renommage utilise un remplacement de chaîne littéral :Le manifeste upstream de reloader nomme déjà ses ressources avec un préfixe (
namePrefix: reloader-côté kustomize), donnant des noms tels quereloader-reloaderoureloader-reloader-role.String::replaceremplace toutes les occurrences dename("reloader") dans la chaîne, donc :reloader-reloader→{{instance.appslug}}-{{instance.appslug}}reloader-reloader-role→{{instance.namespace}}-{{instance.appslug}}-{{instance.namespace}}-{{instance.appslug}}-roleLe résultat reste fonctionnellement correct (toutes les références internes utilisent la même substitution, donc cohérentes entre elles), mais produit des noms anormalement longs et redondants — peu lisibles et qui peuvent dépasser les limites de longueur de nom Kubernetes (63 caractères pour les labels, 253 pour les noms d'objets) sur des packages dont le nom est plus long que "reloader".
Piste de correction
Remplacer uniquement la première occurrence du nom du package (
replaceavec un compteur, ou une regex ancrée en début de chaîne^${name}(-|$)), au lieu d'un remplacement global — ce qui correspondrait au pattern habituel{{package-name}}-{{resource-suffix}}utilisé par la plupart des charts/kustomizations.Annexe
L'annotation contenant
helm.shdevrait également être supprimée par défaut lors du scaffolding.Corrigé dans https://github.com/sebt3/vynil/pull/226
replace_first()dansgen_package.rhai: remplace uniquement la première occurrence du nom du package dansmetadata.name, ce qui évite le doublement de{{instance.appslug}}quand l'upstream porte déjà le nom en préfixe.clean_metadata/clean_annotations: suppression de toutes les annotations dont la clé contienthelm.sh(filtre dynamique), y comprishelm.sh/resource-policy.