155 lines
5.0 KiB
YAML
155 lines
5.0 KiB
YAML
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: duckdb-backend
|
|
namespace: family
|
|
labels:
|
|
app.kubernetes.io/name: duckdb-backend
|
|
app.kubernetes.io/part-of: family-portal
|
|
spec:
|
|
replicas: 1
|
|
strategy:
|
|
type: Recreate
|
|
selector:
|
|
matchLabels:
|
|
app.kubernetes.io/name: duckdb-backend
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app.kubernetes.io/name: duckdb-backend
|
|
app.kubernetes.io/part-of: family-portal
|
|
spec:
|
|
imagePullSecrets:
|
|
- name: registry-haumdaucher-de
|
|
initContainers:
|
|
- name: git-init
|
|
image: alpine/git:latest
|
|
command: ["/bin/sh", "-c"]
|
|
args:
|
|
- |
|
|
set -e
|
|
export HOME=/tmp
|
|
cd /wiki
|
|
if [ ! -d ".git" ]; then
|
|
echo "Initializing wiki repository on dedicated PVC..."
|
|
REPO_URL="https://${GIT_SYNC_USERNAME}:${GIT_SYNC_PASSWORD}@git.moritzgraf.de/moritz/knowledge-wiki.git"
|
|
git config --global http.sslVerify false
|
|
git config --global --add safe.directory /wiki
|
|
git config --global --add safe.directory '*'
|
|
git init
|
|
git remote add origin "$REPO_URL" || git remote set-url origin "$REPO_URL"
|
|
git fetch origin main
|
|
git checkout -f -B main origin/main
|
|
echo "Clone completed successfully."
|
|
else
|
|
echo "Repository already initialized on PVC, updating..."
|
|
REPO_URL="https://${GIT_SYNC_USERNAME}:${GIT_SYNC_PASSWORD}@git.moritzgraf.de/moritz/knowledge-wiki.git"
|
|
git config --global http.sslVerify false
|
|
git config --global --add safe.directory /wiki
|
|
git config --global --add safe.directory '*'
|
|
git remote set-url origin "$REPO_URL"
|
|
if [ -f .git/shallow ]; then
|
|
echo "Unshallowing existing repository..."
|
|
git fetch --unshallow origin main || git fetch origin main
|
|
else
|
|
git fetch origin main
|
|
fi
|
|
git rebase --abort 2>/dev/null || true
|
|
git merge --abort 2>/dev/null || true
|
|
git reset --hard origin/main
|
|
git clean -fd
|
|
fi
|
|
env:
|
|
- name: GIT_SYNC_USERNAME
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: wiki-git-credentials
|
|
key: git-sync-username
|
|
- name: GIT_SYNC_PASSWORD
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: wiki-git-credentials
|
|
key: wiki-sync-token
|
|
volumeMounts:
|
|
- name: duckdb-wiki-data
|
|
mountPath: /wiki
|
|
containers:
|
|
- name: duckdb-backend
|
|
image: registry.haumdaucher.de/family/duckdb-backend:latest
|
|
imagePullPolicy: Always
|
|
env:
|
|
- name: DATA_DIR
|
|
value: "/wiki/data"
|
|
- name: DUCKDB_DATA_DIR
|
|
value: "/wiki/data"
|
|
- name: WIKI_DIR
|
|
value: "/wiki"
|
|
- name: GIT_REPO_DIR
|
|
value: "/wiki"
|
|
- name: GIT_REPO_URL
|
|
value: "https://git.moritzgraf.de/moritz/knowledge-wiki.git"
|
|
- name: GIT_REMOTE_URL
|
|
value: "https://git.moritzgraf.de/moritz/knowledge-wiki.git"
|
|
- name: GIT_SYNC_USERNAME
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: wiki-git-credentials
|
|
key: git-sync-username
|
|
- name: GIT_SYNC_PASSWORD
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: wiki-git-credentials
|
|
key: wiki-sync-token
|
|
- name: GIT_SYNC_INTERVAL_SECONDS
|
|
value: "60"
|
|
- name: PORT
|
|
value: "8000"
|
|
- name: HOST
|
|
value: "0.0.0.0"
|
|
ports:
|
|
- name: http
|
|
containerPort: 8000
|
|
volumeMounts:
|
|
- name: duckdb-wiki-data
|
|
mountPath: /wiki
|
|
resources:
|
|
requests:
|
|
cpu: 50m
|
|
memory: 128Mi
|
|
limits:
|
|
cpu: 1000m
|
|
memory: 1Gi
|
|
readinessProbe:
|
|
httpGet:
|
|
path: /duckdb-api/v1/healthz
|
|
port: 8000
|
|
initialDelaySeconds: 5
|
|
periodSeconds: 10
|
|
livenessProbe:
|
|
httpGet:
|
|
path: /duckdb-api/v1/healthz
|
|
port: 8000
|
|
initialDelaySeconds: 15
|
|
periodSeconds: 20
|
|
volumes:
|
|
- name: duckdb-wiki-data
|
|
persistentVolumeClaim:
|
|
claimName: duckdb-wiki-data
|
|
---
|
|
apiVersion: v1
|
|
kind: Service
|
|
metadata:
|
|
name: duckdb-backend
|
|
namespace: family
|
|
labels:
|
|
app.kubernetes.io/name: duckdb-backend
|
|
app.kubernetes.io/part-of: family-portal
|
|
spec:
|
|
type: ClusterIP
|
|
ports:
|
|
- port: 8000
|
|
targetPort: 8000
|
|
name: http
|
|
selector:
|
|
app.kubernetes.io/name: duckdb-backend
|