0

来自cert-manager文档:将注释添加cert-manager.io/cluster-issuer: acme-issuerIngress对象应触发 shim,向此颁发者请求证书,并存储证书(没有任何命名空间?)(使用哪个名称?)。

我试过这个,它什么也没做。在 yaml 定义中添加一个tls:部分Ingress会触发 shim,请求证书并将其存储在与Ingress.

这意味着文档不正确,或者它真的应该在没有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: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    cert-manager.io/cluster-issuer: acme-issuer
    kubernetes.io/ingress.class: nginx
  name: my-ingress-name
  namespace: mynamespace
spec:
  rules:
  - host: some.domain.eu
    http:
      paths:
      - backend:
          serviceName: my-service-name
          servicePort: 5000
        path: /
  tls:
  - hosts:
    - some.domain.eu
    secretName: secret-storage-key-for-tls-cert
4

3 回答 3

1

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

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

拥有此资源后,它应该创建一个包含 TLS 证书的机密,并将其存储在secretName.

于 2020-01-14T14:37:51.473 回答
0

我不知道您是否解决了您的问题,但请尝试检查以下内容:

  • 检查您的 ingressClass 是否确实是nginx( kubectl get ingressClass)
  • 如果您只使用一个 ingressClass 并且集群上没有安装其他 ingress-controller,您可能不需要指定类名
  • 另外,您使用的是哪个版本的 cert-manager?我知道注释已更改,因此如果您有一个非常老的证书管理器,注释可能不是正确的。
  • 创建入口后,检查是否为 HTTP01 质询验证创建了 acme-pod 和入口,并检查、certificate和(例如:)的状态CertificateRequestOrderChallengekubectl describe certificate <your_certificate_object>
  • 还要检查 cert-manager 日志以查看是否发生任何其他问题。
于 2022-02-23T12:07:45.003 回答
0

我像你一样使用,这创建了我的 TLS ok。但是名字privateKeySecretRef是igual ClusterIssuername。tls 部分是必需的ingress

使用:

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

如果状态CertificateRequest

kubectl get CertificateRequest -o wide
于 2020-01-16T14:03:57.570 回答