4.7 KiB
4.7 KiB
Cloudflare API Token 创建指南
创建用于 cert-manager 的 Cloudflare API Token
步骤 1: 登录 Cloudflare
- 访问 https://dash.cloudflare.com/login
- 使用您的账号登录
步骤 2: 进入 API Token 页面
- 登录后,点击右上角的头像/账号图标
- 在下拉菜单中选择 "My Profile" (我的个人资料)
- 在左侧菜单中找到并点击 "API Tokens"
- 或者直接访问: https://dash.cloudflare.com/profile/api-tokens
步骤 3: 创建新的 API Token
-
点击页面上的 "Create Token" (创建令牌) 按钮
-
您会看到几个模板选项,找到 "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
-
检查配置无误后,点击页面底部的 "Continue to summary" (继续查看摘要)
-
查看权限摘要,确认无误后点击 "Create Token" (创建令牌)
-
重要: Token 创建后会显示一次,必须立即复制!
Token 格式类似: abcdefghijklmnopqrstuvwxyz1234567890ABCD -
点击 "Copy" 按钮复制完整的 Token
-
注意: 这个 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 并继续测试证书签发。