From c41c6247ffaf4bbc1e5d1f3a6d13da912a0817c1 Mon Sep 17 00:00:00 2001 From: Graham McIntire Date: Sat, 26 Jul 2025 09:51:48 -0500 Subject: [PATCH] updates --- clusters/aprs/aprs-rbac.yaml | 29 +++++++ clusters/aprs/aprs-statefulset.yaml | 125 ++++++++++++++++++++++++++++ terraform/dns_w5isp.tf | 8 ++ 3 files changed, 162 insertions(+) create mode 100644 clusters/aprs/aprs-rbac.yaml create mode 100644 clusters/aprs/aprs-statefulset.yaml diff --git a/clusters/aprs/aprs-rbac.yaml b/clusters/aprs/aprs-rbac.yaml new file mode 100644 index 0000000..905474a --- /dev/null +++ b/clusters/aprs/aprs-rbac.yaml @@ -0,0 +1,29 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: aprs-service-account + namespace: aprs +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: aprs-endpoints-reader + namespace: aprs +rules: +- apiGroups: [""] + resources: ["endpoints", "pods"] + verbs: ["list", "get"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: aprs-endpoints-reader-binding + namespace: aprs +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: aprs-endpoints-reader +subjects: +- kind: ServiceAccount + name: aprs-service-account + namespace: aprs \ No newline at end of file diff --git a/clusters/aprs/aprs-statefulset.yaml b/clusters/aprs/aprs-statefulset.yaml new file mode 100644 index 0000000..6c6dacc --- /dev/null +++ b/clusters/aprs/aprs-statefulset.yaml @@ -0,0 +1,125 @@ +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 \ No newline at end of file diff --git a/terraform/dns_w5isp.tf b/terraform/dns_w5isp.tf index 688f752..495a82e 100644 --- a/terraform/dns_w5isp.tf +++ b/terraform/dns_w5isp.tf @@ -54,6 +54,14 @@ resource "dnsimple_zone_record" "w5isp_skippy" { ttl = 3600 } +resource "dnsimple_zone_record" "w5isp_jellyfin" { + zone_name = "w5isp.com" + name = "jellyfin" + value = "204.110.191.8" + type = "A" + ttl = 3600 +} + resource "dnsimple_zone_record" "w5isp_ha" { zone_name = "w5isp.com" name = "ha"