{"id":20661438,"url":"https://github.com/hypervideo/cloudflare-dns-operator","last_synced_at":"2026-02-28T12:38:31.483Z","repository":{"id":257824068,"uuid":"871432314","full_name":"hypervideo/cloudflare-dns-operator","owner":"hypervideo","description":"This is a kubernetes operator to manage cloudflare DNS entries from within kubernetes.","archived":false,"fork":false,"pushed_at":"2025-03-23T02:09:53.000Z","size":410,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-23T02:25:40.203Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hypervideo.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":"2024-10-12T00:49:53.000Z","updated_at":"2025-03-01T03:52:46.000Z","dependencies_parsed_at":null,"dependency_job_id":"67d229b8-cf31-474a-be7c-4240bb89c093","html_url":"https://github.com/hypervideo/cloudflare-dns-operator","commit_stats":null,"previous_names":["hypervideo/cloudflare-dns-operator"],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hypervideo%2Fcloudflare-dns-operator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hypervideo%2Fcloudflare-dns-operator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hypervideo%2Fcloudflare-dns-operator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hypervideo%2Fcloudflare-dns-operator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hypervideo","download_url":"https://codeload.github.com/hypervideo/cloudflare-dns-operator/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249725304,"owners_count":21316159,"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-16T19:09:42.544Z","updated_at":"2026-02-28T12:38:26.418Z","avatar_url":"https://github.com/hypervideo.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# cloudflare-dns-operator\n\n[![Crates.io](https://img.shields.io/crates/v/cloudflare-dns-operator)](https://crates.io/crates/cloudflare-dns-operator)\n[![](https://docs.rs/cloudflare-dns-operator/badge.svg)](https://docs.rs/cloudflare-dns-operator)\n[![License](https://img.shields.io/crates/l/cloudflare-dns-operator?color=informational\u0026logo=mpl-2)](/LICENSE)\n\n[This is a kubernetes operator](https://kubernetes.io/docs/concepts/extend-kubernetes/operator/) (custom resource definition + kubernetes controller) to manage cloudflare DNS entries from within kubernetes using the cloudflare API.\n\n__Note:__ This is an unofficial project and not affiliated in any way with cloudflare.\n\n### Installation\n\nIn your kubernetes cluster install the [`crds.yaml`](./crds.yaml) file and a deployment matching\n[examples/deployment.yaml](./examples/deployment.yaml). Note that you'll need to set the env var\n`CLOUDFLARE_API_TOKEN` to a valid cloudflare API token.\n\nThis sets up the controller as a deployment. It'll watch for `CloudflareDNSRecord` resources and\ncreate/update/delete DNS records in cloudflare.\n\nYou can optionally have the controller check the records by doing DNS lookups from 1.1.1.1. The resolution result\nwill be reflected in the `status.pending` field of the `CloudflareDNSRecord` resource. For this to be enabled, set\nthe env var `CHECK_DNS_RESOLUTION` to a human readable duration like `5m` or `1h` or `60s`.\n\nYou can then create a new DNS record like this:\n\n```yaml\napiVersion: dns.cloudflare.com/v1alpha1\nkind: CloudflareDNSRecord\nmetadata:\n  name: my-cloudflare-dns-record\nspec:\n  name: foo.example.com\n  type: A\n  ttl: 3600\n  content:\n    value: \"1.2.3.4\"\n  zone:\n    name:\n      value: example.com\n  comment: \"Managed by the Cloudflare DNS Operator\"\n  tags:\n    - k8s\n```\n\nYou can also automatically expose IPs from LoadBalancer services or external IP services by referencing a service in\nthe `content` instead of a static IP:\n\n```yaml\n# ...\n  content:\n    service:\n      name: traefik\n      namespace: traefik\n# ...\n```\n\nThe zone can also be set with a `secret` or `configMap` reference like this:\n\n```yaml\n# ...\n  zone:\n    name:\n      from:\n        secret:\n          name: cloudflare-dns-secret\n          key: zone-name\n# ...\n```\n\nSee [CloudflareDNSRecordSpec](https://docs.rs/cloudflare-dns-operator/latest/cloudflare_dns_operator/resources/struct.CloudflareDNSRecordSpec.html) for more details.\n\nLicense: MPL-2.0\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhypervideo%2Fcloudflare-dns-operator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhypervideo%2Fcloudflare-dns-operator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhypervideo%2Fcloudflare-dns-operator/lists"}