Skip to content

Instantly share code, notes, and snippets.

@jesuslpm
Last active March 4, 2025 10:48
Show Gist options
  • Save jesuslpm/67c613f23d108560f2757b4867dfadc6 to your computer and use it in GitHub Desktop.
Save jesuslpm/67c613f23d108560f2757b4867dfadc6 to your computer and use it in GitHub Desktop.
yaml manifest to deploy RavenDB 5.4 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: v1
kind: ConfigMap
metadata:
name: ravendb-settings
namespace: default
labels:
app: ravendb
data:
ravendb-0: "{\r\n \"Setup.Mode\": \"None\",\r\n \"DataDir\": \"/data/RavenData\",\r\n
\ \"Security.Certificate.Path\": \"/ssl/ssl\",\r\n \"ServerUrl\": \"https://0.0.0.0\",\r\n
\ \"ServerUrl.Tcp\": \"tcp://0.0.0.0:38888\",\r\n \"PublicServerUrl\": \"https://raven.example.com\",\r\n
\ \"PublicServerUrl.Tcp\": \"tcp://tcp-raven.example.com:443\",\r\n
\ \"License.Path\": \"/license/license.json\",\r\n \"License.Eula.Accepted\": \"true\"}"
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: ravendb
namespace: default
labels:
app: ravendb
spec:
serviceName: ravendb
template:
metadata:
labels:
app: ravendb
spec:
containers:
- command:
- /bin/sh
- -c
- /opt/RavenDB/Server/Raven.Server --config-path /config/$HOSTNAME
image: ravendb/ravendb:5.4-ubuntu-latest
imagePullPolicy: Always
name: ravendb
resources:
requests:
memory: "4096Mi"
cpu: "1000m"
limits:
memory: "4096Mi"
cpu: "2000m"
ports:
- containerPort: 443
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: /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: ravendb-ssl
- configMap:
defaultMode: 420
name: ravendb-settings
name: config
- name: license
secret:
defaultMode: 420
secretName: ravendb-license
updateStrategy:
type: RollingUpdate
podManagementPolicy: OrderedReady
replicas: 1
selector:
matchLabels:
app: ravendb
volumeClaimTemplates:
- metadata:
annotations:
volume.beta.kubernetes.io/storage-class: managed-premium-zrs
labels:
app: ravendb
name: data
spec:
storageClassName: managed-premium-zrs
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1024Gi
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ravendb
namespace: default
labels:
app: ravendb
annotations:
ingress.kubernetes.io/ssl-passthrough: "true"
kubernetes.io/ingress.class: haproxy
spec:
rules:
- host: raven.example.com
http:
paths:
- backend:
service:
name: ravendb-0
port:
number: 443
path: /
pathType: Prefix
- host: tcp-raven.example.com
http:
paths:
- backend:
service:
name: ravendb-0
port:
number: 38888
path: /
pathType: Prefix
---
apiVersion: v1
kind: Service
metadata:
name: ravendb
namespace: default
labels:
app: ravendb
spec:
clusterIP: None
ports:
- name: http-api
port: 443
protocol: TCP
targetPort: 443
- name: tcp-server
port: 38888
protocol: TCP
targetPort: 38888
- name: snmp
port: 161
protocol: TCP
targetPort: 161
selector:
app: ravendb
type: ClusterIP
---
apiVersion: v1
kind: Service
metadata:
name: ravendb-0
namespace: default
labels:
app: ravendb
node: "0"
spec:
ports:
- name: http-api
port: 443
protocol: TCP
targetPort: 443
- name: tcp-server
port: 38888
protocol: TCP
targetPort: 38888
- name: snmp
port: 161
protocol: TCP
targetPort: 161
selector:
app: ravendb
statefulset.kubernetes.io/pod-name: ravendb-0
type: ClusterIP
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment