{"id":18745761,"url":"https://github.com/moshloop/awesome-controllers","last_synced_at":"2025-11-23T13:30:23.377Z","repository":{"id":138334120,"uuid":"169897450","full_name":"moshloop/awesome-controllers","owner":"moshloop","description":null,"archived":false,"fork":false,"pushed_at":"2019-02-24T07:06:24.000Z","size":12,"stargazers_count":8,"open_issues_count":0,"forks_count":0,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-10-29T16:57:40.145Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/moshloop.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2019-02-09T18:14:12.000Z","updated_at":"2024-02-23T09:01:26.000Z","dependencies_parsed_at":"2024-01-15T20:47:01.524Z","dependency_job_id":"e7afce4e-c74e-4fad-8648-9c7c7541752b","html_url":"https://github.com/moshloop/awesome-controllers","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moshloop%2Fawesome-controllers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moshloop%2Fawesome-controllers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moshloop%2Fawesome-controllers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moshloop%2Fawesome-controllers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/moshloop","download_url":"https://codeload.github.com/moshloop/awesome-controllers/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239627234,"owners_count":19670844,"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":[],"created_at":"2024-11-07T16:19:35.252Z","updated_at":"2025-11-23T13:30:23.344Z","avatar_url":"https://github.com/moshloop.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"\n\n## Operators vs Controllers\n\nAn operator is a specifc type of controller that provides a higher level of abstraction for deploying complex resources using custom resource definitions (CRD's). While a controller normally extends or configures existing resources, an operator deploys the resources themeselves.\n\nSee [awesome-operators](https://github.com/operator-framework/awesome-operators).\n\n### Autoscaling / Scheduling\n\n| Controller                                                   | Description                                                  |\n| ------------------------------------------------------------ | ------------------------------------------------------------ |\n| [uswitch/sqs-autoscaler-controller](https://github.com/uswitch/sqs-autoscaler-controller) |                                                              |\n| [hjacobs/kube-aws-autoscaler](https://github.com/hjacobs/kube-aws-autoscaler) | cluster autoscaler for AWS Auto Scaling Groups               |\n| [pusher/k8s-spot-rescheduler](https://github.com/pusher/k8s-spot-rescheduler) | Tries to move pods from on-demand to spot instances          |\n| [hex108/cron-hpa-controller](https://github.com/hex108/cron-hpa-controller) |                                                              |\n| [estafette/estafette-gke-preemptible-killer](https://github.com/estafette/estafette-gke-preemptible-killer) | ensures deletion of preemptible nodes in a GKE cluster is spread out to avoid the risk of all getting deleted at the same time after 24 hour |\n| [atlassian/escalator](https://github.com/atlassian/escalator) | batch or job optimized horizontal autoscaler                 |\n| [deislabs/osiris](https://github.com/deislabs/osiris)        | Scale to zero component                                      |\n| [kubernetes-incubator/descheduler](https://github.com/kubernetes-incubator/descheduler) |                                                              |\n| [open-policy-agent/opa-kube-scheduler](https://github.com/open-policy-agent/opa-kube-scheduler) | A policy-enabled scheduler                                   |\n\n\n\n### Cleanup\n\n| Controller                                                   | Description                                                  |\n| ------------------------------------------------------------ | ------------------------------------------------------------ |\n| [lwolf/kube-cleanup-operator](https://github.com/lwolf/kube-cleanup-operator) | automatically delete completed jobs and their pods           |\n| [hjacobs / kube-job-cleaner](https://github.com/hjacobs/kube-job-cleaner) | delete complete/failed jobs after one hour                   |\n| [planetlabs / draino](https://github.com/planetlabs/draino)  | cordon and drain nodes based on node conditions              |\n| [weaveworks/kured](https://github.com/weaveworks/kured)      | node reboot daemon                                           |\n| [target/pod-reaper](https://github.com/target/pod-reaper)    | delete pods based on matching conditions                     |\n| [lachie83/pod-requeue](https://github.com/lachie83/pod-requeue) | recreate failed pods stuck in InsufficientFreeCPU or OutOfcpu states |\n| [gardener-attic/auto-node-repair](https://github.com/gardener-attic/auto-node-repair) |                                                              |\n| [stakater/Jamadar](https://github.com/stakater/Jamadar)      | cleans up resources after a predefined timeout               |\n\n\n\n### Networking\n\n*Controllers that expose networking related functions likeload balancers / DNS outside the scope of CNI.*.\n*See [cni#3rd-party-plugins](https://github.com/containernetworking/cni#3rd-party-plugins) for a list of CNI plugins, some of which do provide similar functionality*\n\n| Controller                                                   | Description                                                  |\n| ------------------------------------------------------------ | ------------------------------------------------------------ |\n| [external-dns](https://github.com/kubernetes-incubator/external-dns) | configure external DNS (Route53, CloudDNS, etc) for ingresses and services |\n| [google/metalb](https://github.com/google/metallb)           | load balancer implemented using ARP or BGP                   |\n| [sapcc/kube-parrot](https://github.com/sapcc/kube-parrot)    | dynamically announces routes with BGP                        |\n| [pickledrick/vpc-peering-operator](https://github.com/pickledrick/vpc-peering-operator) | manage the lifecycle of AWS VPC Peering Connections          |\n| [wikiwi/kube-dns-sync](https://github.com/wikiwi/kube-dns-sync) | syncs Node IPs to a DNS service                              |\n| [zekizeki/ingressdns](https://github.com/zekizeki/ingressdns) |                                                              |\n| [estafette/estafette-cloudflare-dns](https://github.com/estafette/estafette-cloudflare-dns) |                                                              |\n| [aledbf/kube-keepalived-vip](https://github.com/aledbf/kube-keepalived-vip) | VIPs using keepalived                                        |\n| [tiglabs/jupiter](https://github.com/tiglabs/jupiter)        | high-performance L4 network load balance service based on DPDK. |\n| [szuecs/kube-static-egress-controller](https://github.com/szuecs/kube-static-egress-controller) |                                                              |\n| [travisghansen/kubernetes-pfsense-controller](https://github.com/travisghansen/kubernetes-pfsense-controller) |                                                              |\n| [Mirantis/k8s-externalipcontroller](https://github.com/Mirantis/k8s-externalipcontroller) |                                                              |\n\n\n\n### Chaos / Loading Testing\n\n| Controller                                                   | Description                              |\n| ------------------------------------------------------------ | ---------------------------------------- |\n| [atomix/chaos-controller](https://github.com/atomix/chaos-controller) |                                          |\n| [target/pod-reaper](https://github.com/target/pod-reaper)    | delete pods based on matching conditions |\n| [lotusload/lotus](https://github.com/lotusload/lotus)        |                                          |\n\n\n\n### Multi-Cluster\n\n| Controller                                                   | Description                                                  |\n| ------------------------------------------------------------ | ------------------------------------------------------------ |\n| [admiraltyio/multicluster-scheduler](https://github.com/admiraltyio/multicluster-scheduler) |                                                              |\n| [oracle/federated-ingress-controller](https://github.com/oracle/federated-ingress-controller) |                                                              |\n| [github/kube-service-exporter](https://github.com/github/kube-service-exporter) | Export load balancer services to consul                      |\n| [hashicorp/consul-k8s](https://github.com/hashicorp/consul-k8s) | Sync Consul services into first-class Kubernetes services and vice versa |\n| [vmware/k8s-endpoints-sync-controller](https://github.com/vmware/k8s-endpoints-sync-controller) |                                                              |\n| [awslabs/aws-eks-cluster-controller](https://github.com/awslabs/aws-eks-cluster-controller) |                                                              |\n| [gardener/machine-controller-manager](https://github.com/gardener/machine-controller-manager) |                                                              |\n| [pharmer/cloud-controller-manager](https://github.com/pharmer/cloud-controller-manager) |                                                              |\n| [samsung-cnct/cluster-controller](https://github.com/samsung-cnct/cluster-controller) |                                                              |\n\n\n\n### Namespaces\n\n| Controller                                                   | Description                                                  |\n| ------------------------------------------------------------ | ------------------------------------------------------------ |\n| [mittwald/kubernetes-replicator](https://github.com/mittwald/kubernetes-replicator) | controller for synchronizing secrets \u0026 config maps across namespaces |\n| [upmc-enterprises/registry-creds](https://github.com/upmc-enterprises/registry-creds) | Allow for AWS ECR and Google Registry credentials to be refreshed inside your Kubernetes cluster via ImagePullSecrets |\n| [raffaelespazzoli/namespace-configuration-controller](https://github.com/raffaelespazzoli/namespace-configuration-controller) | keeps a namespace's configuration aligned with one of more policies specified as a CRD |\n| [cruise-automation/rbacsync](https://github.com/cruise-automation/rbacsync) |                                                              |\n| [tumblr/k8s-config-projector](https://github.com/tumblr/k8s-config-projector) | Create Kubernetes ConfigMaps from configuration files        |\n| [stakater/ProxyInjector](https://github.com/stakater/ProxyInjector) | inject an authentication proxy container to relevant pods    |\n\n\n\n\n### Admission\n\n| Controller                                                   | Description                                              |\n| ------------------------------------------------------------ | -------------------------------------------------------- |\n| [open-policy-agent/kubernetes-policy-controller](https://github.com/open-policy-agent/kubernetes-policy-controller) | Open Policy Agent Admission controller                   |\n| [replicatedhq/gatekeeper](https://github.com/replicatedhq/gatekeeper) | Alternative dynamic admission contollers via OPA         |\n| [yahoo/k8s-ingress-claim](https://github.com/yahoo/k8s-ingress-claim) | Safeguards against duplicate claiming of hosts / domains |\n| [jainishshah17/tugger](https://github.com/jainishshah17/tugger) | Enforce pulling docker images from a private registry    |\n| [stefanprodan/kubesec-webhook](https://github.com/stefanprodan/kubesec-webhook) | Enforces minimum kubesec.io scores                       |\n| [UKHomeOffice/policy-admission](https://github.com/UKHomeOffice/policy-admission) | Policy enforcement via standard rules and JavaScript     |\n| [lachie83/internallb-webhook-admission-controller](https://github.com/lachie83/internallb-webhook-admission-controller) | Enforces only internal cloud load balancers              |\n| [jasonrichardsmith/sentry](https://github.com/jasonrichardsmith/sentry) | Policy enforcement for limits, images, health            |\n| [IBM/portieris](https://github.com/IBM/portieris)            | Image trust enforcement with Notary / Content Trust      |\n| [yahoo/k8s-namespace-guard](https://github.com/yahoo/k8s-namespace-guard) | Prevents accidental deletion of namespaces               |\n| [mikkeloscar/pdb-controller](https://github.com/mikkeloscar/pdb-controller) | Adds default Pod Disruption Budgets                      |\n| [target/portauthority](https://github.com/target/portauthority) | Leverages Clair to scan k8s clusters for vulnerabilities |\n\n\n\n### Ingress\n\n| Controller                                                   | Description                                                  |\n| ------------------------------------------------------------ | ------------------------------------------------------------ |\n| [hxquangnhat/kubernetes-auto-ingress](https://github.com/hxquangnhat/kubernetes-auto-ingress) | Dynamically create an ingress for an associated service      |\n| [jenkins-x/exposecontroller](https://github.com/jenkins-x/exposecontroller) | Automatically expose services creating ingress rules, openshift routes or modifying services to use kubernetes nodePort or loadBalancer service types |\n| [torchbox/k8s-ts-ingress](https://github.com/torchbox/k8s-ts-ingress) | Traffic Server ingress controller                            |\n| [stakater/Xposer](https://github.com/stakater/Xposer)        | watch for services and dynamically create an Ingress with a TLS certificate |\n| [stakater/IngressMonitorController](https://github.com/stakater/IngressMonitorController) | monitor ingresses and create alerts on Pingdom, UptimeRobot and StatusCake |\n| [uswitch/yggdrasil](https://github.com/uswitch/yggdrasil)    | Envoy control plane for multi-cluster ingress                |\n| [zalando-incubator/stackset-controller](https://github.com/zalando-incubator/stackset-controller) | application life cycle controller and traffic switching      |\n| [stefanprodan/flagger](https://github.com/stefanprodan/flagger) | Istio progressive delivery Kubernetes operator               |\n| [bretagne-peiqi/lvs-nginx-controller](https://github.com/bretagne-peiqi/lvs-nginx-controller) |                                                              |\n| [citrix/citrix-k8s-ingress-controller](https://github.com/citrix/citrix-k8s-ingress-controller) |                                                              |\n|                                                              |                                                              |\n| [wehco/caddy-ingress-controller](https://github.com/wehco/caddy-ingress-controller) |                                                              |\n| [hootsuite/sens8](https://github.com/hootsuite/sens8)        |                                                              |\n| [YakLabs/kube-openresty-ingress](https://github.com/YakLabs/kube-openresty-ingress) |                                                              |\n| [philips/backplane-kubernetes-ingress](https://github.com/philips/backplane-kubernetes-ingress) |                                                              |\n| [mercari/certificate-expiry-monitor-controller](https://github.com/mercari/certificate-expiry-monitor-controller) |                                                              |\n| [nilebox/kanarini](https://github.com/nilebox/kanarini)      | Canary deployment controller                                 |\n| [webrelay/ingress](https://github.com/webrelay/ingress)      | Map tunnels to ingress for [webhookrelay.com](webhookrelay.com) |\n\n\n\n### Reloaders\n\n*Controllers that take action such as restarting a pod or deployment when watched resource such as configmaps and secrets change.*\n\n| Controller                                                   | Description                                                  |\n| ------------------------------------------------------------ | ------------------------------------------------------------ |\n| [keel-hq/keel](https://github.com/keel-hq/keel)              | Automate Helm, DaemonSet, StatefulSet \u0026 Deployment updates based on image updates |\n| [xing/kubernetes-deployment-restart-controller](https://github.com/xing/kubernetes-deployment-restart-controller) |                                                              |\n| [mfojtik/k8s-trigger-controller](https://github.com/mfojtik/k8s-trigger-controller) |                                                              |\n| [pusher/wave](https://github.com/pusher/wave)                |                                                              |\n| [stakater/Reloader](https://github.com/stakater/Reloader)    |                                                              |\n| [stakater/Chowkidar](https://github.com/stakater/Chowkidar)  |                                                              |\n| [GoogleCloudPlatform/freshpod](https://github.com/GoogleCloudPlatform/freshpod) | Restart Pods on Minikube automatically on image rebuilds     |\n\n### GitOps\n\n| Controller                                              | Description |\n| ------------------------------------------------------- | ----------- |\n| [weavework/flux](https://github.com/weaveworks/flux)    |             |\n| [argoproj/argo-cd](https://github.com/argoproj/argo-cd) |             |\n| [box/kube-applier](https://github.com/box/kube-applier) |             |\n| [hasura/gitkube](https://github.com/hasura/gitkube)     |             |\n| [pusher/faros](https://github.com/pusher/faros)         |             |\n\n\n\n### Development Tools\n\n*Libraries used for building new controllers*\n\n| Tool                                                         | Description                                          |\n| ------------------------------------------------------------ | ---------------------------------------------------- |\n| [pusher/git-store](https://github.com/pusher/git-store)  ||\n| [ianlewis/controllerutil](https://github.com/ianlewis/controllerutil)  ||\n| [gojektech/kubehandler](https://github.com/gojektech/kubehandler)  ||\n| [Microsoft/frameworkcontroller](https://github.com/Microsoft/frameworkcontroller)  ||\n| [GoogleCloudPlatform/metacontroller](https://github.com/GoogleCloudPlatform/metacontroller)  ||\n| [atlassian/ctrl](https://github.com/atlassian/ctrl)  ||\n| [kudobuilder/kudo](https://github.com/kudobuilder/kudo) | Kubernetes Universal Declarative Operator (KUDO)     |\n| [slok/kubewebhook](https://github.com/slok/kubewebhook) |                                                      |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoshloop%2Fawesome-controllers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmoshloop%2Fawesome-controllers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoshloop%2Fawesome-controllers/lists"}