Getting Started With Kubernetes
Getting started with Helm
To deploy Parosly in Kubernetes, it is easy to use the provided values.yaml file. This will deploy the prometheus-community/prometheus chart including the Parosly application as a sidecar container inside the Prometheus pod.
IMPORTANT: When using the provided values.yaml, all Prometheus configurations specified in the prometheus.yml file can not be managed through Helm values. Instead, the configurations need to be managed via the /configs API or the web UI of the Parosly app.
Get repository info
$ helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
$ helm repo updateInstall chart
$ helm install prometheus prometheus-community/prometheus \
--values https://raw.githubusercontent.com/parosly/parosly/main/docs/examples/kubernetes/helm/values.yamlVerify that everything is working properly
When the chart is installed successfully by executing the following commands, you should see similar output.
$ kubectl get pod -l app.kubernetes.io/component=server
NAME READY STATUS RESTARTS AGE
prometheus-server-54595bd74b-tr7fb 3/3 Running 0 1m
$ kubectl get svc prometheus-server
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
prometheus-server ClusterIP 10.100.237.217 <none> 80/TCP 1m
$ kubectl logs -f -l app.kubernetes.io/component=server -c parosly
{"timestamp": "07 Dec 2024 10:23:14", "level": "INFO", "message": "Starting web management UI"}
{"timestamp": "07 Dec 2024 10:23:15", "level": "INFO", "message": "The connection to the Prometheus server has been established successfully!"}
{"timestamp": "07 Dec 2024 10:23:15", "level": "INFO", "message": "Successfully started metrics endpoint at /api-metrics path"}
{"timestamp": "07 Dec 2024 10:23:15", "level": "INFO", "message": "Server listening on 0.0.0.0:9090"}Once the apps are ready to handle requests, you can start creating your first Prometheus rules via API.
Important: As you can see, the type of service is
ClusterIP, which means it’s only accessible from within the Kubernetes cluster.
Expose service locally
Port forward the service and open another tab for the next step.
$ kubectl port-forward svc/prometheus-server 9090:80Crating example alerting rule via API
POST /api/v1/rules
Request
curl -i -XPOST 'http://localhost:9090/api/v1/rules' \
--header 'Content-Type: application/json' \
--data '{
"data": {
"groups": [
{
"name": "ServiceHealthAlerts",
"rules": [
{
"alert": "HighCPUUsage",
"expr": "sum(rate(cpu_usage{job=\"webserver\"}[5m])) > 0.8",
"for": "5m",
"labels": {
"severity": "warning"
},
"annotations": {
"summary": "High CPU Usage Detected",
"description": "The CPU usage for the web server is {{ $value }}% for the last 5 minutes."
}
}
]
}
]
}
}'Response
HTTP/1.1 201 Created
content-length: 99
content-type: application/json
{"status":"success","message":"The rule was created successfully","file":"453ee16d-6310-42e0-8d57-2857e27d250f.yml"}
Where the 453ee16d-6310-42e0-8d57-2857e27d250f.yml is the randomly generated filename created by the Parosly server.
Deleting alerting rule file via API
DELETE /api/v1/rules/{file}
Note that the filename in your example is different from the example below.
Request
curl -i -XDELETE 'http://localhost:9090/api/v1/rules/453ee16d-6310-42e0-8d57-2857e27d250f.yml'Response
HTTP/1.1 204 No Content
content-type: application/json
You can find the complete API documentation here. Enjoy!
Further reading
- Read about how-to guides in the Diátaxis framework