Ingress Monitor Controller
A Kubernetes/Openshift controller to watch ingresses/routes and create liveness alerts for your apps/microservices in Uptime checkers.
Problem Statement
We want to monitor ingresses in a kubernetes cluster and routes in openshift cluster via any uptime checker but the problem is having to manually check for new ingresses or routes / removed ingresses or routes and add them to the checker or remove them.
Solution
This controller will continuously watch ingresses/routes in specific or all namespaces, and automatically add / remove monitors
in any of the uptime checkers. With the help of this solution, you can keep a check on your services and see whether
they're up and running and live, without worrying about manually registering them on the Uptime checker.
Supported Uptime Checkers
Currently we support the following monitors:
Usage
The following quickstart let's you set up Ingress Monitor Controller to register uptime monitors for ingresses/routes in all namespaces:
-
Download the
manifest file
-
Open the downloaded file in a text editor. Configure the uptime checker in the config.yaml
data for the ConfigMap resource, and set the following properties
Key |
Description |
name |
Name of the provider (e.g. UptimeRobot) |
apiKey |
ApiKey of the provider |
apiURL |
Base url of the ApiProvider with trailing slash (e.g. https://api.uptimerobot.com/v2/) |
alertContacts |
A - separated list of contact id's inside double quotes that you want to add to the monitors (e.g. "1234567_8_9-9876543_2_1" ) |
creationDelay |
A duration string (e.g., "300ms", "1h50s") to delay the creation of a monitor. (default: 0) |
Note: Follow this guide to see how to fetch alertContacts
from UptimeRobot.
Note 1: See the section Using Secrets
here if you do not want to use ConfigMap (because API-Key in plain text) and want to use Secrets to hide API keys
-
Enable for your Ingress/Route
You will need to add the following annotation on your ingresses/routes so that the controller is able to recognize and monitor it.
"monitor.stakater.com/enabled": "true"
-
Deploy the controller by running the following command:
For Kubernetes Cluster
kubectl apply -f ingressmonitorcontroller.yaml -n default
For Openshift Cluster
oc create -f ingressmonitorcontroller.yaml -n default
Helm Charts
Alternatively if you have configured helm on your cluster, you can add ingressmonitorcontroller to helm from helm's public chart repository and deploy it via helm using below mentioned commands
helm repo add stable https://kubernetes-charts.storage.googleapis.com/
helm repo update
helm install stable/ingressmonitorcontroller
Help
Documentation
You can find more detailed documentation for configuration, extension, and support for other Uptime checkers etc. here
Contributig
If you'd like to contribute any fixes or enhancements, please refer to the documentation here
Have a question?
File a GitHub issue, or send us an email.
Talk to us on Slack
Join and talk to us on the #tools-ingressmonitor channel for discussing the Ingress Monitor Controller
License
Apache2 © Stakater
About
The IngressMonitorController
is maintained by Stakater. Like it? Please let us know at hello@stakater.com
See our other projects
or contact us in case of professional services and queries on hello@stakater.com
Contributers
Stakater Team and the Open Source community! 🏆