Chuyển tới nội dung

Triển khai Cụm Uptime Kuma Monitor bằng Helm Chart

Việc monitor service sẽ dựa vào status của service. Ví dụ như trong hình là http status code. Kuma sẽ dựa vào đó để biết tình trạng của hệ thống và có những phản hồi tương ứng. Ngoài Uptime Kuma còn có blackbox cả 2 đều tích hợp được vào grafana để visualize chart report.

Cấu hình PV và PVC Uptime Kuma

1. Chuẩn bị

1.1 Tạo thư mục chứa dữ liệu Kuma trên NFS server (Thực hiện trên nfs-server)

sudo mkdir -p /opt/uptime-kuma
sudo chown -R nobody:nogroup /opt/uptime-kuma   # hoặc nfsnobody:nfsnobody tùy distro
sudo chmod 0777 /opt/uptime-kuma

1.2 Thêm vào /etc/exports

sudo echo '/opt/uptime-kuma  *(rw,sync,no_subtree_check,no_root_squash)' | sudo tee -a /etc/exports

1.3 Apply config

sudo exportfs -ra
sudo systemctl restart nfs-server

1.4 Tại các máy trong cụm k8s ta tiến hành

Cài đặt nfs-client

sudo apt-get update && sudo apt-get install -y nfs-common

Kiểm tra kết nối nfs từ các node trong cụm k8s tới NFS server

sudo mount -t nfs4 10.100.1.21:/opt/uptime-kuma /mnt && ls /mnt && sudo umount /mnt

2. Tạo PV và PVC cho cụm

Khai báo Storage Class trước

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: nfs-storage-kuma
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer

Dùng giao diện rancher hoặc kubectl để import PV-PVC

apiVersion: v1
kind: PersistentVolume
metadata:
  name: uptime-kuma-pv
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteOnce
  nfs:
    path: /opt/uptime-kuma
    server: 10.100.1.21 #chú ý đổi địa chỉ IP tương ứng của bạn
  persistentVolumeReclaimPolicy: Retain
  storageClassName: nfs-storage-kuma
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: beobe-uptime-kuma-pvc
  namespace: beobeo-monitoring
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
  storageClassName: nfs-storage-kuma

3. Khởi tạo Uptime Kuma

Thực hiện trên server k8s-master hoặc kubectl shell Rancher.

Bạn phải cài đặt helm cho cụm k8s trước.

3.1 Cấu hình file values.yaml

Download template helm chart values.yaml tại https://github.com/dirsigler/uptime-kuma-helm/blob/main/charts/uptime-kuma/values.yaml và edit các giá trị.

volume:
  enabled: true
  accessMode: ReadWriteOnce
  size: 5Gi
  # If you want to use a storage class other than the default, uncomment this
  # line and define the storage class name
  # storageClassName:
  # Reuse your own pre-existing PVC.
  existingClaim: "beobeo-uptime-kuma-pvc"

3.2 Khởi tạo Uptime Kuma

Copy file values.yaml đã download và update phần volume vào thư mục ~/devops trên server k8s-master sau đó chạy lệnh như bên dưới

# helm repo add uptime-kuma https://helm.irsigler.cloud
# helm repo update
# helm install beobeo-uptime-kuma uptime-kuma/uptime-kuma -n beobeo-monitoring -f values.yaml

3.3 Cấu hình để truy cập từ bên ngoài

file services.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: kuma-ingress
  labels:
  namespace: beobeo-monitoring
spec:
  ingressClassName: nginx
  selector:
    app.kubernetes.io/instance: beobeo-uptime-kuma
    app.kubernetes.io/name: uptime-kuma
  rules:
    - host: kuma.diendo.lc
      http:
        paths:
          - backend:
              service:
                name: beobeo-uptime-kuma
                port:
                  number: 3001
            path: /
            pathType: Prefix
---
apiVersion: v1
kind: Service
metadata:
  name: beobeo-uptime-nodeport
  namespace: beobeo-monitoring
spec:
  selector:
    app.kubernetes.io/instance: beobeo-uptime-kuma
    app.kubernetes.io/name: uptime-kuma
  externalTrafficPolicy: Cluster
  internalTrafficPolicy: Cluster
  ipFamilies:
    - IPv4
  ipFamilyPolicy: SingleStack
  ports:
    - name: kuma-nodeport
      nodePort: 30001
      port: 3001
      protocol: TCP
      targetPort: 3001
  sessionAffinity: None
  type: NodePort

Import qua giao diện rancher hoặc dùng lệnh

kubectl apply -f services.yaml

Vào qua NodePort

Liên hệ