Skip to content

Instantly share code, notes, and snippets.

@jesuslpm
Created March 6, 2025 10:41
Show Gist options
  • Save jesuslpm/611dbc19f71a84c088bb73e06d22201f to your computer and use it in GitHub Desktop.
Save jesuslpm/611dbc19f71a84c088bb73e06d22201f to your computer and use it in GitHub Desktop.
Kubernetes manifest to deploy single node cluster of RavenDB 7.0 to AKS
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: managed-premium-zrs
provisioner: disk.csi.azure.com
parameters:
skuName: Premium_ZRS
location: northeurope
reclaimPolicy: Retain
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: rvn
namespace: default
labels:
app: rvn
spec:
serviceName: rvn
template:
metadata:
labels:
app: rvn
spec:
securityContext:
runAsUser: 999
runAsGroup: 999
fsGroup: 999
containers:
- name: rvn
env:
- name: RAVEN_Setup_Mode
value: "None"
- name: RAVEN_DataDir
value: "/var/lib/ravendb/data"
- name: RAVEN_Security_Certificate_Path
value: "/ssl/ssl"
- name: RAVEN_ServerUrl
value: "https://0.0.0.0:4343"
- name: RAVEN_ServerUrl_Tcp
value: "tcp://0.0.0.0:38888"
- name: RAVEN_PublicServerUrl
value: "https://rvn.example.com"
- name: RAVEN_PublicServerUrl_Tcp
value: "tcp://tcp-rvn.example.com:443"
- name: RAVEN_License_Path
value: "/license/license.json"
- name: RAVEN_License_Eula_Accepted
value: "true"
image: ravendb/ravendb:7.0-ubuntu-latest
imagePullPolicy: Always
resources:
requests:
memory: "2048Mi"
cpu: "500m"
limits:
memory: "4096Mi"
cpu: "2000m"
ports:
- containerPort: 4343
name: http-api
protocol: TCP
- containerPort: 38888
name: tcp-server
protocol: TCP
- containerPort: 161
name: snmp
protocol: TCP
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /var/lib/ravendb/data
name: data
- mountPath: /ssl
name: ssl
- mountPath: /license
name: license
- mountPath: /config
name: config
dnsPolicy: ClusterFirst
restartPolicy: Always
terminationGracePeriodSeconds: 120
volumes:
- name: ssl
secret:
defaultMode: 420
secretName: rvn-ssl
- configMap:
defaultMode: 420
name: rvn-settings
name: config
- name: license
secret:
defaultMode: 420
secretName: rvn-license
updateStrategy:
type: RollingUpdate
podManagementPolicy: OrderedReady
replicas: 1
selector:
matchLabels:
app: rvn
volumeClaimTemplates:
- metadata:
annotations:
volume.beta.kubernetes.io/storage-class: managed-premium-zrs
labels:
app: rvn
name: data
spec:
storageClassName: managed-premium-zrs
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 256Gi
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: rvn
namespace: default
labels:
app: rvn
annotations:
ingress.kubernetes.io/ssl-passthrough: "true"
kubernetes.io/ingress.class: haproxy
spec:
rules:
- host: rvn.example.com
http:
paths:
- backend:
service:
name: rvn-0
port:
number: 443
path: /
pathType: Prefix
- host: tcp-rvn.example.com
http:
paths:
- backend:
service:
name: rvn-0
port:
number: 38888
path: /
pathType: Prefix
---
apiVersion: v1
kind: Service
metadata:
name: rvn-0
namespace: default
labels:
app: rvn
node: "0"
spec:
ports:
- name: http-api
port: 443
protocol: TCP
targetPort: 4343
- name: tcp-server
port: 38888
protocol: TCP
targetPort: 38888
- name: snmp
port: 161
protocol: TCP
targetPort: 161
selector:
app: rvn
statefulset.kubernetes.io/pod-name: rvn-0
type: ClusterIP
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment