Kuma/kubernetes-example.yaml
Serge van Ginderachter 38af28703c
add a full working kubernetes manifest
for deploying uptime-kuma in it's namespace
as a deployment of a single pod
with a service and ingress definition
ans a persistent volume for data

This example should work on most Kuberntes clusters
but might need some tweaks as per specific implementations
of ingress and persistent storage.
2021-08-07 16:24:31 +02:00

131 lines
3.2 KiB
YAML

# a full working kubernetes manifest
#
# for deploying uptime-kuma in it's namespace
# as a deployment of a single pod
# with a service and ingress definition
# ans a persistent volume for data
#
# This example should work on most Kuberntes clusters
# but might need some tweaks as per specific implementations
# of ingress and persistent storage.
---
apiVersion: v1
kind: Namespace
metadata:
name: uptime-kuma
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: uptime-kuma-data
namespace: uptime-kuma
labels:
app.kubernetes.io/name: uptime-kuma
app.kubernetes.io/instance: uptime-kuma
spec:
accessModes:
- "ReadWriteOnce"
resources:
requests:
storage: "5Gi"
#storageClassName: "longhorn"
---
apiVersion: v1
kind: Service
metadata:
name: uptime-kuma-web
namespace: uptime-kuma
labels:
app.kubernetes.io/name: uptime-kuma
app.kubernetes.io/instance: uptime-kuma
spec:
type: ClusterIP
publishNotReadyAddresses: false
ports:
- name: web
port: 3001
protocol: TCP
targetPort: 3001
selector:
app.kubernetes.io/name: uptime-kuma
app.kubernetes.io/instance: uptime-kuma
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: uptime-kuma
namespace: uptime-kuma
labels:
app.kubernetes.io/name: uptime-kuma
app.kubernetes.io/instance: uptime-kuma
spec:
replicas: 1
strategy:
type: Recreate
selector:
matchLabels:
app.kubernetes.io/name: uptime-kuma
app.kubernetes.io/instance: uptime-kuma
template:
metadata:
labels:
app.kubernetes.io/name: uptime-kuma
app.kubernetes.io/instance: uptime-kuma
spec:
containers:
- name: uptime-kuma
# https://hub.docker.com/r/louislam/uptime-kuma/tags?page=1&ordering=last_updated
image: louislam/uptime-kuma:1.0.10
imagePullPolicy: IfNotPresent
ports:
- name: web
containerPort: 3001
protocol: TCP
livenessProbe:
exec:
command:
- node
- extra/healthcheck.js
readinessProbe:
httpGet:
path: /
port: web
scheme: HTTP
volumeMounts:
- mountPath: /app/data
name: uptime-kuma-data
volumes:
- name: uptime-kuma-data
persistentVolumeClaim:
claimName: uptime-kuma-data
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: uptime-kuma
namespace: uptime-kuma
labels:
app.kubernetes.io/name: uptime-kuma
app.kubernetes.io/instance: uptime-kuma
annotations:
#cert-manager.io/cluster-issuer: acme
#kubernetes.io/ingress.class: ingress-nginx
#nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
# note: default ingress-nginx has neede config for websockets
#nginx.org/websocket-services: "uptime-kuma-web"
spec:
tls:
- hosts:
- "uptime.example.com"
secretName: uptime-kuma-tls
rules:
- host: "uptime.example.com"
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: uptime-kuma-web
port:
number: 3001