prole/deploy/opentofu/k3s/manifests/prole/db-manager-deployment.yaml
chrisfu b03efa8f69 Kong API gateway, docker-import preload, OpenTofu graceful fallback, milestone fix
Kong API Gateway (replacing prole nginx):
- Add etc/init_kong.sh provisioning script (DB-less mode, prole-db namespace)
- Add kong-deployment.yaml and kong-service.yaml manifests
- Rewire ingress rules (svc/git/api.prole.org) to prole-db-kong:8000
- Update kustomization.yaml to reference kong manifests

PostgREST & DB Manager in prole-db namespace:
- Add etc/init_postgrest.sh and etc/init_db_manager.sh scripts
- Add postgrest/db-manager deployment and service manifests
- Add src/db-manager/ Node.js REST endpoint for backup triggers
- Default NAMESPACE changed to prole-db in both scripts

Docker image pre-load from PROLE_DATA/docker-import:
- Add _preload_docker_images() to init_common_services.sh
- Scan for .tar files exported by final_deployment.sh
- Import via k3d image import (k3d) or ctr (k3s) before deployments
- Increase rollout timeouts to 300s (configurable via ROLLOUT_TIMEOUT) in init_openbao.sh, init_opentofu.sh, init_garage_store.sh, init_registry.sh

OpenTofu password resolution fix:
- Add Kubernetes secret fallback in resolve_admin_password()
- Change hard exit 1 to graceful return 1 with warning
- Wrap call in if-guard so set -e doesn't abort the script chain

Milestone fix (init scripts not running):
- Add init_kong.sh, init_postgrest.sh, init_db_manager.sh to InitializationScriptsMilestone.execute() script list and arg branches
- Previously only actions.py had these; milestones.py was missing them

Installer integration:
- Add Kong/PostgREST/DB Manager to silent installer _step_init_scripts
- Add corresponding tabs and execution blocks in UI services.py
2026-02-22 00:57:49 -08:00

90 lines
2.1 KiB
YAML

apiVersion: apps/v1
kind: Deployment
metadata:
name: prole-db-manager
labels:
app: prole-db-manager
spec:
replicas: 1
selector:
matchLabels:
app: prole-db-manager
template:
metadata:
labels:
app: prole-db-manager
spec:
serviceAccountName: prole-db-manager
containers:
- name: db-manager
image: prole-db-manager:latest
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
name: http
env:
- name: PORT
value: "80"
- name: NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: BARMAN_PLUGIN_NAME
value: "barman-cloud.cloudnative-pg.io"
- name: BARMAN_OBJECT_NAME
value: "prole-db-barman-objectstore"
readinessProbe:
httpGet:
path: /health
port: http
initialDelaySeconds: 3
periodSeconds: 10
livenessProbe:
httpGet:
path: /health
port: http
initialDelaySeconds: 5
periodSeconds: 30
resources:
requests:
cpu: 50m
memory: 64Mi
limits:
cpu: 200m
memory: 128Mi
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: prole-db-manager
labels:
app: prole-db-manager
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: prole-db-manager
labels:
app: prole-db-manager
rules:
- apiGroups: ["postgresql.cnpg.io"]
resources: ["backups"]
verbs: ["create", "get", "list", "watch"]
- apiGroups: ["postgresql.cnpg.io"]
resources: ["clusters"]
verbs: ["get", "list"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: prole-db-manager
labels:
app: prole-db-manager
subjects:
- kind: ServiceAccount
name: prole-db-manager
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: prole-db-manager