{"id":18044605,"url":"https://github.com/stakater/ingressmonitorcontroller","last_synced_at":"2025-05-16T06:03:39.688Z","repository":{"id":29631186,"uuid":"122295777","full_name":"stakater/IngressMonitorController","owner":"stakater","description":"A Kubernetes controller to watch ingresses and create liveness alerts for your apps/microservices in UptimeRobot, StatusCake, Pingdom, etc.  – [✩Star] if you're using it!","archived":false,"fork":false,"pushed_at":"2025-05-16T01:08:22.000Z","size":73947,"stargazers_count":655,"open_issues_count":67,"forks_count":112,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-05-16T06:02:01.462Z","etag":null,"topics":["controller","hacktoberfest","helm","helm-charts","ingress","isup","k8s","kubernetes","live","monitor","openshift","pingdom","stakater","statuscake","uptime-checker","uptimerobot"],"latest_commit_sha":null,"homepage":"https://stakater.com","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stakater.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-02-21T05:18:14.000Z","updated_at":"2025-05-14T23:05:27.000Z","dependencies_parsed_at":"2023-10-23T15:01:07.938Z","dependency_job_id":"8660a33b-6e86-48f7-954f-b99376aa79e4","html_url":"https://github.com/stakater/IngressMonitorController","commit_stats":null,"previous_names":[],"tags_count":198,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stakater%2FIngressMonitorController","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stakater%2FIngressMonitorController/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stakater%2FIngressMonitorController/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stakater%2FIngressMonitorController/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stakater","download_url":"https://codeload.github.com/stakater/IngressMonitorController/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254478186,"owners_count":22077675,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["controller","hacktoberfest","helm","helm-charts","ingress","isup","k8s","kubernetes","live","monitor","openshift","pingdom","stakater","statuscake","uptime-checker","uptimerobot"],"created_at":"2024-10-30T18:09:34.421Z","updated_at":"2025-05-16T06:03:39.564Z","avatar_url":"https://github.com/stakater.png","language":"Go","readme":"# ![imc-logo](docs/images/IMC-round-100px.png) Ingress Monitor Controller\n\nAn operator to watch ingresses/routes and create liveness alerts for your apps/microservices in Uptime checkers.\n\n[![Get started with Stakater](https://stakater.github.io/README/stakater-github-banner.png)](https://stakater.com/?utm_source=IngressMonitorController\u0026utm_medium=github)\n\n## Problem Statement\n\nWe 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.\n\n## Solution\n\nThis operator will continuously watch ingresses/routes based on defined `EndpointMonitor` custom resource, and\nautomatically add / remove monitors in any of the uptime checkers. With the help of this solution, you can keep a check\non your services and see whether they're up and running and live, without worrying about manually registering them on\nthe Uptime checker.\n\n## Supported Uptime Checkers\n\nCurrently we support the following monitors:\n\n- [UptimeRobot](https://uptimerobot.com) ([Additional Config](docs/uptimerobot-configuration.md))\n- [Pingdom](https://pingdom.com) ([Additional Config](docs/pingdom-configuration.md)) (Not fully tested)\n- [StatusCake](https://www.statuscake.com) ([Additional Config](docs/statuscake-configuration.md))\n- [Uptime](https://uptime.com) ([Additional Config](docs/uptime-configurations.md))\n- [Updown](https://updown.io/) ([Additional Config](docs/updown-configuration.md))\n- [Application Insights](https://docs.microsoft.com/en-us/azure/azure-monitor/app/monitor-web-app-availability) ([Additional Config](docs/appinsights-configuration.md))\n- [gcloud](https://cloud.google.com/monitoring/uptime-checks) ([Additional Config](docs/gcloud-configuration.md))\n- [Grafana](https://grafana.com/grafana/plugins/grafana-synthetic-monitoring-app/) ([Additional Config](docs/grafana-configuration.md))\n\n## Usage\n\n### Adding configuration\n\nConfigure the uptime checker configuration in the `config.yaml` based on your uptime provider. Add create a secret\n`imc-config` that holds `config.yaml` key:\n\n```yaml\nkind: Secret\napiVersion: v1\nmetadata:\n  name: imc-config\ndata:\n  config.yaml: \u003e-\n    \u003cBASE64_ENCODED_CONFIG.YAML\u003e\ntype: Opaque\n```\n\n#### Configuration Parameters\n\nFollowing are the available options that you can use to customize the controller:\n\n| Key                   | Description                                                                                                                                                                       |\n| --------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| providers             | An array of uptime providers that you want to add to your controller                                                                                                              |\n| enableMonitorDeletion | A safeguard flag that is used to enable or disable monitor deletion on ingress deletion (Useful for prod environments where you don't want to remove monitor on ingress deletion) |\n| resyncPeriod          | Resync period in seconds, allows to re-sync periodically the monitors with the Routes. Defaults to 0 (= disabled)                                                                 |\n| creationDelay         | CreationDelay is a duration string to add a delay before creating new monitor (e.g., to allow DNS to catch up first)                                                              |\n| monitorNameTemplate   | Template for monitor name eg, `{{.Namespace}}-{{.Name}}`                                                                                                                          |\n\n- Replace `BASE64_ENCODED_CONFIG.YAML` with your config.yaml file that is encoded in base64.\n- For detailed guide for the configuration refer to [Docs](./docs) and go through configuration guidelines for your uptime provider.\n- For sample `config.yaml` files refer to [Sample Configs](examples/configs).\n- Name of secret can be changed by setting environment variable `CONFIG_SECRET_NAME`.\n\n### Add EndpointMonitor\n\n`EndpointMonitor` resource can be used to manage monitors on static urls or route/ingress references.\n\n- Specifying url:\n\n```yaml\napiVersion: endpointmonitor.stakater.com/v1alpha1\nkind: EndpointMonitor\nmetadata:\n  name: stakater\nspec:\n  forceHttps: true\n  url: https://stakater.com\n```\n\n- Specifying route reference:\n\n```yaml\napiVersion: endpointmonitor.stakater.com/v1alpha1\nkind: EndpointMonitor\nmetadata:\n  name: frontend\nspec:\n  forceHttps: true\n  urlFrom:\n    routeRef:\n      name: frontend\n```\n\n- Specifying ingress reference:\n\n```yaml\napiVersion: endpointmonitor.stakater.com/v1alpha1\nkind: EndpointMonitor\nmetadata:\n  name: frontend\nspec:\n  forceHttps: true\n  urlFrom:\n    ingressRef:\n      name: frontend\n```\n\nNOTE: For provider specific additional configuration refer to [Docs](./docs) and go through configuration guidelines for your uptime provider.\n\n## Deploying the Operator\n\nThe following quickstart let's you set up Ingress Monitor Controller to register uptime monitors for endpoints:\n\n## Helm Chart\n\nIf you have configured helm on your cluster, you can deploy IngressMonitorController via helm using below mentioned commands. For details on chart, see [IMC Helm Chart](https://github.com/stakater/IngressMonitorController/tree/master/charts/ingressmonitorcontroller)\n\n```sh\n# Install CRDs\nkubectl apply -f https://raw.githubusercontent.com/stakater/IngressMonitorController/master/charts/ingressmonitorcontroller/crds/endpointmonitor.stakater.com_endpointmonitors.yaml\n\n# Install chart\nhelm repo add stakater https://stakater.github.io/stakater-charts\n\nhelm repo update\n\nhelm install stakater/ingressmonitorcontroller\n```\n\n## Vanilla Manifests\n\n1. Clone this repository\n\n```terminal\n    $ git clone git@github.com:stakater/IngressMonitorController.git\n```\n\n2. Deploy dependencies(crds):\n\n```terminal\n    $ make deploy\n```\n\n### Environment Variables\n\n| Key                | Default                                 | Description                                                                                            |\n| ------------------ | --------------------------------------- | ------------------------------------------------------------------------------------------------------ |\n| WATCH_NAMESPACE    | Namespace in which operator is deployed | Use comma separated list of namespaces or leave the field empty to watch all namespaces(cluster scope) |\n| CONFIG_SECRET_NAME | imc-config                              | Name of secret that holds the configuration                                                            |\n| REQUEUE_TIME       | 300 seconds                             | Integer value to specify number of seconds after which the resource should be reconciled again         |\n\n## Help\n\n### Documentation\n\nYou can find more detailed documentation for configuration, extension, and support for other Uptime checkers etc. [here](https://github.com/stakater/IngressMonitorController/tree/master/docs)\n\n### Contributing\n\nIf you'd like to contribute any fixes or enhancements, please refer to the documentation [here](CONTRIBUTING.md)\n\n### Have a question?\n\nFile a GitHub [issue](https://github.com/stakater/IngressMonitorController/issues).\n\n### Talk to us on Slack\n\nJoin and talk to us on the #tools-ingressmonitor channel for discussing the Ingress Monitor Controller\n\n[![Join Slack](https://stakater.github.io/README/stakater-join-slack-btn.png)](https://slack.stakater.com/)\n[![Chat](https://stakater.github.io/README/stakater-chat-btn.png)](https://stakater-community.slack.com/messages/CA66MMYSE)\n\n## Known Issues\n\n- Latest image of kube-rbac-proxy fails on openshift with permission issues. To resolve use `registry.redhat.io/openshift4/ose-kube-rbac-proxy:v4.7.0` instead of kube-rbac-proxy. This issue can be tracked [here](https://github.com/operator-framework/operator-sdk/issues/4684).\n\n## License\n\nApache2 © [Stakater][website]\n\n## About\n\nThe `IngressMonitorController` is maintained by [Stakater][website]. Like it? Please let us know at \u003chello@stakater.com\u003e\n\nSee [our other projects](https://github.com/stakater)\nor contact us in case of professional services and queries on \u003chello@stakater.com\u003e\n\n[website]: https://stakater.com/\n\n## Contributors\n\nStakater Team and the Open Source community! :trophy:\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstakater%2Fingressmonitorcontroller","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstakater%2Fingressmonitorcontroller","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstakater%2Fingressmonitorcontroller/lists"}