titan-iac/services/planka/deployment.yaml

96 lines
2.4 KiB
YAML
Raw Normal View History

2026-01-12 21:22:54 -03:00
# services/planka/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: planka
namespace: planka
labels:
app: planka
spec:
replicas: 1
selector:
matchLabels:
app: planka
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 0
maxUnavailable: 1
template:
metadata:
labels:
app: planka
spec:
nodeSelector:
node-role.kubernetes.io/worker: "true"
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: hardware
operator: In
values: ["rpi4", "rpi5"]
securityContext:
runAsUser: 1000
runAsGroup: 1000
fsGroup: 1000
fsGroupChangePolicy: OnRootMismatch
containers:
- name: planka
image: ghcr.io/plankanban/planka:2.0.0-rc.4
ports:
- name: http
containerPort: 1337
env:
- name: BASE_URL
value: https://tasks.bstein.dev
- name: TRUST_PROXY
value: "true"
envFrom:
- secretRef:
name: planka-db
- secretRef:
name: planka-secrets
- secretRef:
name: planka-oidc
- secretRef:
name: planka-smtp
volumeMounts:
- name: user-data
mountPath: /app/public
- name: user-data
mountPath: /app/private
- name: app-data
mountPath: /app/.tmp
readinessProbe:
httpGet:
path: /
port: http
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 3
failureThreshold: 6
livenessProbe:
httpGet:
path: /
port: http
initialDelaySeconds: 30
periodSeconds: 20
timeoutSeconds: 3
failureThreshold: 6
resources:
requests:
cpu: 200m
memory: 512Mi
limits:
cpu: "1"
memory: 2Gi
volumes:
- name: user-data
persistentVolumeClaim:
claimName: planka-user-data
- name: app-data
persistentVolumeClaim:
claimName: planka-app-data