簡體   English   中英

k8s 無法使用 cert-manager 為 GoDaddy 域生成 Let's Encrypt 證書

[英]k8s Unable to generate Let's Encrypt Certificates for GoDaddy Domains using cert-manager

我使用 GoDaddy 管理我的 DNS,我希望為我的 kubernetes 部署生成 Lets Encrypt 證書。 但是,嘗試生成證書會產生錯誤

I0728 17:31:12.123952       1 dns.go:88] cert-manager/controller/challenges/Present "msg"="presenting DNS01 challenge for domain" "dnsName"="XXXX" "domain"="XXX" "resource_kind"="Challenge" "resource_name"="letsencrypt-staging-bflxn-153714257-3821133841" "resource_namespace"="default" "resource_version"="v1" "type"="DNS-01" 
E0728 17:31:12.129511       1 controller.go:163] cert-manager/controller/challenges "msg"="re-queuing item due to error processing" "error"="godaddy.acme.mycompany.com is forbidden: User \"system:serviceaccount:cert-manager:cert-manager\" cannot create resource \"godaddy\" in API group \"acme.mycompany.com\" at the cluster scope" "key"="default/letsencrypt-staging-bflxn-153714257-3821133841" 

我相信這個問題的核心是我的ClusterIssuergroupNamesolver應該是什么。

secret.yml

apiVersion: v1
kind: Secret
metadata:
  name: godaddy-api-key
  namespace: cert-manager
type: Opaque
stringData:
  token: GO_DADDY_KEY:GO_DADDY_SECRET

issuer.yml

apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt-staging
spec:
  acme:
    server: https://acme-staging-v02.api.letsencrypt.org/directory
    email: XXXX
    privateKeySecretRef:
      name: letsencrypt-staging
    solvers:
      - selector:
          dnsNames:
          - '*.company.com'
        dns01:
          webhook:
            config:
              apiKeySecretRef:
                name: godaddy-api-key
                key: token
              production: true
              ttl: 600
            groupName: acme.mycompany.com
            solverName: godaddy

注意:我嘗試了 groupName 的不同排列,包括使用唯一域但沒有成功

apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: letsencrypt-staging
spec:
  secretName: letsencrypt-staging
  renewBefore: 240h
  dnsNames:
    - "*.company.com"
  issuerRef:
    name: letsencrypt-staging
    kind: ClusterIssuer

但是永遠不會生成證書

$ k get certificate letsencrypt-staging 
NAME                  READY   SECRET                AGE
letsencrypt-staging   False   letsencrypt-staging   8m27s

我正在使用這個 webhook https://github.com/snowdrop/godaddy-webhook

我也遇到了這個問題。 我通過添加缺少的ClusterRoleClusterRolebinding來修復它。 這是為我解決問題的清單。

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: dns-challenge-missing-role
rules:
- apiGroups: ["acme.mycompany.com"] # "" indicates the core API group
  resources: ["godaddy"]
  verbs: ["*"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: dns-challenge-missing-role-binding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: dns-challenge-missing-role
subjects:
- kind: ServiceAccount
  name: cert-manager
  namespace: cert-manager

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM