# NATS Server Kubernetes Deployment apiVersion: v1 kind: Namespace metadata: name: event-bus --- apiVersion: v1 kind: ConfigMap metadata: name: nats-config namespace: event-bus data: nats.conf: | port: 4222 http_port: 8222 jetstream: store_dir: /data/jetstream max_mem: 2GB max_file: 10GB --- apiVersion: apps/v1 kind: StatefulSet metadata: name: nats namespace: event-bus spec: serviceName: nats replicas: 3 selector: matchLabels: app: nats template: metadata: labels: app: nats spec: containers: - name: nats image: nats:2.10-alpine args: - -c - /etc/nats/nats.conf ports: - name: client containerPort: 4222 - name: cluster containerPort: 6222 - name: monitor containerPort: 8222 volumeMounts: - name: config mountPath: /etc/nats - name: data mountPath: /data/jetstream resources: requests: memory: "512Mi" cpu: "200m" limits: memory: "1Gi" cpu: "500m" volumes: - name: config configMap: name: nats-config volumeClaimTemplates: - metadata: name: data spec: accessModes: ["ReadWriteOnce"] storageClassName: standard resources: requests: storage: 10Gi --- apiVersion: v1 kind: Service metadata: name: nats namespace: event-bus spec: clusterIP: None ports: - port: 4222 targetPort: 4222 name: client - port: 6222 targetPort: 6222 name: cluster - port: 8222 targetPort: 8222 name: monitor selector: app: nats