apiVersion: v1 kind: PersistentVolumeClaim metadata: name: nats-pvc namespace: databases spec: accessModes: - ReadWriteOnce storageClassName: longhorn resources: requests: storage: 10Gi limits: storage: 10Gi --- apiVersion: v1 kind: ConfigMap metadata: name: nats-configmap namespace: databases data: server.conf: | port: 4222 monitor_port: 8222 jetstream { store_dir: nats # 1GB max_memory_store: 1073741824 # 10GB max_file_store: 10737418240 } authorization: { users: [ {user: $SYS, password: $NATS_PASSWORD}, {user: default, password: $NATS_PASSWORD} ] } --- apiVersion: apps/v1 kind: Deployment metadata: name: nats namespace: databases spec: replicas: 1 strategy: type: Recreate selector: matchLabels: ms: nats template: metadata: labels: ms: nats spec: terminationGracePeriodSeconds: 120 containers: - name: nats image: nats:2.10.5 ports: - containerPort: 4222 - containerPort: 8222 volumeMounts: - name: data mountPath: /data env: - name: NATS_PASSWORD valueFrom: secretKeyRef: name: secrets key: NATS_PASSWORD volumes: - name: data persistentVolumeClaim: claimName: nats-pvc - name: config configMap: name: nats-configmap --- apiVersion: v1 kind: Service metadata: name: nats namespace: databases spec: type: NodePort selector: ms: nats ports: - port: 4222 name: server targetPort: 4222 - port: 8222 name: monitor targetPort: 8222 --- apiVersion: apps/v1 kind: Deployment metadata: name: nats-exporter namespace: databases spec: replicas: 1 selector: matchLabels: ms: nats-exporter template: metadata: labels: ms: nats-exporter annotations: prometheus.io/scrape: "true" prometheus.io/port: "7777" spec: containers: - name: nats-exporter image: natsio/prometheus-nats-exporter args: - -channelz - -connz - -connz_detailed - -healthz - -jsz=all - -serverz - -subz - -varz - http://nats.databases:8222 ports: - containerPort: 7777