用途
Cloudflare DNS 技能用于通过 Cloudflare REST API 管理 Cloudflare DNS,重点面向 Azure 托管的工作负载。它把 Cloudflare 作为 Azure 应用的权威 DNS 提供商时所需的操作集中在一处,包括 API Token 配置与安全、DNS 记录管理、代理设置、Kubernetes External-DNS 集成,以及故障排查与监控。
主要能力
- 认证与安全:推荐使用作用域 API Token 而非 Global API Key。所需权限为 Zone > Zone(Read,用于列出区域)和 Zone > DNS(Edit,用于管理 DNS 记录)。可在 Cloudflare Dashboard 的 My Profile > API Tokens 中创建自定义 Token,并限制到特定区域,可选 IP 过滤。文档提供了 Token 验证命令。
- DNS 记录管理:支持 A、AAAA、CNAME、TXT、MX 记录的查询、创建、更新(PUT 全量、PATCH 部分)与删除。查询支持按类型过滤、按名称搜索。示例包含 A 记录(代理与仅 DNS)、CNAME、TXT(如 DMARC)、MX(含 priority)等。
- 代理设置(橙云/灰云):说明何时启用代理(Web 应用、REST API、静态网站、WebSockets)与何时禁用(邮件服务器 MX、SSH、FTP、自定义 TCP/UDP、VPN 端点),并给出通过 PATCH 切换 proxied 的命令。
- External-DNS 集成:提供 Kubernetes Secret 创建、Helm values 配置(provider 为 cloudflare、CF_API_TOKEN 环境变量、cloudflare-proxied、分页、sources、domainFilters、txtOwnerId、txtPrefix、policy、interval、日志与资源限制、ServiceMonitor)以及 Ingress 注解(hostname、ttl、cloudflare-proxied、多主机名)。
- 区域管理:列出区域、获取区域详情、读取与更新区域设置(如 SSL 模式)。
- 导入导出:以 BIND 格式导出与导入 DNS 记录,用于备份。
- 故障排查:使用 dig 查询 Cloudflare DNS(1.1.1.1)、判断是否被代理、检查 TXT 所有权记录、全链路追踪、检查 NS;列出常见错误(401、403、429、记录已存在)及解决方案;查看 External-DNS 日志。
- 安全最佳实践:Token 作用域限制、IP 过滤、定期轮换(生产建议每 90 天)、安全存储(Kubernetes Secrets 或 Azure Key Vault)、审计使用;并给出 Token 轮换步骤。
- 速率限制:Cloudflare API 限制为每账户每 5 分钟 1,200 次请求,部分端点每区域每 5 分钟 100 次;提供 External-DNS 优化参数(分页、zone-id-filter、增大 interval)。
- Azure 集成:提供 cert-manager 使用 Cloudflare DNS-01 的 ClusterIssuer 配置,以及 AKS Ingress 配置示例(结合 cert-manager 与 External-DNS 注解)。
使用方式
通过环境变量导出 CF_API_TOKEN 与 CF_ZONE_ID,然后使用 curl 调用 Cloudflare API v4 端点完成各类操作。Kubernetes 场景下通过 Secret 提供 Token,并在 External-DNS 的 Helm values 中引用。文档还附带参考文件(references/api-reference.md、references/azure-integration.md)和辅助脚本(scripts/cloudflare-dns.sh)。
适用场景
- 将 Cloudflare 配置为 Azure 托管应用的权威 DNS 提供商。
- 在 Kubernetes(如 AKS)中通过 External-DNS 自动管理 DNS 记录。
- 使用 cert-manager 的 DNS-01 挑战签发 Let's Encrypt 证书。
- 需要以脚本或 API 方式批量管理 DNS 记录、备份与恢复。
限制与注意事项
- 速率限制按 API Token 计算而非按区域:某个 Token 上的高频 External-DNS 循环会耗尽该 Token 涉及所有区域的 1,200/5 分钟预算,建议将高变更区域拆分到独立 Token。
- 被代理的 A 记录返回 Cloudflare IP 而非源站 IP,dig 显示 104.x.x.x 属正常;源站可达性需通过 Host 头或直接对 Azure 源站 IP 测试。
- 代理开启时 TTL 被忽略,Cloudflare 会覆盖为 Auto(=1);若确需特定 TTL(如 DNS-01 证书流程),需先关闭代理。
- External-DNS 的 txtOwnerId 冲突会跨集群破坏记录:多个集群共用同一 txtOwnerId 会争夺所有权 TXT 记录并静默覆盖彼此的 A 记录,必须使用唯一集群标识。
- policy: sync 会删除非 External-DNS 创建的记录:若手动 A 记录匹配受管主机名模式,sync 模式会在协调时删除它;生产环境必须使用 upsert-only。
- Token 验证端点即使零权限也返回 200:/user/tokens/verify 只确认 Token 存在,不确认是否具备 Zone:Read 或 DNS:Edit;应通过实际列出区域来验证权限作用域。
暂未提供
关于该技能的收费、价格、平台支持范围、具体效果指标等信息,资料中暂未提供。