{"id":24625984,"url":"https://github.com/jpeach/envoy-controller","last_synced_at":"2026-05-16T21:38:53.311Z","repository":{"id":66409684,"uuid":"271728728","full_name":"jpeach/envoy-controller","owner":"jpeach","description":"Program Envoy with xDS resources stored in Kubernetes objects.","archived":false,"fork":false,"pushed_at":"2020-11-12T23:21:32.000Z","size":17195,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-01-25T04:47:10.201Z","etag":null,"topics":["envoy","envoyproxy","kubernetes","kubernetes-controller"],"latest_commit_sha":null,"homepage":"","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/jpeach.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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}},"created_at":"2020-06-12T06:46:11.000Z","updated_at":"2022-08-10T08:07:40.000Z","dependencies_parsed_at":"2023-03-10T23:55:41.361Z","dependency_job_id":null,"html_url":"https://github.com/jpeach/envoy-controller","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/jpeach%2Fenvoy-controller","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jpeach%2Fenvoy-controller/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jpeach%2Fenvoy-controller/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jpeach%2Fenvoy-controller/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jpeach","download_url":"https://codeload.github.com/jpeach/envoy-controller/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244525575,"owners_count":20466543,"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":["envoy","envoyproxy","kubernetes","kubernetes-controller"],"created_at":"2025-01-25T04:47:19.443Z","updated_at":"2026-05-16T21:38:48.285Z","avatar_url":"https://github.com/jpeach.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# envoy-controller\n\n`envoy-controller` is a Kubernetes controller that programs an Envoy\ninstance with uninterpreted protobuf resources that are carried by\ncustom resources in the cluster.\n\n## Rationale\n\n`envoy-controller` is unopinionated and does not have an API of its\nown. It exists solely to allow Envoy xDS protobufs to be carried in\nKubernetes CRD resources.\n\nThere are a number of reasons why this could be useful.\n\n1. There are a number of Ingress controllers that use Envoy as a data\n   plane. Each of these has its own way of programming Envoy and Envoy\n   can have only one management server. Programming Envoy via CRDs allows\n   multiple Ingress controllers to program the same Envoy data plane,\n   if they are careful.\n\n2. Ingress controllers rarely expose the full scope of the Envoy API,\n   but operators may need to change the Envoy API resources in fairly\n   arbitrary ways, e.g. injecting metadata, tweaking timeouts.\n   `envoy-controller` makes it possible to write a custom controller\n   to apply policy to Envoy resources that are generated by an Ingress\n   controller.\n\n3. Programming an service into Envoy should be operationally safe (i.e.\n   introducing Ingress configuration errors should not break an existing\n   Envoy configuration). This can be difficult to implement, since when\n   a controller starts, it does not have a persistent store of Envoy\n   configuration to reconcile against. `envoy-controller` provides this\n   persistence layer so that a configuration error at Ingress API layer\n   does not need to perturb the working Envoy resources.\n\n4. If you don't have (or want) a Kubernetes controller, it is relatively\n   simple to use `envoy-controller` to implement other kinds of Envoy\n   workflows. For example, a GitOps workflow could simply apply Envoy\n   resources that are stored as JSON files in Git.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjpeach%2Fenvoy-controller","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjpeach%2Fenvoy-controller","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjpeach%2Fenvoy-controller/lists"}