Giter Club home page Giter Club logo

ingressmonitorcontroller's Introduction

imc-logo Ingress Monitor Controller

An operator to watch ingresses/routes and create liveness alerts for your apps/microservices in Uptime checkers.

Get started with Stakater

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 operator will continuously watch ingresses/routes based on defined EndpointMonitor custom resource, 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

Adding configuration

Configure the uptime checker configuration in the config.yaml based on your uptime provider. Add create a secret imc-config that holds config.yaml key:

kind: Secret
apiVersion: v1
metadata:
  name: imc-config
data:
  config.yaml: >-
    <BASE64_ENCODED_CONFIG.YAML>
type: Opaque

Configuration Parameters

Following are the available options that you can use to customize the controller:

Key Description
providers An array of uptime providers that you want to add to your controller
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)
resyncPeriod Resync period in seconds, allows to re-sync periodically the monitors with the Routes. Defaults to 0 (= disabled)
creationDelay CreationDelay is a duration string to add a delay before creating new monitor (e.g., to allow DNS to catch up first)
monitorNameTemplate Template for monitor name eg, {{.Namespace}}-{{.Name}}
  • Replace BASE64_ENCODED_CONFIG.YAML with your config.yaml file that is encoded in base64.
  • For detailed guide for the configuration refer to Docs and go through configuration guidelines for your uptime provider.
  • For sample config.yaml files refer to Sample Configs.
  • Name of secret can be changed by setting environment variable CONFIG_SECRET_NAME.

Add EndpointMonitor

EndpointMonitor resource can be used to manage monitors on static urls or route/ingress references.

  • Specifying url:
apiVersion: endpointmonitor.stakater.com/v1alpha1
kind: EndpointMonitor
metadata:
  name: stakater
spec:
  forceHttps: true
  url: https://stakater.com
  • Specifying route reference:
apiVersion: endpointmonitor.stakater.com/v1alpha1
kind: EndpointMonitor
metadata:
  name: frontend
spec:
  forceHttps: true
  urlFrom:
    routeRef:
      name: frontend
  • Specifying ingress reference:
apiVersion: endpointmonitor.stakater.com/v1alpha1
kind: EndpointMonitor
metadata:
  name: frontend
spec:
  forceHttps: true
  urlFrom:
    ingressRef:
      name: frontend

NOTE: For provider specific additional configuration refer to Docs and go through configuration guidelines for your uptime provider.

Deploying the Operator

The following quickstart let's you set up Ingress Monitor Controller to register uptime monitors for endpoints:

Helm Chart

If 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

# Install CRDs
kubectl apply -f https://raw.githubusercontent.com/stakater/IngressMonitorController/master/charts/ingressmonitorcontroller/crds/endpointmonitor.stakater.com_endpointmonitors.yaml

# Install chart
helm repo add stakater https://stakater.github.io/stakater-charts

helm repo update

helm install stakater/ingressmonitorcontroller

Vanilla Manifests

  1. Clone this repository
    $ git clone [email protected]:stakater/IngressMonitorController.git
  1. Deploy dependencies(crds):
    $ make deploy

Environment Variables

Key Default Description
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)
CONFIG_SECRET_NAME imc-config Name of secret that holds the configuration
REQUEUE_TIME 300 seconds Integer value to specify number of seconds after which the resource should be reconciled again

Help

Documentation

You can find more detailed documentation for configuration, extension, and support for other Uptime checkers etc. here

Contributing

If you'd like to contribute any fixes or enhancements, please refer to the documentation here

Have a question?

File a GitHub issue.

Talk to us on Slack

Join and talk to us on the #tools-ingressmonitor channel for discussing the Ingress Monitor Controller

Join Slack Chat

Known Issues

  • 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.

License

Apache2 © Stakater

About

The IngressMonitorController is maintained by Stakater. Like it? Please let us know at [email protected]

See our other projects or contact us in case of professional services and queries on [email protected]

Contributors

Stakater Team and the Open Source community! 🏆

ingressmonitorcontroller's People

Contributors

ahmedwaleedmalik avatar waseem-h avatar stakater-user avatar kahootali avatar hazim1093 avatar usamaahmadkhan avatar hussnain612 avatar muneebaijaz avatar faizanahmad055 avatar aliartiza75 avatar rasheedamir avatar anish-gupta-bose avatar muneebstakater avatar twardnw avatar artemlive avatar alandotcom avatar tuananhnguyen-ct avatar jess-belliveau avatar gempesaw avatar daveshepherd avatar lilshah avatar ahsan-storm avatar abdulhaseeb2 avatar msiegenthaler avatar talha0324 avatar nickspizzas avatar c123r avatar adamstrawson avatar switchtv-benbettridge avatar e9169 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.