feat(woodpecker): cut server over to wp-pg postgres (#295, #324) #356

Merged
k.renner merged 1 commits from claude-bot/woodpecker-pg-cutover into master 2026-07-22 14:02:19 +00:00
+20 -3
View File
@@ -12,7 +12,10 @@ metadata:
secret.reloader.stakater.com/reload: woodpecker-secret
spec:
serviceName: woodpecker
replicas: 1 # SQLite => single writer.
# Backed by the wp-pg CNPG Postgres cluster (was sqlite-on-PVC, #295/#324).
# Kept at 1 replica: woodpecker-server isn't clustered, and the DB is now
# external so this is just the single control-plane instance.
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: woodpecker
@@ -60,10 +63,24 @@ spec:
# (retired LXCs tracked in #199) has been superseded.
- name: WOODPECKER_PLUGINS_PRIVILEGED
value: woodpeckerci/plugin-docker-buildx
# Postgres on the wp-pg CNPG cluster (creds from the CNPG-generated
# wp-pg-app secret). lib/pq keyword DSN — robust to any special
# chars in the generated password (unlike a URL DSN). WP_DB_* must
# precede the DATASOURCE for k8s $(VAR) interpolation to resolve.
- name: WP_DB_USER
valueFrom:
secretKeyRef:
name: wp-pg-app
key: username
- name: WP_DB_PASS
valueFrom:
secretKeyRef:
name: wp-pg-app
key: password
- name: WOODPECKER_DATABASE_DRIVER
value: sqlite3
value: postgres
- name: WOODPECKER_DATABASE_DATASOURCE
value: "/var/lib/woodpecker/woodpecker.sqlite?_journal=WAL&_busy_timeout=10000&_synchronous=NORMAL"
value: "host=wp-pg-rw.apps.svc.cluster.local port=5432 user=$(WP_DB_USER) password=$(WP_DB_PASS) dbname=woodpecker sslmode=require"
# AGENT_SECRET + GITEA_CLIENT + GITEA_SECRET come from the SOPS secret.
envFrom:
- secretRef: