• Stars
    star
    479
  • Rank 91,752 (Top 2 %)
  • Language
    Go
  • License
    Apache License 2.0
  • Created over 6 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

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!

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! 🏆

More Repositories

1

Reloader

A Kubernetes controller to watch changes in ConfigMap and Secrets and do rolling upgrades on Pods with their associated Deployment, StatefulSet, DaemonSet and DeploymentConfig – [✩Star] if you're using it!
Go
6,996
star
2

Forecastle

Forecastle is a control panel which dynamically discovers and provides a launchpad to access applications deployed on Kubernetes – [✩Star] if you're using it!
Go
440
star
3

application

Generic helm chart for all kind of applications
Starlark
211
star
4

GitWebhookProxy

A proxy to let webhooks reach running services behind a firewall – [✩Star] if you're using it!
Go
182
star
5

Konfigurator

A kubernetes operator that dynamically generates and manages app configuration based on kubernetes resources – [✩Star] if you're using it!
Go
91
star
6

til

📝 Today I Learned
88
star
7

ProxyInjector

A Kubernetes controller to inject an authentication proxy container to relevant pods - [✩Star] if you're using it!
Go
88
star
8

developer-handbook

A developer handbook!
Dockerfile
86
star
9

Chowkidar

A kubernetes controller that watches/observes events & then takes configured actions – [✩Star] if you're using it!
Go
55
star
10

Jamadar

A kubernetes controller which cleans up cluster left-overs – [✩Star] if you're using it!
Go
45
star
11

Xposer

A Kubernetes controller to manage (create/update/delete) Kubernetes Ingresses based on the Service - [✩Star] if you are using it!
Go
32
star
12

microservices-testing

how to test microservices based applications? Moved to: https://github.com/stakater/developer-handbook
26
star
13

slack-operator

Kubernetes operator for Slack
Go
19
star
14

tbd-cd-workflow

trunk based development continuous delivery workflow; Moved to: https://github.com/stakater/developer-handbook
18
star
15

aws-terraform-recipes

aws-terraform-recipes
HCL
17
star
16

Playbook

Stakater playbook and documentation!
Dockerfile
15
star
17

stakater-pipeline-library

A repo for managing pipelines for Jenkins
Groovy
15
star
18

Whitelister

A tool to white list node and developer IPs for kubernetes.
Go
14
star
19

StakaterPlatform

Stakater platform provides out of the box stacks to control, monitor, log, trace and security for applications deployed on kubernetes using CI/CD pipelines.
Shell
14
star
20

jira-service-desk-operator

Kubernetes operator for Jira Service Desk
Go
13
star
21

blueprint-network-aws

Stakater Blueprint for creating best-practices network on AWS. Stakater is an Infrastructure-as-Code DevOps solution to automate the creation of web infrastructure stack on AWS. Stakater is based on Docker, CoreOS, Terraform, Packer, Docker Compose, GoCD, Fleet, ETCD, and more.
HCL
13
star
22

ami-baker

Build custom AMI (Amazon Machine Image) on top of CoreOS
Shell
11
star
23

Scaler

A tool to modify auto scaling groups.
Go
11
star
24

StakaterNordmart

A repo to deploy nordmart microservices
Shell
11
star
25

stakater-charts

Public helm charts of opensource apps
9
star
26

infrastructure-reference

Reference infrastructure for Stakater blueprints. Stakater is an Infrastructure-as-Code DevOps solution to automate the creation of web infrastructure stack on AWS. Stakater is based on Docker, CoreOS, Terraform, Packer, Docker Compose, GoCD, Fleet, ETCD, and more.
Shell
9
star
27

docker-images

Docker Images
Dockerfile
7
star
28

nordmart-apps-gitops-config

Tenant's namespace scoped apps are deployed via this gitops config repository
7
star
29

kops-cluster-templates

A set of templates to create different kubernetes clusters using kops.
Shell
6
star
30

blueprint-storage-aws

Stakater Blueprint for creating best-practices based storage on AWS. Stakater is an Infrastructure-as-Code DevOps solution to automate the creation of web infrastructure stack on AWS. Stakater is based on Docker, CoreOS, Terraform, Packer, Docker Compose, GoCD, Fleet, ETCD, and more.
HCL
6
star
31

terraform-azure-openshift

OpenShift on Azure with Terraform!
HCL
5
star
32

employee-handbook

Handbook for Stakater Employees
Dockerfile
5
star
33

blueprint-utilities-aws

Stakater Blueprint for small utility modules on AWS. Stakater is an Infrastructure-as-Code DevOps solution to automate the creation of web infrastructure stack on AWS. Stakater is based on Docker, CoreOS, Terraform, Packer, Docker Compose, GoCD, Fleet, ETCD, and more.
HCL
5
star
34

ForecastleIcons

Collection of icons which can be referenced in Forecastle
4
star
35

charts

Stakater OpenSource Helm Charts
Smarty
4
star
36

mto-docs

Multi Tenant Operator (MTO) Documentation
Dockerfile
4
star
37

tekton-catalog

Collection of Tekton Tasks
Starlark
3
star
38

openshift-infra-gitops-example

An example gitops repo for openshift internal infrastructure
Jinja
3
star
39

StakaterCloudDocs

Stakater Cloud Documentation
JavaScript
3
star
40

house-keeper

start & stop AWS servers | night watcher | night savings
Shell
3
star
41

multiple-ingress-controllers

multiple nginx ingress controllers running on kubernetes on AWS
Shell
3
star
42

dockerfile-kafka-with-consul-template

Dockerfile of Kafka with consul template
Shell
3
star
43

dockerfile-logrotate

Dockerized Logrotate
2
star
44

operator-utils

Utility library to support operators
Go
2
star
45

continuous-integration-deployment

what is continuous integration? what is continuous delivery? what is continuous deployment? what is release strategy?
2
star
46

go-cd

Go CD template
Shell
2
star
47

blueprint-static-site-aws

A repo for creating a static web site deployment stack using aws s3 bucket, route53, and cloudfront
HCL
2
star
48

terraform-module-postgres

postgres setup on Amazon AWS using Terraform and Ansible
HCL
2
star
49

dockerfile-pipeline-tools

Image containing all the tools required for pipelines
Dockerfile
2
star
50

terraform-module-github

Terraform modules for github used for setting up a GitHub organization
HCL
2
star
51

dockerfile-nexus

Docker image for Sonatype Nexus
Shell
2
star
52

dockerfile-nginx-with-consul-template

dockerfile of nginx with consul template
Shell
2
star
53

ztp-pipeline-toolbox

ztp-pipeline-toolbox
Dockerfile
2
star
54

grafana-cloud-ansible-operator

Grafana cloud operator
Makefile
2
star
55

stakater-devops-labs

The Lab for the DevOps Workshop with Kubernetes and Containers
Java
2
star
56

dockerfile-logstash-with-consul-template

Dockerfile of Logstash with consul template
Shell
2
star
57

dockerfile-maven-jenkins

Dockerfile for Maven with Jenkins user, for Jenkins Slave
Dockerfile
2
star
58

dockerfile-maven-centos

CentOS 7 --> Java 1.8 --> Maven 3.5.4
Dockerfile
2
star
59

blueprint-instance-pool-aws

Stakater Blueprint for creating best-practices based instance pool on AWS. Stakater is an Infrastructure-as-Code DevOps solution to automate the creation of web infrastructure stack on AWS. Stakater is based on Docker, CoreOS, Terraform, Packer, Docker Compose, GoCD, Fleet, ETCD, and more.
HCL
2
star
60

terraform-aws-certificate

Certificate Generation for AWS(route 53) hosted domain using Terraform!
HCL
2
star
61

prod-deployment-reference

Stakater sub-module for infrastructure-reference and a practical reference implementation of Production deployment using custom AMI. Stakater is an Infrastructure-as-Code DevOps solution to automate the creation of web infrastructure stack on AWS, based on Docker, Terraform, and more.
HCL
2
star
62

StakaterDeliveryStack

A Stack to Setup Release(CI/CD) Apps on Kubernetes Cluster via Helm Charts i.e. Jenkins, Nexus, Chartmuseum etc.
Groovy
1
star
63

vocabulary

Stakater Vocabulary
1
star
64

pipeline-library

Libraries, utils and tools required by stakater pipelines
Shell
1
star
65

git-set-commit-status

Set commit status
Python
1
star
66

dockerfile-elasticsearch

Dockerfile for Elasticsearch
Shell
1
star
67

dockerfile-grails3

Docker File for grails 3
1
star
68

infrastructure-app-units

systemd unit files for infrastructure applications
1
star
69

operator-template

Template project for operators
Go
1
star
70

java-test-app-ci-and-versioning

Spring based Test app for CI and versioning
Java
1
star
71

dockerfile-awscli

Dockerfile for AWS CLI
1
star
72

openshift4-ansible

Setup Openshift4 via ansible
Jinja
1
star
73

stakater-reference-app-java

reference app for stakater
Java
1
star
74

dockerfile-logstash

Dockerfile of Logstash
Shell
1
star
75

dockerfile-jenkins

dockerfile for jenkins
Shell
1
star
76

provider-databricks

Databricks Crossplane provider
Go
1
star
77

terraform-module-gitlab

Terraform modules for gitlab used for setting up a GitLab Organization
HCL
1
star
78

workshop-operator

A Kubernetes Operator to install the infrastructure for running workshops/bootcamps on OpenShift.
Go
1
star
79

secrets-management

how to manage secrets?
1
star
80

coreos-and-consul-cluster-via-terraform

coreos-and-consul-cluster-via-terraform
HCL
1
star
81

dockerfile-filebeat-with-consul-template

dockerfile of filebeat with consul template
Shell
1
star
82

resume-renderer

Custom renderer for Stakater resumes
TypeScript
1
star
83

mysql-backup-glacier

Python
1
star
84

dockerfile-java

Java dockerfiles
1
star
85

coreos-vagrant-with-consul-elk

CoreOS Cluster on Vagrant with ELK Stack and Service Registration & Discovery through Consul
Ruby
1
star
86

roadmap

roadmap of stakater
1
star
87

cloud-exits

A collection of cloud exit stories
1
star
88

blueprint-solo-instance-aws

Blueprint for creating best-practices based solo instance on AWS
HCL
1
star
89

stakater-tekton-chart

Jumbo chart for creating pipeline manifests
Smarty
1
star