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
疑難排解
角色 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 error for POST "/zones/<id>/dns_records
通用錯誤
您可能會遇到此問題,因為 Cloudflare 會阻止使用 API 來更新以下 TLD 的 DNS 記錄:.cf
、.ga
、.gq
、.ml
和 .tk
。這在Cloudflare 社群中討論過。我們建議在使用這些 TLD 時使用替代的 DNS 提供者。