infrastructure/databases/nats.yaml

137 lines
2.6 KiB
YAML

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: default, password: $NATS_PASSWORD}
]
}
accounts: {
$SYS: {
users: [{user: sys, 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
args: ["-c", "/etc/nats/server.conf"]
ports:
- containerPort: 4222
- containerPort: 8222
volumeMounts:
- name: data
mountPath: /data
- name: config
mountPath: /etc/nats
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