{"id":35636941,"url":"https://github.com/kubehippie/external-dns-watcher","last_synced_at":"2026-02-16T10:41:31.258Z","repository":{"id":318208220,"uuid":"1070332310","full_name":"kubehippie/external-dns-watcher","owner":"kubehippie","description":"Watch any resource and generate External DNS records","archived":false,"fork":false,"pushed_at":"2026-02-08T04:26:08.000Z","size":293,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-02-08T12:17:08.885Z","etag":null,"topics":["cluster-api","controller","external-dns","operator"],"latest_commit_sha":null,"homepage":null,"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/kubehippie.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-05T18:06:04.000Z","updated_at":"2026-02-08T04:26:12.000Z","dependencies_parsed_at":"2025-10-15T13:21:56.419Z","dependency_job_id":null,"html_url":"https://github.com/kubehippie/external-dns-watcher","commit_stats":null,"previous_names":["kubehippie/external-dns-watcher"],"tags_count":22,"template":false,"template_full_name":null,"purl":"pkg:github/kubehippie/external-dns-watcher","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kubehippie%2Fexternal-dns-watcher","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kubehippie%2Fexternal-dns-watcher/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kubehippie%2Fexternal-dns-watcher/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kubehippie%2Fexternal-dns-watcher/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kubehippie","download_url":"https://codeload.github.com/kubehippie/external-dns-watcher/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kubehippie%2Fexternal-dns-watcher/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29506268,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-16T09:05:14.864Z","status":"ssl_error","status_checked_at":"2026-02-16T08:55:59.364Z","response_time":115,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["cluster-api","controller","external-dns","operator"],"created_at":"2026-01-05T10:09:17.805Z","updated_at":"2026-02-16T10:41:31.237Z","avatar_url":"https://github.com/kubehippie.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# external-dns-watcher\n\n[![GitHub Repo](https://img.shields.io/badge/github-repo-yellowgreen)](https://github.com/kubehippie/external-dns-watcher) [![Artifact Hub](https://img.shields.io/endpoint?url=https://artifacthub.io/badge/repository/kubehippie)](https://artifacthub.io/packages/helm/kubehippie/external-dns-watcher)\n\nThis small controller can watch a configurable set of resources within a\nKubernetes cluster and generate `DNSEndpoint` resources which are part of\n[External DNS][external-dns]. Our primary use case that gets covered are\nresources like `HetznerCluster` created by [Cluster API][cluster-api] where we\nwant to generate DNS records automatically as we don't like to use plain IP\naddresses.\n\n## Instructions\n\nGenerally you should install this project via [Helm][helm], the other options\nare not covered by this document as the chart deployment is the preferred way:\n\n```sh\ncat \u003c\u003c EOF \u003e values.yaml\nfullnameOverride: external-dns-watcher\n\nrbac:\n  extraRules:\n    - apiGroups:\n        - infrastructure.cluster.x-k8s.io\n    resources:\n        - hetznerclusters\n    verbs:\n        - get\n        - list\n        - watch\n\nconfig:\n  watches:\n    - group: infrastructure.cluster.x-k8s.io\n      version: v1beta1\n      kind: HetznerCluster\n      recordTemplate: \"{{ .Name }}-control-plane.example.com\"\n      paths:\n        - path: \"$.status.controlPlaneLoadBalancer.ipv4\"\n          type: A\n        - path: \"$.status.controlPlaneLoadBalancer.ipv6\"\n          type: AAAA\nEOF\n\nhelm install external-dns-watcher oci://ghcr.io/kubehippie/charts/external-dns-watcher --values values.yaml\n```\n\nIf you want to watch different kinds of resources you got to define the watch\nrules and also the required extra RBAC rules, otherwise the operator is not able\nto read the sources. The watch definitions can always use a JSONPath to match\nthe value for the DNS records.\n\n## Development\n\nIf you are not familiar with [Nix][nix] it is up to you to have a working\nenvironment for Go (\u003e= 1.24.0) as the setup won't be covered within this guide.\nPlease follow the official install instructions for [Go][golang] and. Beside\nthat we are using `make` to define all commands to build this project.\n\n```console\ngit clone https://github.com/kubehippie/external-dns-watcher.git\ncd external-dns-watcher\n\nmake build\n./bin/manager -h\n```\n\nIf you got [Nix][nix] and [Direnv][direnv] configured you can simply execute\nthe following commands to get all dependencies including `make` and the required\nruntimes installed:\n\n```console\ncat \u003c\u003c EOF \u003e .envrc\nuse flake . --impure\nEOF\n\ndirenv allow\n```\n\n## Security\n\nIf you find a security issue please contact\n[thomas@webhippie.de](mailto:thomas@webhippie.de) first.\n\n## Contributing\n\nFork -\u003e Patch -\u003e Push -\u003e Pull Request\n\n## Authors\n\n-   [Thomas Boerger](https://github.com/tboerger)\n\n## License\n\nApache-2.0\n\n## Copyright\n\n```console\nCopyright (c) 2025 Thomas Boerger \u003cthomas@webhippie.de\u003e\n```\n\n[external-dns]: https://kubernetes-sigs.github.io/external-dns/\n[cluster-api]: https://cluster-api.sigs.k8s.io/\n[helm]: https://helm.sh/\n[nix]: https://nixos.org/\n[golang]: http://golang.org/doc/install.html\n[direnv]: https://direnv.net/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkubehippie%2Fexternal-dns-watcher","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkubehippie%2Fexternal-dns-watcher","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkubehippie%2Fexternal-dns-watcher/lists"}