Monitoring is the backbone of any reliable Kubernetes cluster. It ensures visibility into resource usage, application health, and potential failures. Instead of manually deploying and managing Prometheus, the Prometheus Operator simplifies and automates monitoring with custom resource definitions (CRDs).
In this guide, we will:
Deploy the Prometheus Operator in Kubernetes
Configure Prometheus, Alertmanager, and Grafana
Set up automated service discovery using ServiceMonitor
Enable alerts and notifications
Let’s get started!
Installing the Prometheus Operator Using Helm
The fastest and most efficient way to deploy the Prometheus stack is through Helm.
Step 1: Add the Prometheus Helm Repository
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
Step 2: Install the Prometheus Operator
helm install prometheus prometheus-community/kube-prometheus-stack -n monitoring --create-namespace
This command installs:
Prometheus
Alertmanager
Grafana
Node Exporters
Verify the installation:
kubectl get pods -n monitoring
Deploying a Prometheus Instance
Now, we will define a Prometheus Custom Resource to manage our Prometheus deployment.
prometheus.yaml
apiVersion: monitoring.coreos.com/v1
kind: Prometheus
metadata:
name: prometheus-instance
namespace: monitoring
spec:
replicas: 2
serviceMonitorSelector: {}
resources:
requests:
memory: 400Mi
cpu: 200m
Apply the Prometheus Instance
kubectl apply -f prometheus.yaml
This will automatically create a Prometheus instance that follows Kubernetes best practices.
Configuring Service Discovery with ServiceMonitor
Prometheus requires service discovery to scrape metrics from your applications. The ServiceMonitor CRD makes this process seamless.
servicemonitor.yaml
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: myapp-monitor
namespace: monitoring
spec:
selector:
matchLabels:
app: myapp
endpoints:
- port: metrics
interval: 30s
Apply the ServiceMonitor Configuration
kubectl apply -f servicemonitor.yaml
This ensures that Prometheus automatically discovers and scrapes metrics from services with the label app: myapp.
Setting Up Alerting with Alertmanager
Alertmanager handles alerts generated by Prometheus and routes them to email, Slack, PagerDuty, etc.
alertmanager.yaml
apiVersion: monitoring.coreos.com/v1
kind: Alertmanager
metadata:
name: alertmanager-instance
namespace: monitoring
spec:
replicas: 2
Apply the Alertmanager Configuration
kubectl apply -f alertmanager.yaml
Now, we have a fully functional alerting system in place.
Accessing Grafana Dashboards
Grafana provides real-time visualization for Prometheus metrics. It is already included in the Prometheus Operator stack.
Access Grafana using port-forwarding
kubectl port-forward svc/prometheus-grafana -n monitoring 3000:80
Open http://localhost:3000 in your browser.
Username: admin
Password: Retrieve using:
kubectl get secret -n monitoring prometheus-grafana -o jsonpath="{.data.admin-password}" | base64 --decode
Now, you can import dashboards and start visualizing Kubernetes metrics!
Verifying the Monitoring Stack
To ensure everything is running smoothly, check the pods:
kubectl get pods -n monitoring
If you see Prometheus, Alertmanager, and Grafana running, congratulations! You now have a fully automated Kubernetes monitoring stack.
Conclusion: Why Use the Prometheus Operator?
By using the Prometheus Operator, we achieved:
Simplified monitoring stack deployment
Automated service discovery for metrics collection
Centralized alerting with Alertmanager
Interactive dashboards with Grafana
With this setup, you can scale, extend, and customize monitoring based on your infrastructure needs.
Let me know if you have any questions in the comments! ![]()

