{"id":16540942,"url":"https://github.com/linki/manifest-controller","last_synced_at":"2026-04-29T10:33:38.310Z","repository":{"id":57604182,"uuid":"67931917","full_name":"linki/manifest-controller","owner":"linki","description":"manifest-controller watches remote Kubernetes manifests and applies them to your cluster.","archived":false,"fork":false,"pushed_at":"2017-02-26T19:35:38.000Z","size":2409,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-14T08:51:57.223Z","etag":null,"topics":["continuous-deployment","go","kubernetes"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/linki.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}},"created_at":"2016-09-11T13:40:34.000Z","updated_at":"2017-02-01T01:39:04.000Z","dependencies_parsed_at":"2022-09-04T13:51:59.229Z","dependency_job_id":null,"html_url":"https://github.com/linki/manifest-controller","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linki%2Fmanifest-controller","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linki%2Fmanifest-controller/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linki%2Fmanifest-controller/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linki%2Fmanifest-controller/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/linki","download_url":"https://codeload.github.com/linki/manifest-controller/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241783293,"owners_count":20019517,"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":["continuous-deployment","go","kubernetes"],"created_at":"2024-10-11T18:53:42.340Z","updated_at":"2026-04-29T10:33:33.290Z","avatar_url":"https://github.com/linki.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# manifest-controller\n[![Build Status](https://travis-ci.org/linki/manifest-controller.svg?branch=master)](https://travis-ci.org/linki/manifest-controller)\n[![Build Status](https://drone.factorio.linki.space/api/badges/linki/manifest-controller/status.svg)](https://drone.factorio.linki.space/linki/manifest-controller)\n[![Coverage Status](https://coveralls.io/repos/github/linki/manifest-controller/badge.svg?branch=master)](https://coveralls.io/github/linki/manifest-controller?branch=master)\n[![Go Report Card](https://goreportcard.com/badge/github.com/linki/manifest-controller)](https://goreportcard.com/report/github.com/linki/manifest-controller)\n\nmanifest-controller watches remote Kubernetes manifests and applies them to your cluster.\n\n# Purpose\n\nThink of the `kubelet` but for your cluster. The `kubelet` runs on a single node and watches a source of Kubernetes\nmanifests, e.g. on some path on the filesystem or a remote HTTP endpoint, and tells the container runtime on that node\nto run the respective containers.\n\nmanifest-controller runs in a single cluster and watches a source of Kubernetes manifests and tells the Kubernetes API server of that\ncluster  to run the respective manifests. Currently, any OAuth2 protected HTTP endpoint is supported as a source.\n\n# Usage\n\n```\n$ manifest-controller \\\n    --cluster=http://127.0.0.1:8001 \\\n    --source=https://raw.githubusercontent.com/kubernetes/kubernetes/master/examples/elasticsearch/es-svc.yaml \\\n    --source=https://raw.githubusercontent.com/kubernetes/kubernetes/master/examples/elasticsearch/es-rc.yaml \\\n    --source=https://raw.githubusercontent.com/kubernetes/kubernetes/master/examples/elasticsearch/service-account.yaml \\\n    [--source=another-source ... \\]\n    --token=a-personal-github-access-token \\\n```\n\nThis watches the three example manifest files of the `github.com/kubernetes` repostiory on the `master` branch.\nIf there's any changes pushed to those files on the master branch, `manifest-controller` will apply them.\n\nNote, that any HTTP server that serves `yaml` files and uses the `Authorization: Bearer \u003ctoken\u003e` method to\nauthenticate clients will work. So instead of an HTTP server pointing to your Github repository content, as seen above,\nyou could easily run your own more tailored solution, e.g. https://manifests.me/?cluster=foo\u0026env=bar could return\ndynamicly generated `yaml` specifically for that cluster.\n\n# Caveats\n\nThe controller will only `kubectl apply` the files it watches, so it cannot handle deletions currently.\nFurthermore, API objects that don't handle `apply` correctly will also not work as expected, e.g. daemon sets aren't\nupdated by `apply` at the moment.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinki%2Fmanifest-controller","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flinki%2Fmanifest-controller","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinki%2Fmanifest-controller/lists"}