Files
homelab/cluster/platform/connections/deployment.yaml
Hermes Agent service account 3b3461fd3c feat(platform): Add connections (signal-cli-rest-api) service
- Deploy signal-cli-rest-api 0.85 for Hermes Signal notifications
- Replace broken astro-orbiter VM (10.1.71.130:8080) with K8s service
- ArgoCD-managed GitOps deployment in connections namespace
- NFS-backed persistent storage for signal-cli state
- Fixes UNREGISTERED_FAILURE affecting midday market cron job
- Epcot-themed service (communication pavilion concept)

Service endpoint: http://connections.connections.svc.cluster.local:8080
2026-06-12 15:52:49 -05:00

68 lines
1.8 KiB
YAML

apiVersion: apps/v1
kind: Deployment
metadata:
name: connections
namespace: connections
labels:
app.kubernetes.io/name: connections
app.kubernetes.io/component: messaging-gateway
app.kubernetes.io/version: "0.85" # Pin version initially
spec:
replicas: 1 # MUST be 1 - signal-cli state is not multi-instance safe
strategy:
type: Recreate # Prevents dual mount of PVC
selector:
matchLabels:
app.kubernetes.io/name: connections
template:
metadata:
labels:
app.kubernetes.io/name: connections
app.kubernetes.io/component: messaging-gateway
spec:
securityContext:
fsGroup: 1000
runAsUser: 1000
runAsNonRoot: true
containers:
- name: signal-cli-rest-api
image: bbernhard/signal-cli-rest-api:0.85 # Pin version, test upgrades
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
name: http
protocol: TCP
env:
- name: MODE
value: "json-rpc" # json-rpc mode for API compatibility
volumeMounts:
- name: signal-data
mountPath: /home/.local/share/signal-cli
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
livenessProbe:
httpGet:
path: /v1/health
port: 8080
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 3
readinessProbe:
httpGet:
path: /v1/health
port: 8080
initialDelaySeconds: 10
periodSeconds: 5
timeoutSeconds: 3
failureThreshold: 2
volumes:
- name: signal-data
persistentVolumeClaim:
claimName: signal-cli-data