ingress-controller-controller

module
v0.0.0-...-9f3d7d2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 25, 2018 License: BSD-3-Clause

README

ingress-controller-controller

Why
  • In a microservices environment, it's common to distribute Kubernetes manifests across many Git repositories.
  • It may be desired to manage one or a handful of Ingress objects, rather than one per repo or microservice.
  • It might not be desired to manage them in a centralized location, since among other things, this requires tight coordination between the centralized and the distributed.
  • ingress-controller-controller allows you to manage one or many Ingresss from n number of Service objects, using Annotations.
  • Used it in conjunction with an Ingress Controller and an external-dns controller, Load Balancers and relevant DNS records can be fully automated using simple annotations on Services, GitOps'd in diverse locations.
How it works
  • Watch Services with a certain label via the Kubernetes API, and at each event loop:
    • Use the API to find the list of Services that have the right annotation
    • Calculate a list of desired Ingresss from the annotations
    • Use the API to find the list of Ingresss that have the right annotation
    • Delete any orphaned Ingresss
      • (ingress-controller-controller annotates Ingresss which it created)
    • Apply the desired Ingresss to the API
Example

See examples

Roadmap
  • Add rate limiter
  • Config via flags
  • Fix flaky tests (object comparison sometimes fails when the objects are arranged in different orders)
  • Docs
  • Test for conflicting paths
  • Validations for Annotations
  • DRY up tests
  • E2E tests
  • Metrics

Directories

Path Synopsis
cmd
pkg

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL