remata la auditoría: exports que mentían y restos de polymarket

Tres ficheros describían algo distinto de lo desplegado, y aplicarlos rompía
cosas. Ahora coinciden campo por campo (verificado con kubectl diff vacío).

argocd/deployment-argocd-redis.yaml decía `resources: {}` y el nodeSelector por
defecto. Lo vivo lleva el anclaje a chemavx-k8 y límites de 200m/128Mi, sin los
cuales este pod muere con Exit Code 255 tras días de uptime. El arreglo sólo
constaba en argocd-patches/redis-patch.yaml, así que el fichero que uno
aplicaría primero era justo el que deshacía el arreglo. Queda el comentario
explicando por qué el anclaje está ahí, y el parche lleva cabecera diciendo que
es parcial y que no debe compararse con el cluster.

gitea/configmap-daemon-json.yaml le faltaban dos insecure-registries que sí
están vivos (git.chemavx.xyz y gitea.gitea.svc.cluster.local:3000). Comprobado
que lo vivo es lo correcto: el buildkitd.toml declara ese registro como
http/insecure y los workflows de CI empujan ahí. Aplicar el fichero viejo habría
dejado a la CI sin poder subir imágenes.

gitea/configmap-buildkitd-config.yaml es nuevo: ese ConfigMap llevaba 90 días
vivo sin manifiesto ninguno.

Restos de polymarket, decomisado el 2026-07-17: fuera su Namespace de
cluster-wide/namespaces.yaml (11 quedan) y borrado el directorio
polymarket-bot/, que resultó no estar en git siquiera — sus dos ficheros los
descarta .gitignore por autogenerados, así que eran basura local del export de
abril. De paso, namespaces.yaml pierde las anotaciones de último apply y gana
una cabecera: no es la lista completa del cluster (16 apps de ArgoCD crean su
propio namespace) y aplicarlo no lo reconstruye.

La auditoría baja de 26 hallazgos a 13, y ninguno de los 13 es deriva real:
8 son reddit-intel, inactivo a propósito (ver reddit-intel/PROMOTION.md), 3 son
el fichero de parche parcial, uno es un `group: ''` equivalente a estar ausente
y el último era una anotación del controlador, ya fuera del export.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-22 09:24:31 +00:00
co-authored by Claude Opus 4.8
parent b8b53467be
commit 55d43f1565
6 changed files with 45 additions and 71 deletions
+8
View File
@@ -1,3 +1,11 @@
# PARCHE PARCIAL, no un manifiesto completo: sólo lleva los campos que hay que
# volver a poner encima de los manifiestos oficiales de ArgoCD tras cada
# actualización. El anclaje a chemavx-k8 y los límites evitan que este pod
# muera con Exit Code 255 tras varios días de uptime.
#
# El estado completo y real está en argocd/deployment-argocd-redis.yaml.
# No compares este fichero con el cluster: le faltan a propósito el initContainer
# secret-init y la env REDIS_PASSWORD, que vienen de los manifiestos de ArgoCD.
apiVersion: apps/v1 apiVersion: apps/v1
kind: Deployment kind: Deployment
metadata: metadata:
+13 -9
View File
@@ -1,12 +1,6 @@
apiVersion: apps/v1 apiVersion: apps/v1
kind: Deployment kind: Deployment
metadata: metadata:
annotations:
deployment.kubernetes.io/revision: '1'
kubectl.kubernetes.io/last-applied-configuration: '{"apiVersion":"apps/v1","kind":"Deployment","metadata":{"annotations":{},"labels":{"app.kubernetes.io/component":"redis","app.kubernetes.io/name":"argocd-redis","app.kubernetes.io/part-of":"argocd"},"name":"argocd-redis","namespace":"argocd"},"spec":{"selector":{"matchLabels":{"app.kubernetes.io/name":"argocd-redis"}},"template":{"metadata":{"labels":{"app.kubernetes.io/name":"argocd-redis"}},"spec":{"affinity":{"podAntiAffinity":{"preferredDuringSchedulingIgnoredDuringExecution":[{"podAffinityTerm":{"labelSelector":{"matchLabels":{"app.kubernetes.io/name":"argocd-redis"}},"topologyKey":"kubernetes.io/hostname"},"weight":100},{"podAffinityTerm":{"labelSelector":{"matchLabels":{"app.kubernetes.io/part-of":"argocd"}},"topologyKey":"kubernetes.io/hostname"},"weight":5}]}},"containers":[{"args":["--save","","--appendonly","no","--requirepass
$(REDIS_PASSWORD)"],"env":[{"name":"REDIS_PASSWORD","valueFrom":{"secretKeyRef":{"key":"auth","name":"argocd-redis"}}}],"image":"public.ecr.aws/docker/library/redis:8.2.3-alpine","imagePullPolicy":"Always","name":"redis","ports":[{"containerPort":6379}],"securityContext":{"allowPrivilegeEscalation":false,"capabilities":{"drop":["ALL"]},"readOnlyRootFilesystem":true}}],"initContainers":[{"command":["argocd","admin","redis-initial-password"],"image":"quay.io/argoproj/argocd:v3.3.6","imagePullPolicy":"IfNotPresent","name":"secret-init","securityContext":{"allowPrivilegeEscalation":false,"capabilities":{"drop":["ALL"]},"readOnlyRootFilesystem":true,"runAsNonRoot":true,"seccompProfile":{"type":"RuntimeDefault"}}}],"nodeSelector":{"kubernetes.io/os":"linux"},"securityContext":{"runAsNonRoot":true,"runAsUser":999,"seccompProfile":{"type":"RuntimeDefault"}},"serviceAccountName":"argocd-redis"}}}}
'
labels: labels:
app.kubernetes.io/component: redis app.kubernetes.io/component: redis
app.kubernetes.io/name: argocd-redis app.kubernetes.io/name: argocd-redis
@@ -64,7 +58,13 @@ spec:
ports: ports:
- containerPort: 6379 - containerPort: 6379
protocol: TCP protocol: TCP
resources: {} resources:
limits:
cpu: 200m
memory: 128Mi
requests:
cpu: 50m
memory: 64Mi
securityContext: securityContext:
allowPrivilegeEscalation: false allowPrivilegeEscalation: false
capabilities: capabilities:
@@ -94,8 +94,13 @@ spec:
type: RuntimeDefault type: RuntimeDefault
terminationMessagePath: /dev/termination-log terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File terminationMessagePolicy: File
# NO es el nodeSelector por defecto de ArgoCD. Anclado a mano al
# control-plane, junto con los límites de recursos del contenedor:
# sin ello este pod muere con Exit Code 255 tras varios días de
# uptime. Ver argocd-patches/redis-patch.yaml, que documenta el
# parche para volver a aplicarlo tras actualizar ArgoCD.
nodeSelector: nodeSelector:
kubernetes.io/os: linux kubernetes.io/hostname: chemavx-k8
restartPolicy: Always restartPolicy: Always
schedulerName: default-scheduler schedulerName: default-scheduler
securityContext: securityContext:
@@ -106,4 +111,3 @@ spec:
serviceAccount: argocd-redis serviceAccount: argocd-redis
serviceAccountName: argocd-redis serviceAccountName: argocd-redis
terminationGracePeriodSeconds: 30 terminationGracePeriodSeconds: 30
+8 -54
View File
@@ -1,10 +1,14 @@
# Namespaces creados a mano. NO es la lista completa del cluster: los de las
# apps de ArgoCD los crea el propio ArgoCD (16 llevan CreateNamespace=true) y
# no aparecen aquí. Aplicar este fichero no reconstruye el cluster.
#
# 2026-07-22: fuera polymarket-bot, decomisado el 2026-07-17. Ojo: backup-system
# y n8n siguen listados aunque ya son apps de ArgoCD — quedan de cuando se
# gestionaban a mano; son inofensivos porque el namespace ya existe.
---
apiVersion: v1 apiVersion: v1
kind: Namespace kind: Namespace
metadata: metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: '{"apiVersion":"v1","kind":"Namespace","metadata":{"annotations":{},"name":"argocd"},"spec":{},"status":{}}
'
labels: labels:
kubernetes.io/metadata.name: argocd kubernetes.io/metadata.name: argocd
name: argocd name: argocd
@@ -15,10 +19,6 @@ spec:
apiVersion: v1 apiVersion: v1
kind: Namespace kind: Namespace
metadata: metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: '{"apiVersion":"v1","kind":"Namespace","metadata":{"annotations":{},"name":"authentik"},"spec":{},"status":{}}
'
labels: labels:
kubernetes.io/metadata.name: authentik kubernetes.io/metadata.name: authentik
name: authentik name: authentik
@@ -29,10 +29,6 @@ spec:
apiVersion: v1 apiVersion: v1
kind: Namespace kind: Namespace
metadata: metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: '{"apiVersion":"v1","kind":"Namespace","metadata":{"annotations":{},"name":"backup-system"},"spec":{},"status":{}}
'
labels: labels:
kubernetes.io/metadata.name: backup-system kubernetes.io/metadata.name: backup-system
name: backup-system name: backup-system
@@ -43,10 +39,6 @@ spec:
apiVersion: v1 apiVersion: v1
kind: Namespace kind: Namespace
metadata: metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: '{"apiVersion":"v1","kind":"Namespace","metadata":{"annotations":{},"name":"cert-manager"},"spec":{},"status":{}}
'
labels: labels:
kubernetes.io/metadata.name: cert-manager kubernetes.io/metadata.name: cert-manager
name: cert-manager name: cert-manager
@@ -57,10 +49,6 @@ spec:
apiVersion: v1 apiVersion: v1
kind: Namespace kind: Namespace
metadata: metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: '{"apiVersion":"v1","kind":"Namespace","metadata":{"annotations":{},"name":"cloudflare-ddns"},"spec":{},"status":{}}
'
labels: labels:
kubernetes.io/metadata.name: cloudflare-ddns kubernetes.io/metadata.name: cloudflare-ddns
name: cloudflare-ddns name: cloudflare-ddns
@@ -81,10 +69,6 @@ spec:
apiVersion: v1 apiVersion: v1
kind: Namespace kind: Namespace
metadata: metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: '{"apiVersion":"v1","kind":"Namespace","metadata":{"annotations":{},"name":"gitea"},"spec":{},"status":{}}
'
labels: labels:
kubernetes.io/metadata.name: gitea kubernetes.io/metadata.name: gitea
name: gitea name: gitea
@@ -95,10 +79,6 @@ spec:
apiVersion: v1 apiVersion: v1
kind: Namespace kind: Namespace
metadata: metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: '{"apiVersion":"v1","kind":"Namespace","metadata":{"annotations":{},"name":"homarr"},"spec":{},"status":{}}
'
labels: labels:
kubernetes.io/metadata.name: homarr kubernetes.io/metadata.name: homarr
name: homarr name: homarr
@@ -109,10 +89,6 @@ spec:
apiVersion: v1 apiVersion: v1
kind: Namespace kind: Namespace
metadata: metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: '{"apiVersion":"v1","kind":"Namespace","metadata":{"annotations":{},"name":"monitoring"},"spec":{},"status":{}}
'
labels: labels:
kubernetes.io/metadata.name: monitoring kubernetes.io/metadata.name: monitoring
name: monitoring name: monitoring
@@ -123,10 +99,6 @@ spec:
apiVersion: v1 apiVersion: v1
kind: Namespace kind: Namespace
metadata: metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: '{"apiVersion":"v1","kind":"Namespace","metadata":{"annotations":{},"name":"n8n"},"spec":{},"status":{}}
'
labels: labels:
kubernetes.io/metadata.name: n8n kubernetes.io/metadata.name: n8n
name: n8n name: n8n
@@ -137,24 +109,6 @@ spec:
apiVersion: v1 apiVersion: v1
kind: Namespace kind: Namespace
metadata: metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: '{"apiVersion":"v1","kind":"Namespace","metadata":{"annotations":{},"name":"polymarket-bot"},"spec":{},"status":{}}
'
labels:
kubernetes.io/metadata.name: polymarket-bot
name: polymarket-bot
spec:
finalizers:
- kubernetes
---
apiVersion: v1
kind: Namespace
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: '{"apiVersion":"v1","kind":"Namespace","metadata":{"annotations":{},"name":"vaultwarden"},"spec":{},"status":{}}
'
labels: labels:
kubernetes.io/metadata.name: vaultwarden kubernetes.io/metadata.name: vaultwarden
name: vaultwarden name: vaultwarden
+14
View File
@@ -0,0 +1,14 @@
apiVersion: v1
data:
buildkitd.toml: |
[registry."registry-cache.registry-cache.svc.cluster.local:5000"]
http = true
insecure = true
[registry."gitea.gitea.svc.cluster.local:3000"]
http = true
insecure = true
kind: ConfigMap
metadata:
name: buildkitd-config
namespace: gitea
+2 -6
View File
@@ -1,11 +1,7 @@
apiVersion: v1 apiVersion: v1
data:
daemon.json: '{"registry-mirrors":["http://registry-cache.registry-cache.svc.cluster.local:5000"],"insecure-registries":["registry-cache.registry-cache.svc.cluster.local:5000","git.chemavx.xyz","gitea.gitea.svc.cluster.local:3000"]}'
kind: ConfigMap kind: ConfigMap
metadata: metadata:
name: docker-daemon-config name: docker-daemon-config
namespace: gitea namespace: gitea
data:
daemon.json: |
{
"registry-mirrors": ["http://registry-cache.registry-cache.svc.cluster.local:5000"],
"insecure-registries": ["registry-cache.registry-cache.svc.cluster.local:5000"]
}
@@ -2,7 +2,6 @@ apiVersion: apps/v1
kind: DaemonSet kind: DaemonSet
metadata: metadata:
annotations: annotations:
deprecated.daemonset.template.generation: '1'
meta.helm.sh/release-name: kube-prometheus-stack meta.helm.sh/release-name: kube-prometheus-stack
meta.helm.sh/release-namespace: monitoring meta.helm.sh/release-namespace: monitoring
labels: labels:
@@ -140,4 +139,3 @@ spec:
maxSurge: 0 maxSurge: 0
maxUnavailable: 1 maxUnavailable: 1
type: RollingUpdate type: RollingUpdate