Kubernetes 注释cert-manager.io/cluster-issuer:acme-issuer是否足以生成TLS证书?

Kubernetes 注释cert-manager.io/cluster-issuer:acme-issuer是否足以生成TLS证书?,kubernetes,cert-manager,Kubernetes,Cert Manager,从cert manager文档:将注释cert-manager.io/cluster-issuer:acme issuer添加到入口对象应触发垫片,向该颁发者请求证书,并在没有任何命名空间的情况下存储证书?用哪个名字 我试过了,但没用。在入口的yaml定义中添加tls:节会触发垫片,请求证书并将其存储在入口所在的名称空间中 这意味着文档不正确,或者如果没有tls:节,它是否真的可以工作 apiVersion: cert-manager.io/v1alpha2 kind: ClusterIssue

从cert manager文档:将注释cert-manager.io/cluster-issuer:acme issuer添加到入口对象应触发垫片,向该颁发者请求证书,并在没有任何命名空间的情况下存储证书?用哪个名字

我试过了,但没用。在入口的yaml定义中添加tls:节会触发垫片,请求证书并将其存储在入口所在的名称空间中

这意味着文档不正确,或者如果没有tls:节,它是否真的可以工作

apiVersion: cert-manager.io/v1alpha2
kind: ClusterIssuer
metadata:
  name: acme-issuer
spec:
  acme:
    email: user@example.com
    server: https://acme-staging-v02.api.letsencrypt.org/directory
    privateKeySecretRef:
      name: example-issuer-account-key
    solvers:
    - http01:
        ingress:
          class: nginx

如果您正确创建了颁发者,则需要创建一个证书,以便颁发者可以使用您在证书资源中拥有的信息颁发证书,并填充机密:

apiVersion: cert-manager.io/v1alpha2
kind: Certificate
metadata:
  name: certname
spec:
  secretName: secretName
  issuerRef:
    name: letsencrypt-prod
  commonName: <the CN>
  dnsNames:
  - <name>


一旦你有了这个资源,它应该创建一个包含TLS证书的秘密,并将其存储在secretName中。

我和你一样使用它,创建我的TLS ok。但是privateKeySecretRef的名称是igual ClusterIssuer name。入口需要tls部分

使用:

apiVersion: cert-manager.io/v1alpha2
kind: ClusterIssuer
metadata:
  name: letsencrypt-prod
spec:
  acme:
    # The ACME server URL
    server: https://acme-v02.api.letsencrypt.org/directory
    # Email address used for ACME registration
    email: my@email.com
    privateKeySecretRef:
      name: letsencrypt-prod
    # Enable the HTTP-01 challenge provider
    solvers:
      - http01:
          ingress:
            class: nginx
检查要调试的证书状态:

kubectl get certificate -o wide
如果状态证书请求


其思想是使用垫片自动创建证书。不要手动创建它们。这就是您的建议吗?证书资源提供了创建实际证书的参数。发卡机构如何在不知道CN和dns名称的情况下创建证书?入口确实在主机规则中指定了dns名称。CN可以由注释或设置指定,但似乎没有相关信息。因此,Shim无法生成此类证书,您必须手动创建它们。这回答了我的问题。请澄清。如果有一种方法可以自动创建证书,我不知道。不过,这非常有效,尤其是当您使用它来管理证书而不仅仅是letsencrypt tls时。我有一个ca授权机构,负责管理多个后端证书以及前端tls证书,并有一个单独的证书资源帮助。入口垫片根据我的问题自动从入口创建带有特定注释和tls部分的证书。这确实很管用。我不太明白。
kubectl get certificate -o wide
kubectl get CertificateRequest -o wide