Files
k8s-manifests/gitea/statefulset-gitea.yaml
T
chemavxandClaude Opus 4.8 b8b53467be fija las imágenes flotantes de los namespaces manuales
El commit 22ae5d7 (15-abr) fijó estos tags EN GIT pero nunca se aplicó al
cluster: estos namespaces no están en ArgoCD, así que un cambio en git no llega
solo. Tres meses después git decía 1.25.5 y gitea corría 1.27.0, subido en algún
reinicio sin que nadie lo decidiera. Ahora se fija a los dos lados.

  gitea            gitea/gitea:latest        -> gitea/gitea:1.27.0
  gitea (init)     busybox                   -> busybox:1.38.0
  gitea-runner     gitea/act_runner:latest   -> gitea/act_runner:0.6.1
  gitea-runner     docker:24-dind            -> docker:24.0.9-dind
  authentik-redis  redis:alpine              -> redis:8.8.0-alpine
  uptime-kuma      louislam/uptime-kuma:1    -> louislam/uptime-kuma:1.23.17
  homarr           homarr:latest             -> homarr@sha256:80ee593c...

Los seis primeros se fijan a la MISMA imagen que ya corría: verificado
comparando el repoDigest del tag flotante con el del tag candidato, así que el
reinicio no cambió de versión. Homarr va por digest porque su "latest" es una
build de la rama main (org.opencontainers.image.version=main): no existe un tag
de release que describa lo que corre. Moverlo a una release es otra decisión.

Trampa que casi me come, anotada para la próxima: el imageID de un pod NO
siempre es el digest del registro. Si viene como "repo@sha256:..." lo es; si es
un "sha256:..." pelado es el id local de containerd y NO se puede descargar.
Fijar uptime-kuma a ese id dio ImagePullBackOff; el pod viejo aguantó sirviendo
(maxUnavailable 0 para 1 réplica) y se revirtió sin corte. La comparación buena
es repoDigest contra repoDigest.

De paso, al regenerar gitea-runner desde lo vivo quedan documentados el volumen
buildkitd-config y su montaje, que existían en el cluster y no en git.

Verificado tras cada cambio: rollout completo, versión de la app dentro del pod,
y los cinco servicios respondiendo desde fuera (git 200, home 200, status/auth/
grafana 302 por Authentik). El runner se ha vuelto a registrar en Gitea. Sigue
sin haber pods fuera de Running y las 18 apps de ArgoCD Synced+Healthy.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-22 09:11:10 +00:00

93 lines
2.4 KiB
YAML

apiVersion: apps/v1
kind: StatefulSet
metadata:
name: gitea
namespace: gitea
spec:
persistentVolumeClaimRetentionPolicy:
whenDeleted: Retain
whenScaled: Retain
podManagementPolicy: OrderedReady
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: gitea
serviceName: gitea
template:
metadata:
annotations:
kubectl.kubernetes.io/restartedAt: '2026-04-13T16:09:54Z'
labels:
app: gitea
spec:
containers:
- env:
- name: GITEA__database__DB_TYPE
value: sqlite3
- name: GITEA__database__PATH
value: /data/gitea/gitea.db
- name: GITEA__server__DOMAIN
value: gitea.chemavx.xyz
- name: GITEA__server__ROOT_URL
value: https://git.chemavx.xyz
- name: GITEA__server__SSH_PORT
value: '22'
- name: GITEA__server__SSH_DOMAIN
value: gitea.chemavx.xyz
- name: GITEA__security__INSTALL_LOCK
value: 'true'
- name: GITEA__service__DISABLE_REGISTRATION
value: 'false'
- name: USER_UID
value: '1000'
- name: USER_GID
value: '1000'
image: gitea/gitea:1.27.0
imagePullPolicy: Always
name: gitea
ports:
- containerPort: 3000
protocol: TCP
- containerPort: 22
protocol: TCP
resources:
limits:
cpu: 300m
memory: 512Mi
requests:
cpu: 50m
memory: 128Mi
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /data
name: data
dnsPolicy: ClusterFirst
initContainers:
- command:
- sh
- -c
- mkdir -p /data/gitea/conf && chown -R 1000:1000 /data
image: busybox:1.38.0
imagePullPolicy: Always
name: init-dirs
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /data
name: data
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
volumes:
- name: data
persistentVolumeClaim:
claimName: gitea-data-pvc
updateStrategy:
rollingUpdate:
partition: 0
type: RollingUpdate