Files
ljwx-k8s/CLOUDFLARE-TOKEN-GUIDE.md
2026-02-20 22:50:45 +08:00

4.7 KiB
Raw Permalink Blame History

Cloudflare API Token 创建指南

创建用于 cert-manager 的 Cloudflare API Token

步骤 1: 登录 Cloudflare

  1. 访问 https://dash.cloudflare.com/login
  2. 使用您的账号登录

步骤 2: 进入 API Token 页面

  1. 登录后,点击右上角的头像/账号图标
  2. 在下拉菜单中选择 "My Profile" (我的个人资料)
  3. 在左侧菜单中找到并点击 "API Tokens"
  4. 或者直接访问: https://dash.cloudflare.com/profile/api-tokens

步骤 3: 创建新的 API Token

  1. 点击页面上的 "Create Token" (创建令牌) 按钮

  2. 您会看到几个模板选项,找到 "Edit zone DNS" (编辑区域 DNS) 模板

    • 点击该模板右侧的 "Use template" (使用模板) 按钮

步骤 4: 配置 Token 权限

在配置页面,确保以下设置:

Permissions (权限):

Zone - DNS - Edit
Zone - Zone - Read

这两个权限是必需的:

  • DNS Edit: 允许 cert-manager 创建和删除 DNS TXT 记录用于验证
  • Zone Read: 允许 cert-manager 读取区域信息

Zone Resources (区域资源):

选项 1: 所有区域 (推荐用于测试)

Zone Resources:
  Include - All zones

选项 2: 特定区域 (推荐用于生产)

Zone Resources:
  Include - Specific zone - omniverseai.net

如果您有多个域名,可以选择 "All zones"。如果只需要为 omniverseai.net 签发证书,选择 "Specific zone"。

Client IP Address Filtering (可选)

如果您知道 Kubernetes 集群的出口 IP,可以限制 Token 只能从该 IP 使用:

Client IP Address Filtering:
  Is in - <Your Kubernetes cluster IP>

建议初次配置时留空,等确认工作后再添加 IP 限制。

TTL (Token 有效期)

建议设置较长的有效期或永不过期:

TTL: Start Date - <今天>
     End Date - <1年后> 或留空 (永不过期)

步骤 5: 创建并复制 Token

  1. 检查配置无误后,点击页面底部的 "Continue to summary" (继续查看摘要)

  2. 查看权限摘要,确认无误后点击 "Create Token" (创建令牌)

  3. 重要: Token 创建后会显示一次,必须立即复制!

    Token 格式类似:
    abcdefghijklmnopqrstuvwxyz1234567890ABCD
    
  4. 点击 "Copy" 按钮复制完整的 Token

  5. 注意: 这个 Token 只会显示一次,离开页面后无法再次查看!如果丢失,需要重新创建新的 Token

步骤 6: 验证 Token 格式

正确的 Cloudflare API Token 应该:

  • 长度为 40 个字符
  • 包含字母(大小写)和数字
  • 示例格式: 29ea7a06f68bcfa9e1c804f2e24770e9c530ABCD

步骤 7: 在 Kubernetes 中创建 Secret

复制 Token 后,在 Kubernetes 中创建 Secret:

kubectl create secret generic cloudflare-api-token \
  --from-literal=api-token="<你的完整40字符Token>" \
  -n cert-manager \
  --dry-run=client -o yaml | kubectl apply -f -

或者直接更新:

kubectl delete secret cloudflare-api-token -n cert-manager
kubectl create secret generic cloudflare-api-token \
  --from-literal=api-token="<你的完整40字符Token>" \
  -n cert-manager

步骤 8: 验证 Token 可用

使用 curl 测试 Token 是否有效:

# 替换 YOUR_TOKEN 为实际 Token
curl -X GET "https://api.cloudflare.com/client/v4/user/tokens/verify" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json"

成功响应示例:

{
  "result": {
    "id": "...",
    "status": "active"
  },
  "success": true,
  "errors": [],
  "messages": []
}

故障排查

Token 无效

  • 确认 Token 完整复制(40 字符)
  • 检查 Token 未过期
  • 确认权限包含 DNS Edit 和 Zone Read

cert-manager 无法使用 Token

  • 检查 Secret 名称是否为 cloudflare-api-token
  • 检查 Secret 的 key 是否为 api-token
  • 确认 Token 有访问 omniverseai.net 区域的权限

快速参考

最小权限配置

Permissions:
  Zone - DNS - Edit
  Zone - Zone - Read

Zone Resources:
  Include - Specific zone - omniverseai.net

IP Filtering: (留空)

TTL: (永不过期)

创建 Secret 命令

# 删除旧 Secret(如果存在)
kubectl delete secret cloudflare-api-token -n cert-manager 2>/dev/null

# 创建新 Secret(替换 YOUR_40_CHAR_TOKEN)
kubectl create secret generic cloudflare-api-token \
  --from-literal=api-token="YOUR_40_CHAR_TOKEN" \
  -n cert-manager

# 验证 Secret
kubectl get secret cloudflare-api-token -n cert-manager -o jsonpath='{.data.api-token}' | base64 -d

重启 cert-manager 使新 Token 生效

kubectl rollout restart deployment cert-manager -n cert-manager

下一步: 创建 Token 后,将完整的 40 字符 Token 提供给我,我会更新 Kubernetes Secret 并继续测试证书签发。