vaultwarden y gitea pasan a ArgoCD

Los dos estaban en git sin ninguna Application que los gestionara: editar el
repo no desplegaba nada. De ahi que un pin de imagen de abril nunca llegara
al cluster y gitea se subiera solo de 1.25.5 a 1.27.0, y que vaultwarden se
parcheara con kubectl replace. A partir de ahora manda git.

Verificado en frio antes de adoptar: los 17 manifiestos coincidian campo a
campo con lo vivo, asi que la adopcion no revierte nada. Con
ServerSideApply/ServerSideDiff, igual que el kube-prometheus-stack: estos
objetos arrastran un last-applied viejo y el merge clasico intentaria borrar
lo que ese blob declaraba y git ya no; en un PVC eso es un campo inmutable y
el sync falla.

Limpieza que iba en el mismo paquete:

- Fuera la basura de export de 5 ficheros: last-applied-configuration, la
  revision del Deployment y las anotaciones que pone el provisionador en los
  PVC (bind-completed, selected-node...). Es lo que dejaba los recursos
  OutOfSync para siempre. Verificado que el resto del manifiesto no cambia.
- Fuera serviceaccount-default y kube-root-ca.crt de los dos: los crea k8s
  solo en cada namespace.
- RESCATADO configmap-gitea-runner-config: config del act_runner escrita a
  mano en abril, montada por el runner y que NO estaba en git. Reconstruir
  gitea desde el repo levantaba el runner sin configuracion.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-25 20:42:38 +00:00
co-authored by Claude Opus 5
parent 9719a6179a
commit 4adbcbd4af
8 changed files with 101 additions and 29 deletions
+41
View File
@@ -0,0 +1,41 @@
# gitea pasa a ArgoCD el 2026-07-25.
#
# Hasta hoy este directorio estaba en git SIN ninguna Application que lo
# gestionara: editar aquí no desplegaba nada y había que acordarse de hacer
# kubectl apply. Asi se colo que gitea subiera solo de 1.25.5 a 1.27.0 con un
# pin de abril en git que nunca llego al cluster.
#
# Adoptado en frio y verificado ANTES de darle auto-sync: git y cluster
# coincidian campo a campo en los 17 manifiestos de vaultwarden+gitea, asi
# que esto no revierte nada.
#
# ServerSideApply/ServerSideDiff igual que en el kube-prometheus-stack: estos
# objetos los creo un kubectl apply a mano y arrastran un last-applied viejo.
# Con el merge clasico ArgoCD borraria lo que ese blob declaraba y git ya no
# (anotaciones del provisionador en los PVC, revision del Deployment), y en un
# PVC eso es un campo inmutable = sync fallido. Asi solo toca lo que declara.
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: gitea
namespace: argocd
annotations:
notifications.argoproj.io/subscribe.on-sync-failed.telegram: "5138407666"
notifications.argoproj.io/subscribe.on-health-degraded.telegram: "5138407666"
argocd.argoproj.io/compare-options: ServerSideDiff=true
spec:
project: default
source:
repoURL: https://git.chemavx.xyz/chemavx/k8s-manifests
targetRevision: HEAD
path: gitea
destination:
server: https://kubernetes.default.svc
namespace: gitea
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
- ServerSideApply=true
+15
View File
@@ -0,0 +1,15 @@
# Config del act_runner. Estaba SOLO en el cluster desde el 2026-04-13:
# escrita a mano, montada por deployment-gitea-runner.yaml y ausente de git.
# Rescatada el 2026-07-25 al meter gitea bajo ArgoCD — sin esto, reconstruir
# el namespace desde el repo levantaba el runner sin configuración.
apiVersion: v1
kind: ConfigMap
metadata:
name: gitea-runner-config
namespace: gitea
data:
config.yaml: "log:\n level: info\nrunner:\n file: /data/.runner\n capacity: 1\n\
\ insecure: true\n fetch_timeout: 5s\n fetch_interval: 2s\n envs:\n DOCKER_HOST:\
\ tcp://localhost:2375\n labels:\n - \"ubuntu-latest:docker://catthehacker/ubuntu:act-22.04\"\
\n - \"ubuntu-22.04:docker://catthehacker/ubuntu:act-22.04\"\ncontainer:\n\
\ network: \"host\"\ncache:\n enabled: false\n"
-3
View File
@@ -3,9 +3,6 @@ kind: Ingress
metadata:
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
kubectl.kubernetes.io/last-applied-configuration: '{"apiVersion":"networking.k8s.io/v1","kind":"Ingress","metadata":{"annotations":{"cert-manager.io/cluster-issuer":"letsencrypt-prod","traefik.ingress.kubernetes.io/router.entrypoints":"websecure"},"name":"gitea","namespace":"gitea"},"spec":{"ingressClassName":"traefik","rules":[{"host":"gitea.chemavx.xyz","http":{"paths":[{"backend":{"service":{"name":"gitea","port":{"number":3000}}},"path":"/","pathType":"Prefix"}]}}],"tls":[{"hosts":["gitea.chemavx.xyz"],"secretName":"gitea-tls"}]}}
'
traefik.ingress.kubernetes.io/router.entrypoints: websecure
name: gitea
namespace: gitea
-9
View File
@@ -1,15 +1,6 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: '{"apiVersion":"v1","kind":"PersistentVolumeClaim","metadata":{"annotations":{},"name":"gitea-data-pvc","namespace":"gitea"},"spec":{"accessModes":["ReadWriteOnce"],"resources":{"requests":{"storage":"20Gi"}},"storageClassName":"local-path"}}
'
pv.kubernetes.io/bind-completed: 'yes'
pv.kubernetes.io/bound-by-controller: 'yes'
volume.beta.kubernetes.io/storage-provisioner: rancher.io/local-path
volume.kubernetes.io/selected-node: chemavx-k8
volume.kubernetes.io/storage-provisioner: rancher.io/local-path
name: gitea-data-pvc
namespace: gitea
spec: