当前位置: 首页 > 知识库问答 >
问题:

无法使用 Azure DNS 区域使用 Kubernetes 和 Letsencrypt 创建通配符 (*) 证书

莫宝
2023-03-14

我对 Kubernetes 很陌生。但到目前为止,能够配置AKS(Azure Kubernetes Services)群集。我的服务有多个命名空间(开发、阶段、生产)。并使用nginx配置了一个入口服务(进入它自己的命名空间“ingress-nginx”)。该设置与HTTP完美配合。

当我试图使用HTTPS时,我的问题就开始了。使用此脚本首次安装证书管理器。它再次创建了自己的名称空间:“cert-manager”我没有使用HELM只是常规清单。也遵循MS Azure DNS配置。

一切似乎都是正确的,我有我的服务,秘密,集群发布者,等等。甚至在Azure DNS区域创建挑战。你可以在Azure门户上看到它。但是我没有拿到任何证书。

群集颁发者配置:

apiVersion: cert-manager.io/v1alpha2
kind: ClusterIssuer
metadata:
  name: 8b3s-org-letsencrypt
spec:
  acme:
    #server: https://acme-v02.api.letsencrypt.org/directory
    server: https://acme-staging-v02.api.letsencrypt.org/directory
    email: <...@gmail.com>
    privateKeySecretRef:
      name: 8b3s-org-letsencrypt-key
    solvers:
    - selector:
      dns01:
        azuredns:
          clientID: ....
          clientSecretSecretRef:
          # The following is the secret we created in Kubernetes. Issuer will use this to present challenge to Azure DNS.
            name: azuredns-config
            key: client-secret
          subscriptionID: ....
          tenantID: "...."
          resourceGroupName: Web
          hostedZoneName: 8b3s.org
          # Azure Cloud Environment, default to AzurePublicCloud
          environment: AzurePublicCloud

入口配置:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: 8b3s-virtual-host-ingress
  namespace: ingress-nginx
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/rewrite-target: /
    cert-manager.io/cluster-issuer: "8b3s-org-letsencrypt"
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
    nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
    kubernetes.io/tls-acme: "true"
    nginx.ingress.kubernetes.io/tls-acme: "true"
spec:
  tls:
  - hosts:
     - '*.8b3s.org'
    secretName: 8b3s-org-letsencrypt-tls
  rules:
  - host: dev.8b3s.org
    http:
      paths:
      - path: /
        backend:
          serviceName: the8b3shtml" target="_blank">website-development-ext
          servicePort: 8080

所以问题是,每个配置似乎都可以,但根本没有证书。我只有一张“不透明”的照片。key:1679 bytes”作为“cert-manager”命名空间中的“8b3s org letsencrypt key”。

为“ingress nginx”命名空间“8b3s org letsencrypt tls”创建的证书类型为“kubernetes.io/tls”。但大约。crt:0字节”和“tls”。crt:0字节。

我还查看了证书管理器的输出。发现这两个日志很奇怪(如果需要,我有完整的日志):

I0222 22:51:00.067791       1 acme.go:201] cert-manager/controller/certificaterequests-issuer-acme/sign "msg"="acme Order resource is not in a ready state, waiting..." "related_resource_kind"="Order" "related_resource_name"="8b3s-org-letsencrypt-tls-1807766204-3808299645" "related_resource_namespace"="ingress-nginx" "resource_kind"="CertificateRequest" "resource_name"="8b3s-org-letsencrypt-tls-1807766204" "resource_namespace"="ingress-nginx" 

I0222 22:51:00.068069       1 sync.go:129] cert-manager/controller/orders "msg"="Creating additional Challenge resources to complete Order" "resource_kind"="Order" "resource_name"="8b3s-org-letsencrypt-tls-1807766204-3808299645" "resource_namespace"="ingress-nginx" 

E0222 22:51:01.876182       1 sync.go:184] cert-manager/controller/challenges "msg"="propagation check failed" "error"="DNS record for \"8b3s.org\" not yet propagated" "dnsName"="8b3s.org" "resource_kind"="Challenge" "resource_name"="8b3s-org-letsencrypt-tls-1807766204-3808299645-481622463" "resource_namespace"="ingress-nginx" "type"="dns-01" 

知道问题出在哪里吗?

更新:按照建议将 Azure NS 记录添加到我的域 DNS。等了一个小时左右,但没有效果...删除了现有的CA机密,重新启动了所有Nginx,证书管理器Pod。并注意到以下错误:

E0225 10:14:03.671099       1 util.go:71] cert-manager/controller/certificaterequests/handleOwnedResource "msg"="error getting order referenced by resource" "error"="certificaterequest.cert-manager.io \"8b3s-org-letsencrypt-tls-1807766204\" not found" "related_resource_kind"="CertificateRequest" "related_resource_name"="8b3s-org-letsencrypt-tls-1807766204" "related_resource_namespace"="ingress-nginx" "resource_kind"="Order" "resource_name"="8b3s-org-letsencrypt-tls-1807766204-3808299645" "resource_namespace"="ingress-nginx" 
E0225 10:14:03.674679       1 util.go:71] cert-manager/controller/certificates/handleOwnedResource "msg"="error getting order referenced by resource" "error"="certificate.cert-manager.io \"8b3s-org-letsencrypt-tls\" not found" "related_resource_kind"="Certificate" "related_resource_name"="8b3s-org-letsencrypt-tls" "related_resource_namespace"="ingress-nginx" "resource_kind"="CertificateRequest" "resource_name"="8b3s-org-letsencrypt-tls-1807766204" "resource_namespace"="ingress-nginx" 

共有1个答案

锺离鸿
2023-03-14

域的whois记录显示它仍然指向NS57.DOMAINCONTROL.COM,而不是您在屏幕截图中显示的4个Azure DNS解析器。因此,让我们加密无法知道他们应该使用Azure查找_acme-挑战记录,并且它失败了。

 类似资料:
  • 我正在尝试用cert-manager、istio ingress和LetsEncrypt在kubernetes中配置SSL证书。我已经安装了istio和helm,cert-manager,创建了ClusterIssuer,然后我试图创建一个证书。acme挑战无法验证,我正在尝试使用http01进行验证,但无法解决如何使用istio ingress进行验证的问题。Istio部署有以下选项: 证书配置

  • 我试图使用RabbitMQ cluster Kubernetes操作符创建一个RabbitMQ实例,但是PersistentVolumeClaims存在一个问题。我正在使用Docker Desktop for Windows运行Kubernetes 1.18.8。 为什么不自动创建卷,我应该做什么?

  • 怎么了 我试图使用kubernetes python客户机在kubernetes中创建自定义资源定义,但我无法这样做,如果有人能解释我在这里做错了什么,那将会很有帮助 null

  • 我按照https://github.com/Kubernetes/sample-controller的示例创建了一个Kubernetes CRD。 我看了一下其他标准类型,我不知道他们是否实现了这样的接口。我在谷歌上搜索,但没有得到任何运气。 有什么想法吗?请帮忙。顺便说一句,我在Minikube上跑步。

  • 运行时收到此错误。

  • 我正在阅读OracleDocGenericmethod中的泛型方法。当它说什么时候使用通配符和什么时候使用泛型方法时,我对比较感到很困惑。引用文档。 我们本可以在这里使用通用方法: [...]这告诉我们类型参数正被用于多态;它的唯一作用是允许在不同的调用站点使用各种实际的参数类型。如果是这样的话,应该使用通配符。通配符旨在支持灵活的子类型,这就是我们在这里试图表达的。 我们不觉得像《代码》(Col