新着:プロジェクトの最新情報をTwitterMastodonで入手してください。

Cloudflare

Cloudflareを使用するには、2種類のトークンのいずれかを使用できます。APIトークンは、特定のゾーンと権限にバインドされたアプリケーションスコープのキーを許可しますが、APIキーは、アカウントと同じ権限を持つグローバルスコープのキーです。

APIトークンは、より制限的な権限を持ち、より簡単に取り消すことができるため、より高いセキュリティのために推奨されます。

APIトークン

トークンは、ユーザープロファイル > APIトークン > APIトークンで作成できます。次の設定が推奨されます。

  • 権限
    • ゾーン - DNS - 編集
    • ゾーン - ゾーン - 読み取り
  • ゾーンリソース
    • 含める - すべてのゾーン

新しいIssuerを作成するには、まず新しいAPIトークンを含むKubernetesシークレットを作成します

apiVersion: v1
kind: Secret
metadata:
name: cloudflare-api-token-secret
type: Opaque
stringData:
api-token: <API Token>

次に、Issuerマニフェストで

apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: example-issuer
spec:
acme:
...
solvers:
- dns01:
cloudflare:
apiTokenSecretRef:
name: cloudflare-api-token-secret
key: api-token

APIキー

APIキーは、ユーザープロファイル > APIトークン > APIキー > グローバルAPIキー > 表示で取得できます。

新しいIssuerを作成するには、まずAPIキーを含むKubernetesシークレットを作成します

apiVersion: v1
kind: Secret
metadata:
name: cloudflare-api-key-secret
type: Opaque
stringData:
api-key: <API Key>

次に、Issuerマニフェストで

apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: example-issuer
spec:
acme:
...
solvers:
- dns01:
cloudflare:
email: my-cloudflare-acc@example.com
apiKeySecretRef:
name: cloudflare-api-key-secret
key: api-key

トラブルシューティング

アクターcom.cloudflare.api.token.xxxxは、ゾーンをリストするためにcom.cloudflare.api.account.zone.list権限が必要です

トークンにゾーンをリストするための正しい権限がないというエラーが表示された場合は、2つの原因が考えられます。

  1. トークンにゾーン - ゾーン - 読み取り権限がない
  2. cert-managerがDNSの問題によりドメインの誤ったゾーン名を特定した

2番目の問題の場合は、以下のようなエラーが表示されます。

Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Started 6s cert-manager Challenge scheduled for processing
Warning 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が次のTLDのDNSレコードを更新するためのAPIの使用をブロックしているため、これに遭遇する可能性があります: .cf, .ga, .gq, .ml および .tk。これについては、Cloudflare Communityで説明されています。これらのTLDを使用する場合は、別のDNSプロバイダーを使用することをお勧めします。