ssl - 无法列出 *v1alpha1.Order : orders. certmanager.k8s.io 被禁止

标签 ssl kubernetes ssl-certificate cert-manager

几个月前我配置了自动 SSL 证书管理,如下所述:http://docs.cert-manager.io/en/latest/tutorials/acme/dns-validation.html 对于域:<myhost>.comdev.<myhost>.com . 所以我有两个命名空间:prod对于 <myhost>.comdev对于 dev.<myhost>.com .在每个 namespace 中,我都有入口 Controller 和 Certificate将证书存储到 secret 的资源。 它工作正常并且ClusterIssuer自动更新证书。

但几天前我尝试添加新域:test.<myhost>.comtest入口和证书配置完全相同的命名空间 如 proddev命名空间(期望主机名和命名空间):

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
    nginx.ingress.kubernetes.io/proxy-send-timeout: "600"
    kubernetes.io/tls-acme: 'true'
  name: app-ingress
  namespace: test
spec:
  tls:
  - hosts:
    - test.<myhost>.com
    secretName: letsencrypt-tls
  rules:
    - host: test.<myhost>.com
      http:
        paths:
        - backend:
            serviceName: web
            servicePort: 80
          path: /
---
apiVersion: certmanager.k8s.io/v1alpha1
kind: Certificate
metadata:
  name: cert-letsencrypt
  namespace: test
spec:
  secretName: letsencrypt-tls
  issuerRef:
    name: letsencrypt-prod-dns
    kind: ClusterIssuer
  commonName: 'test.<myhost>.com'
  dnsNames:
  - test.<myhost>.com
  acme:
    config:
    - dns01:
        provider: dns
      domains:
      - test.<myhost>.com

并且此配置不起作用:无法 secret 找到证书,入口正在使用“app-ingress-fake-certificate”。

cert-manager pod 显示了很多类似的错误:

pkg/client/informers/externalversions/factory.go:72: Failed to list *v1alpha1.Challenge: challenges.certmanager.k8s.io is forbidden: User "system:serviceaccount:kube-system:cert-manager" cannot list challenges.certmanager.k8s.io at the cluster scope
pkg/client/informers/externalversions/factory.go:72: Failed to list *v1alpha1.Order: orders.certmanager.k8s.io is forbidden: User "system:serviceaccount:kube-system:cert-manager" cannot list orders.certmanager.k8s.io at the cluster scope

certificate不尝试获取证书 ( kubectl describe -ntest cert-letsencrypt ):

API Version:  certmanager.k8s.io/v1alpha1
Kind:         Certificate
Metadata: ...
Spec:
  Acme:
    Config:
      Dns 01:
        Provider:  dns
      Domains:
        test.<myhost>.com
  Common Name:  test.<myhost>.com
  Dns Names:
    test.<myhost>.com
  Issuer Ref:
    Kind:       ClusterIssuer
    Name:       letsencrypt-prod-dns
  Secret Name:  letsencrypt-tls
Events:         <none>

它应该在其他命名空间上具有证书的任何状态。

我不明白为什么这个配置以前能用,但现在不能用。

我不确定它是否相关,但几周前我使用 kops 更新了 kubernetes,当前版本是:

Client Version: version.Info{Major:"1", Minor:"12", GitVersion:"v1.12.0", GitCommit:"0ed33881dc4355495f623c6f22e7dd0b7632b7c0", GitTreeState:"archive", BuildDate:"2018-10-12T16:56:06Z", GoVersion:"go1.10.3", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.6", GitCommit:"a21fdbd78dde8f5447f5f6c331f7eb6f80bd684e", GitTreeState:"clean", BuildDate:"2018-07-26T10:04:08Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}

最佳答案

此问题的原因是 Kubernetes 从 1.9 升级到 1.10。要修复它,您需要将证书管理器升级到 0.5.x 版本。

由于错误 https://github.com/jetstack/cert-manager/issues/1134,可能无法使用 helm0.4.x 升级到 0.5.x 在这种情况下,您需要存储所有颁发者和证书配置,然后删除证书管理器 0.4.x 并安装 0.5.x,然后应用第一步中的所有颁发者和证书配置.

关于ssl - 无法列出 *v1alpha1.Order : orders. certmanager.k8s.io 被禁止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53578527/

相关文章:

kubernetes - 运行 kubectl get services 时端口列表中的冒号是什么意思

apache-spark - 如何在没有 kerberos 的情况下启动 spark 3.0.0 kubernetes 工作负载?

Tomcat SSL : No trusted certificate found

ssl-certificate - SSL/TLS 证书中的 IP 地址通配符

python - (Python) 将证书添加到 Bottle 服务器

amazon-web-services - 为什么 Kubernetes 服务 DNS 不起作用?

ssl - 如何配置 Kubernetes Ingress Nginx 白名单只适用于 http

python - 使用 pip 安装时禁用 ssl 证书验证

java - 无法初始化类 javax.crypto.SunJCE_b

magento 安全单页结帐不起作用?