diff --git a/servers/legion/apps/redpanda.yaml b/servers/legion/apps/redpanda.yaml index b668dda..5b9e7ba 100644 --- a/servers/legion/apps/redpanda.yaml +++ b/servers/legion/apps/redpanda.yaml @@ -11,7 +11,7 @@ spec: path: servers/legion/k8s/redpanda destination: server: https://kubernetes.default.svc - namespace: platform + namespace: redpanda syncPolicy: automated: prune: true diff --git a/servers/legion/k8s/redpanda/deployment.yaml b/servers/legion/k8s/redpanda/deployment.yaml index 2384c97..d04169d 100644 --- a/servers/legion/k8s/redpanda/deployment.yaml +++ b/servers/legion/k8s/redpanda/deployment.yaml @@ -2,7 +2,7 @@ apiVersion: apps/v1 kind: StatefulSet metadata: name: redpanda - namespace: platform + namespace: redpanda labels: app: redpanda spec: @@ -24,13 +24,13 @@ spec: - redpanda - start - --smp=1 - - --memory=512M + - --memory=1536M - --reserve-memory=0M - --overprovisioned - --kafka-addr=INTERNAL://0.0.0.0:9092,EXTERNAL://0.0.0.0:9093 - - --advertise-kafka-addr=INTERNAL://redpanda.platform.svc.cluster.local:9092,EXTERNAL://100.64.0.1:30094 + - --advertise-kafka-addr=INTERNAL://redpanda.redpanda.svc.cluster.local:9092,EXTERNAL://100.64.0.1:30094 - --pandaproxy-addr=0.0.0.0:8082 - - --advertise-pandaproxy-addr=redpanda.platform.svc.cluster.local:8082 + - --advertise-pandaproxy-addr=redpanda.redpanda.svc.cluster.local:8082 ports: - name: kafka-internal containerPort: 9092 @@ -48,8 +48,8 @@ spec: memory: 512Mi cpu: 100m limits: - memory: 1Gi - cpu: 500m + memory: 2Gi + cpu: "1" readinessProbe: exec: command: ["rpk", "cluster", "info", "--brokers=localhost:9092"] @@ -60,12 +60,12 @@ spec: persistentVolumeClaim: claimName: redpanda-data --- -# Internal ClusterIP — for in-cluster services (coordinator, CI jobs) +# Internal ClusterIP — for in-cluster services apiVersion: v1 kind: Service metadata: name: redpanda - namespace: platform + namespace: redpanda spec: selector: app: redpanda @@ -81,12 +81,12 @@ spec: targetPort: 8082 type: ClusterIP --- -# NodePort — for external access via Tailscale (100.64.0.1:30093) +# NodePort — external access via Tailscale (100.64.0.1:30093/30094) apiVersion: v1 kind: Service metadata: name: redpanda-external - namespace: platform + namespace: redpanda spec: selector: app: redpanda @@ -101,7 +101,7 @@ apiVersion: apps/v1 kind: Deployment metadata: name: redpanda-console - namespace: platform + namespace: redpanda labels: app: redpanda-console spec: @@ -121,7 +121,7 @@ spec: - containerPort: 8080 env: - name: KAFKA_BROKERS - value: redpanda.platform.svc.cluster.local:9092 + value: redpanda.redpanda.svc.cluster.local:9092 resources: requests: memory: 64Mi @@ -134,7 +134,7 @@ apiVersion: v1 kind: Service metadata: name: redpanda-console - namespace: platform + namespace: redpanda spec: selector: app: redpanda-console @@ -147,7 +147,7 @@ apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: redpanda-console - namespace: platform + namespace: redpanda annotations: traefik.ingress.kubernetes.io/router.entrypoints: websecure cert-manager.io/cluster-issuer: letsencrypt-prod diff --git a/servers/legion/k8s/redpanda/pvc.yaml b/servers/legion/k8s/redpanda/pvc.yaml index b70295b..7eb8f4a 100644 --- a/servers/legion/k8s/redpanda/pvc.yaml +++ b/servers/legion/k8s/redpanda/pvc.yaml @@ -2,11 +2,11 @@ apiVersion: v1 kind: PersistentVolumeClaim metadata: name: redpanda-data - namespace: platform + namespace: redpanda spec: storageClassName: local-path accessModes: - ReadWriteOnce resources: requests: - storage: 10Gi + storage: 20Gi diff --git a/servers/legion/k8s/redpanda/topics-job.yaml b/servers/legion/k8s/redpanda/topics-job.yaml new file mode 100644 index 0000000..4131d35 --- /dev/null +++ b/servers/legion/k8s/redpanda/topics-job.yaml @@ -0,0 +1,62 @@ +--- +# One-time job to create Neuron Kafka topics in Redpanda. +# Runs on startup; idempotent (rpk topic create is a no-op if topic already exists). +# Argo CD will re-apply if deleted; ttlSecondsAfterFinished cleans it up automatically. +apiVersion: batch/v1 +kind: Job +metadata: + name: redpanda-topics-init + namespace: redpanda +spec: + ttlSecondsAfterFinished: 300 + template: + spec: + restartPolicy: OnFailure + initContainers: + - name: wait-for-redpanda + image: docker.redpanda.com/redpandadata/redpanda:latest + command: + - sh + - -c + - | + echo "Waiting for Redpanda to be ready..." + until rpk cluster info --brokers=redpanda.redpanda.svc.cluster.local:9092 >/dev/null 2>&1; do + echo "Redpanda not ready, retrying in 5s..." + sleep 5 + done + echo "Redpanda is ready." + containers: + - name: create-topics + image: docker.redpanda.com/redpandadata/redpanda:latest + command: + - sh + - -c + - | + BROKER=redpanda.redpanda.svc.cluster.local:9092 + + echo "Creating neuron.swarm (retention 7 days)..." + rpk topic create neuron.swarm \ + --brokers "$BROKER" \ + --topic-config retention.ms=604800000 \ + || echo "neuron.swarm already exists, skipping" + + echo "Creating neuron.ci (retention 3 days)..." + rpk topic create neuron.ci \ + --brokers "$BROKER" \ + --topic-config retention.ms=259200000 \ + || echo "neuron.ci already exists, skipping" + + echo "Creating neuron.vcs (retention 3 days)..." + rpk topic create neuron.vcs \ + --brokers "$BROKER" \ + --topic-config retention.ms=259200000 \ + || echo "neuron.vcs already exists, skipping" + + echo "Creating neuron.webhooks (retention 1 day)..." + rpk topic create neuron.webhooks \ + --brokers "$BROKER" \ + --topic-config retention.ms=86400000 \ + || echo "neuron.webhooks already exists, skipping" + + echo "Topic init complete." + rpk topic list --brokers "$BROKER"