--- apiVersion: apps/v1 kind: StatefulSet metadata: name: uptime-kuma namespace: monitoring labels: app.kubernetes.io/instance: uptime-kuma app.kubernetes.io/name: uptime-kuma spec: replicas: 1 selector: matchLabels: app.kubernetes.io/instance: uptime-kuma app.kubernetes.io/name: uptime-kuma updateStrategy: type: RollingUpdate serviceName: uptime-kuma strategy: template: metadata: labels: app.kubernetes.io/instance: uptime-kuma app.kubernetes.io/name: uptime-kuma spec: containers: - image: louislam/uptime-kuma:1.3.2 name: uptime-kuma ports: - containerPort: 3001 name: http volumeMounts: - name: config mountPath: /app/data subPath: claude volumes: - name: config persistentVolumeClaim: claimName: uptime-kuma-config dnsConfig: options: - name: ndots value: "1" --- apiVersion: v1 kind: Service metadata: annotations: prometheus.io/probe: "true" prometheus.io/protocol: tcp labels: app.kubernetes.io/instance: uptime-kuma app.kubernetes.io/name: uptime-kuma name: uptime-kuma namespace: monitoring spec: ports: - name: http port: 3001 protocol: TCP targetPort: 3001 selector: app.kubernetes.io/instance: uptime-kuma app.kubernetes.io/name: uptime-kuma type: ClusterIP --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: # annotations: # traefik.ingress.kubernetes.io/router.entrypoints: "websecure" labels: app.kubernetes.io/instance: uptime-kuma app.kubernetes.io/name: uptime-kuma name: uptime-kuma namespace: monitoring spec: ingressClassName: "nginx" rules: - host: "uptime-kuma.${SECRET_CLUSTER_DOMAIN}" http: paths: - path: / pathType: Prefix backend: service: name: uptime-kuma port: number: 3001 tls: - hosts: - "uptime-kuma.${SECRET_CLUSTER_DOMAIN}" secretName: "${SECRET_CLUSTER_CERTIFICATE_DEFAULT}"