mirror of
https://ak-git.vectorsigma.ru/terghalin/metalcheck.git
synced 2025-10-25 20:33:38 +09:00
main
All checks were successful
CI Pipeline / Build and Push Docker Image (push) Successful in 1m27s
MetalCheck Backend
MetalCheck is a backend service that provides insights into virtual machines, physical nodes, and Kubernetes clusters. It supports deployment in an EKS environment and offers features like data aggregation, import from APIs, and data export.
Features
- Metal Nodes: Track hardware details like CPU, memory, and storage for physical nodes. Import node data from JSON files.
- Virtual Machines: Track virtual machine details like CPU, memory, and storage. Import VM data from Hetzner Cloud API or JSON files.
- Kubernetes Clusters: Query Kubernetes clusters to gather node and namespace data.
- Data Export: Export collected data in JSON or YAML format for further processing or visualization.
Project Structure
metalcheck-backend/
├── app/
│ ├── __init__.py # Initialization
│ ├── main.py # FastAPI entry point
│ ├── database.py # SQLite DB setup and operations
│ ├── routes/
│ │ ├── __init__.py # Initialization for routes
│ │ ├── metal.py # Routes for metal nodes
│ │ ├── vm.py # Routes for virtual machines
│ │ ├── k8s.py # Routes for Kubernetes clusters
│ │ ├── think.py # Routes for AI summary
│ │ ├── export.py # Data export routes
│ ├── examples/k8s/
│ │ ├── rbac.yaml # RBAC configuration for Kubernetes
│ │ ├── deployment.yaml # Deployment configuration for EKS
│ │ ├── configmap.yaml # ConfigMap for EKS
├── Dockerfile # Docker container configuration
├── requirements.txt # Python dependencies
├── .dockerignore # Files to ignore during image build
└── README.md # Project documentation
Setup and Deployment
Prerequisites
- Python 3.10+
- Docker and kubectl installed
- Access to an EKS cluster
- AWS CLI configured with appropriate permissions
Build and Deploy
Build and Push Docker Image
docker build -t metalcheck-backend .
docker tag metalcheck-backend:latest <your-ecr-repo>:latest
docker push <your-ecr-repo>:latest
Deploy to EKS
Modify and apply RBAC and deployment configurations:
kubectl apply -f examples/k8s/rbac.yaml
kubectl apply -f examples/k8s/configmap.yaml
kubectl apply -f examples/k8s/deployment.yaml
Access the Service
Retrieve the LoadBalancer IP:
kubectl get svc -n metalcheck
Test the API:
curl http://<EXTERNAL-IP>/k8s/data
Kubernetes Integration
The /k8s/data endpoint retrieves information about:
- Nodes: CPU, memory, and allocatable pods.
- Namespaces: List of all namespaces in the cluster.
Endpoints
| Method | Endpoint | Description |
|---|---|---|
| GET | /metal/data | Get all physical node data |
| POST | /metal/data | Add a new physical node |
| GET | /vm/data | Get all virtual machine data |
| GET | /vm/import_hetzner | Import VM data from Hetzner API |
| POST | /vm/data | Add a new virtual machine |
| GET | /k8s/data | Get Kubernetes cluster information |
| GET | /think/k8s | Get AI summary for Kubernetes cluster |
| GET | /export | Export data in JSON or YAML format |
Hetzner Integration
To fetch virtual machines from Hetzner Cloud:
-
Ensure your Hetzner API token is available as an environment variable:
export HETZNER_TOKEN=<your-token> -
Use the /vm/import-hetzner endpoint:
curl http://<EXTERNAL-IP>/vm/import_hetzner
Data Export
- Export in YAML format:
curl -X GET "http://<EXTERNAL-IP>/export?format=yaml"
- Export in JSON format:
curl -X GET "http://<EXTERNAL-IP>/export?format=json"
MetalCheck Helm Chart
This Helm chart deploys the MetalCheck backend on a Kubernetes cluster.
Installation
Prerequisites
- Kubernetes cluster (1.18+ recommended)
- Helm 3.x installed
- Docker image for MetalCheck backend
Install Chart
-
Update
values.yamlwith your specific configurations. -
Install the chart:
helm install metalcheck ./metalcheck-helm
Description
Languages
Python
96.7%
Dockerfile
2.7%
Smarty
0.6%