VMS master là control plane trung tâm của Vero Monitor Service.
Kiến trúc Master trên K3s (Linux)
Dưới đây là mô hình kiến trúc các thành phần của VMS Master khi chạy trên cụm K3s (Linux):
| Thành phần | Kubernetes object | Vai trò |
|---|---|---|
postgres-internal | Deployment, Service, PVC, Secret | Catalog DB, lưu cấu hình agent/probe, auth và metadata |
postgrest | Deployment, Service | REST API layer để dashboard và các service đọc catalog |
influxdb3 | Deployment, Service, PVC, Secret | Lưu trữ time-series metrics và logs (vms_timeseries, vms_logs) |
vms-metrics-ingress | Deployment, Service, Ingress | API tiếp nhận dữ liệu và cấp cấu hình cho agent |
vms-dashboard | Deployment, Service, Ingress | Giao diện Web UI để vận hành và hiển thị dashboard |
vms-checker-svc | Deployment, Service | Thực hiện readiness/dependency health check |
vms-synthetic-svc | Deployment, Service | Chạy synthetic user flow check |
vms-alert-agent | Deployment | Đánh giá rule cảnh báo và gửi Alert |
Các đầu mục chuẩn bị (Master)
| Đầu mục | Yêu cầu chuẩn bị |
|---|---|
| OS | Linux (khuyên dùng Ubuntu 22.04 LTS hoặc RHEL 9+) |
| K3s / K8s | Đã cài đặt cụm K3s/Kubernetes, cấu hình StorageClass mặc định |
| Domain | Domain trỏ về server K3s (ví dụ: vms.verolabs.co và ingest.vms.verolabs.co) |
| GitOps Repo | Clone repository vms-gitops về server deploy |
Luồng triển khai Step - Check - Result
Hệ thống VMS Master được đóng gói và tự động hóa toàn bộ qua Kustomize. Bạn chỉ cần triển khai một lệnh duy nhất hoặc deploy theo thứ tự các lớp dưới đây:1. Triển khai Namespace và Bootstrap Secret
- Step: Áp dụng namespace
vmsvà khởi chạy job bootstrap để sinh tự động các secret bảo mật (TLS cert self-signed, Influx token, service keys). - Check: Kiểm tra trạng thái của job bootstrap và các secret được tạo ra:
- Result: Job
vms-bootstrapở trạng tháiCompleted. Các secretvms-metrics-ingress-secretvàinfluxdb3-secretđã được sinh tự động.
2. Triển khai Data Plane (PostgreSQL & InfluxDB 3)
- Step: Triển khai database PostgreSQL và cơ sở dữ liệu time-series InfluxDB 3. Cụm K8s sẽ tự chạy các job khởi tạo database (
influxdb3-create-db) và tải cấu trúc schema (vms-pg-schema-load). - Check: Đảm bảo các pod dữ liệu đã chạy và các job setup đã hoàn tất:
- Result: Pod
postgres-internalvàinfluxdb3ở trạng tháiRunning(1/1). Các job schema-load và create-db báo trạng tháiCompleted.
3. Triển khai Services & Ingress
- Step: Triển khai các core service của hệ thống (Ingress, Dashboard, Checker, Synthetic, Alert). Các service này tự động chạy migrations khi start thông qua initContainers.
(Hoặc dùng lệnh deploy toàn bộ:
kubectl apply -k .từ root folder) - Check: Đợi các pods ở trạng thái sẵn sàng và test Ingress healthcheck:
- Result: Tất cả pod ở trạng thái
Running. Lệnh curl trả về HTTP status200 OKkèm{"status":"healthy"}.
4. Lấy API Ingest Key cho Agent
- Step: Lấy ingest key được tự động sinh ra trong phase bootstrap để cấu hình cho VMS Agent.
Lưu ý: Nếu muốn sinh thêm key mới theo site/agent cụ thể, bạn có thể chỉnh sửa và chạy
services/metrics-ingress/create-key-job.yaml. - Check: Verify key có dạng chuỗi string ngẫu nhiên.
- Result: In ra terminal key dạng
vms_agent_.... Lưu lại key này để cấu hình cho client agent.
Tiêu chí Nghiệm thu (Success/Fail Criteria)
1. Success Criteria (Thành công)
- Toàn bộ pod trong namespace
vmsở trạng tháiRunninghoặcCompleted. - Ingress HTTPS hoạt động hợp lệ với SSL Certificate được verify (không bị lỗi x509 trên client/agent).
- Có thể login vào Dashboard và thấy danh sách cấu hình rỗng (sẵn sàng kết nối agent).
2. Fail Signals & Hướng xử lý nhanh
- Pod ở trạng thái
Pending: Thường do thiếu tài nguyên phần cứng (CPU/RAM) hoặc StorageClass không nhận diện được.- Xử lý: Chạy
kubectl describe pod <pod-name> -n vmsđể xem nguyên nhân chi tiết.
- Xử lý: Chạy
- Pod báo
CrashLoopBackOff: Thường do sai biến môi trường, kết nối DB bị từ chối hoặc thiếu quyền đọc secret.- Xử lý: Kiểm tra log lỗi bằng
kubectl logs <pod-name> -n vms --previous.
- Xử lý: Kiểm tra log lỗi bằng
- Lỗi
401 Unauthorizedtừ Ingress: Do truyền sai token hoặc key của agent chưa được map chính xác trên database.- Xử lý: Chạy lại job sinh key và kiểm tra cấu hình biến môi trường của Ingress.

