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
