infra/clusters/aprs/aprs-statefulset.yaml
2025-07-26 09:51:48 -05:00

125 lines
No EOL
3.2 KiB
YAML

apiVersion: v1
kind: Service
metadata:
name: aprs-headless
namespace: aprs
spec:
clusterIP: None
selector:
app: aprs
ports:
- name: epmd
port: 4369
targetPort: 4369
- name: erlang
port: 9100
targetPort: 9100
- name: gossip
port: 45892
targetPort: 45892
protocol: UDP
publishNotReadyAddresses: true
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: aprs
namespace: aprs
spec:
serviceName: aprs-headless
replicas: 2
selector:
matchLabels:
app: aprs
template:
metadata:
labels:
app: aprs
spec:
serviceAccountName: aprs-service-account
imagePullSecrets:
- name: ghcr-pull-secret
containers:
- name: aprs
image: ghcr.io/aprsme/aprs.me:latest
imagePullPolicy: Always
ports:
- containerPort: 4000
- containerPort: 4369
name: epmd
- containerPort: 9100
name: erlang
- containerPort: 45892
name: gossip
protocol: UDP
env:
- name: PHX_HOST
value: "aprs.me"
- name: PORT
value: "4000"
- name: DATABASE_URL
valueFrom:
secretKeyRef:
name: aprs-secret
key: database-url
- name: SECRET_KEY_BASE
valueFrom:
secretKeyRef:
name: aprs-secret
key: secret-key-base
- name: PHX_SERVER
value: "true"
- name: MIX_ENV
value: "prod"
- name: APRS_CALLSIGN
value: "W5ISP-1"
- name: APRS_FILTER
value: "r/33/-96/1000000000000"
- name: APRS_PASSCODE
value: "15748"
- name: APRS_PORT
value: "10152"
- name: APRS_SERVER
value: "dallas.aprs2.net"
- name: PACKET_RETENTION_DAYS
value: "7"
- name: POOL_SIZE
value: "20"
- name: CLUSTER_ENABLED
value: "true"
- name: RELEASE_COOKIE
valueFrom:
secretKeyRef:
name: aprs-secret
key: erlang-cookie
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
resources:
limits:
memory: "512Mi"
cpu: "500m"
requests:
memory: "256Mi"
cpu: "250m"
livenessProbe:
httpGet:
path: /health
port: 4000
initialDelaySeconds: 30
periodSeconds: 10
readinessProbe:
httpGet:
path: /health
port: 4000
initialDelaySeconds: 5
periodSeconds: 5