apiVersion: apps/v1 kind: Deployment metadata: name: signal-cli-rest-api namespace: connections labels: app.kubernetes.io/name: signal-cli-rest-api 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 # Avoid PVC split-brain during updates selector: matchLabels: app.kubernetes.io/name: signal-cli-rest-api template: metadata: labels: app.kubernetes.io/name: signal-cli-rest-api spec: hostNetwork: true # Use host network for Signal WebSocket connectivity containers: - name: signal-cli image: bbernhard/signal-cli-rest-api:latest imagePullPolicy: IfNotPresent command: ["/usr/bin/signal-cli"] args: - "--config" - "/var/lib/signal-cli" - "daemon" - "--http" - "0.0.0.0:8080" ports: - containerPort: 8080 name: http protocol: TCP volumeMounts: - name: signal-data mountPath: /var/lib/signal-cli resources: requests: memory: "256Mi" cpu: "100m" limits: memory: "512Mi" cpu: "500m" livenessProbe: tcpSocket: port: 8080 initialDelaySeconds: 30 periodSeconds: 10 timeoutSeconds: 5 failureThreshold: 3 readinessProbe: tcpSocket: port: 8080 initialDelaySeconds: 10 periodSeconds: 5 timeoutSeconds: 3 failureThreshold: 2 volumes: - name: signal-data persistentVolumeClaim: claimName: signal-cli-data