diff --git a/bootstrap/kustomizations/kustomization-uptime-kuma.yaml b/bootstrap/kustomizations/kustomization-uptime-kuma.yaml new file mode 100644 index 0000000..3625b8e --- /dev/null +++ b/bootstrap/kustomizations/kustomization-uptime-kuma.yaml @@ -0,0 +1,18 @@ +apiVersion: kustomize.toolkit.fluxcd.io/v1 +kind: Kustomization +metadata: + name: uptime-kuma + namespace: flux-system +spec: + interval: 15m + path: ./uptime-kuma + prune: true # remove any elements later removed from the above path + timeout: 2m # if not set, this defaults to interval duration, which is 1h + sourceRef: + kind: GitRepository + name: flux-system + healthChecks: + - apiVersion: apps/v1 + kind: Deployment + name: uptime-kuma + namespace: uptime-kuma diff --git a/bootstrap/namespaces/namespace-uptime-kuma.yaml b/bootstrap/namespaces/namespace-uptime-kuma.yaml new file mode 100644 index 0000000..92c7bb2 --- /dev/null +++ b/bootstrap/namespaces/namespace-uptime-kuma.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: uptime-kuma diff --git a/uptime-kuma/uptime-kuma-deployment.yaml b/uptime-kuma/uptime-kuma-deployment.yaml new file mode 100644 index 0000000..9843a62 --- /dev/null +++ b/uptime-kuma/uptime-kuma-deployment.yaml @@ -0,0 +1,31 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: uptime-kuma + namespace: uptime-kuma +spec: + replicas: 1 + selector: + matchLabels: + app: uptime-kuma + strategy: + type: Recreate + template: + metadata: + labels: + app: uptime-kuma + spec: + containers: + - image: louislam/uptime-kuma:1 + name: uptime-kuma + ports: + - containerPort: 3001 + protocol: TCP + volumeMounts: + - mountPath: /app/data + name: uptime-kuma-pvc + restartPolicy: Always + volumes: + - name: uptime-kuma-pvc + persistentVolumeClaim: + claimName: uptime-kuma-pvc diff --git a/uptime-kuma/uptime-kuma-dns-endpoint.yaml b/uptime-kuma/uptime-kuma-dns-endpoint.yaml new file mode 100644 index 0000000..206670a --- /dev/null +++ b/uptime-kuma/uptime-kuma-dns-endpoint.yaml @@ -0,0 +1,12 @@ +apiVersion: externaldns.k8s.io/v1alpha1 +kind: DNSEndpoint +metadata: + name: kuma.michaelthomson.dev + namespace: uptime-kuma +spec: + endpoints: + - dnsName: kuma.michaelthomson.dev + recordTTL: 180 + recordType: CNAME + targets: + - server.michaelthomson.dev diff --git a/uptime-kuma/uptime-kuma-ingress.yaml b/uptime-kuma/uptime-kuma-ingress.yaml new file mode 100644 index 0000000..11cafa6 --- /dev/null +++ b/uptime-kuma/uptime-kuma-ingress.yaml @@ -0,0 +1,24 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: uptime-kuma + namespace: uptime-kuma + annotations: + traefik.ingress.kubernetes.io/router.entrypoints: websecure + traefik.ingress.kubernetes.io/router.tls: "true" +spec: + rules: + - host: kuma.michaelthomson.dev + http: + paths: + - pathType: ImplementationSpecific + path: / + backend: + service: + name: uptime-kuma + port: + number: 3001 + tls: + - hosts: + - kuma.michaelthomson.dev + secretName: letsencrypt-wildcard-cert-michaelthomson.dev diff --git a/uptime-kuma/uptime-kuma-pvc.yaml b/uptime-kuma/uptime-kuma-pvc.yaml new file mode 100644 index 0000000..db8e8ff --- /dev/null +++ b/uptime-kuma/uptime-kuma-pvc.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: uptime-kuma-pvc + namespace: uptime-kuma +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 4Gi diff --git a/uptime-kuma/uptime-kuma-service.yaml b/uptime-kuma/uptime-kuma-service.yaml new file mode 100644 index 0000000..f471d5e --- /dev/null +++ b/uptime-kuma/uptime-kuma-service.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: Service +metadata: + name: uptime-kuma + namespace: uptime-kuma +spec: + ports: + - name: "3001" + port: 3001 + targetPort: 3001 + selector: + app: uptime-kuma