Cloudflare
要使用 Cloudflare,您可以使用两种类型的令牌之一。API 令牌允许将应用程序范围的密钥绑定到特定区域和权限,而API 密钥是全局范围的密钥,具有与您的帐户相同的权限。
API 令牌建议用于更高的安全性,因为它们具有更严格的权限,并且更容易撤销。
API 令牌
可以在 **用户资料 > API 令牌 > API 令牌** 创建令牌。建议使用以下设置
- 权限
区域 - DNS - 编辑
区域 - 区域 - 读取
- 区域资源
包含 - 所有区域
要创建一个新的 Issuer
,首先创建一个包含您的新 API 令牌的 Kubernetes 密钥
apiVersion: v1kind: Secretmetadata:name: cloudflare-api-token-secrettype: OpaquestringData:api-token: <API Token>
然后在您的 Issuer
清单文件中
apiVersion: cert-manager.io/v1kind: Issuermetadata:name: example-issuerspec:acme:...solvers:- dns01:cloudflare:apiTokenSecretRef:name: cloudflare-api-token-secretkey: api-token
API 密钥
可以在 **用户资料 > API 令牌 > API 密钥 > 全局 API 密钥 > 查看** 中检索 API 密钥。
要创建一个新的 Issuer
,首先创建一个包含您的 API 密钥的 Kubernetes 密钥
apiVersion: v1kind: Secretmetadata:name: cloudflare-api-key-secrettype: OpaquestringData:api-key: <API Key>
然后在您的 Issuer
清单文件中
apiVersion: cert-manager.io/v1kind: Issuermetadata:name: example-issuerspec:acme:...solvers:- dns01:cloudflare:email: my-cloudflare-acc@example.comapiKeySecretRef:name: cloudflare-api-key-secretkey: api-key
故障排除
Actor com.cloudflare.api.token.xxxx
需要权限 com.cloudflare.api.account.zone.list
来列出区域
如果您收到您的令牌没有正确权限列出区域的错误,可能会有两个原因。
- 令牌缺少
区域 - 区域 - 读取
权限 - cert-manager 由于 DNS 问题识别出了错误的域名区域名称。
在第二个问题的情况下,您将看到以下错误
Events:Type Reason Age From Message---- ------ ---- ---- -------Normal Started 6s cert-manager Challenge scheduled for processingWarning PresentError 3s (x2 over 3s) cert-manager Error presenting challenge: Cloudflare API Error for GET "/zones?name=<TLD>"Error: 0: Actor 'com.cloudflare.api.token.xxxx' requires permission 'com.cloudflare.api.account.zone.list' to list zones
在这种情况下,我们建议您 更改 DNS01 自检命名服务器。
Cloudflare API 错误,用于 POST "/zones/<id>/dns_records` 通用错误
您可能会遇到这种情况,因为 Cloudflare 阻止使用 API 更新以下 TLD 的 DNS 记录:.cf
,.ga
,.gq
,.ml
和 .tk
。这在 Cloudflare 社区 中有讨论。我们建议在使用这些 TLD 时使用其他 DNS 提供商。