如何在 Kubernetes 集群上部署 Uptime-Kuma

Joe 于 2023-08-29 发布

Uptime-Kuma 一个开源免费的监控工具 Uptime Kuma, 简单实用, 主要用来监控 Web 和网络, 和 Prometheus 不一样的是, 它是轻量的, 基于Node.js 和 Vue 3 开发, 你可以在 github 找到它

https://github.com/louislam/uptime-kuma

主要特性如下:

•可监控 HTTP(s) / TCP / Ping / DNS / Redis / Container等 •支持 Webhook,邮件多种通知方式 •多语言支持•轻量, 基于 Node.js 和 Vue 3 开发 •花哨的、响应式的 Dashboard•开源免费 •支持 Docker 部署

Uptime Kuma 也提供了在线的演示站点,你可以尝试体验一下。 我创建了一组清单,它将在 Kubernetes 集群上部署 Uptime-Kuma 以及所有需要的组件。

首先,我们为 Uptime-Kuma 创建一个名为kumaNamespaces 这里可以根据您的需要更改你想要的。

Namspace.yaml

kind: Namespace
apiVersion: v1
metadata:
  name: kuma

` Uptime-Kuma 创建一个Service服务,它将侦听端口3001。标签选择器app: uptime-kuma`

service.yaml

apiVersion: v1
kind: Service
metadata:
  name: uptime-kuma-service
  namespace: kuma
spec:
  selector:
    app: uptime-kuma
  ports:
  - name: uptime-kuma
    port: 3001

现在是我们的Statefulset的核心部分了,它将描述实际的 Deployment 和持久卷 pv

statefulset.yaml

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: uptime-kuma
  namespace: kuma
spec:
  replicas: 1
  serviceName: uptime-kuma-service
  selector:
    matchLabels:
      app: uptime-kuma
  template:
    metadata:
      labels:
        app: uptime-kuma
    spec:
      containers:
        - name: uptime-kuma
          image: louislam/uptime-kuma:latest
          env:
            - name: UPTIME_KUMA_PORT
              value: "3001"
            - name: PORT
              value: "3001"
          ports:
            - name: uptime-kuma
              containerPort: 3001
              protocol: TCP
          volumeMounts:
            - name: kuma-data
              mountPath: /app/data

  volumeClaimTemplates:
    - metadata:
        name: kuma-data
      spec:
        accessModes: ["ReadWriteOnce"]
        volumeMode: Filesystem
        resources:
          requests:
            storage: 2Gi

以上yaml文件中定义了一个kuma-data卷pvc定义,系统自行会去找满足条件的Storageclass去生成PV,状态变更为Bound状态

root@i-ddfdgdx1 ~]# kubectl  get pvc -n kuma
NAME                      STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
kuma-data-uptime-kuma-0   Bound    pvc-b40eaf13-46b5-4def-85c5-9d80f4606e98   5Gi        RWO            local-path     5d19h

可以看到这个的Storageclass为当前集群里定义的local-path,利用Node本地存储来生成PV

部署完以上之后,我们需要给Uptime-kuma部署访问入口,通常情况下我们都会通过Ingress来提供。

Ingress.yaml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: kuma-ui
  namespace: kuma
spec:
  rules:
  - host: uptime-kuma.xx.xx
    http:
      paths:
      - backend:
          serviceName: uptime-kuma-service
          servicePort: 3001
        path: /
        pathType: Prefix
status:
  loadBalancer:
    ingress:
    - ip: xx.xx.xx.xx

完成以上操作之后能够连接到 Uptime-Kuma。首次登录时,您必须创建一个管理员用户。完成此操作后,您将被重定向到仪表板。与 Uptime-Kuma 一起玩得开心!

uptime-kuma.png