使用 Letsencrypt 的 Kubernetes 证书

使用 Letsencrypt 的 Kubernetes 证书

我想用 letsencrypt 创建一个证书。

当我运行这个 yml 时

apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: grafana-tls
  namespace: grafana
type: "kubernetes.io/tls"
spec:
  secretName: grafana-tls
  issuerRef:
    name: letsencrypt-prod
  dnsNames:
     - mydomain.com

kubectl apply -f .\grafana-tls.yml --validate=false

我遇到了以下错误

未找到引用的“发行人”:未找到issuer.cert-manager.io“letsencrypt-prod”

但是当我执行时kubectl get clusterissuer 我遇到了这个结果

姓名 准备年龄

letsencrypt-prod True 3d22h

为了部署集群发行者,我使用了这个配置

apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt-prod
  namespace: ingress-basic
spec:
  acme:
    server: https://acme-v02.api.letsencrypt.org/directory
    email: myEmail
    privateKeySecretRef:
      name: letsencrypt-prod
    solvers:
    - http01:
        ingress:
          class: nginx

答案1

根据这个github文档尝试添加种类:<ClusterIssuer | Issuer>在 issueref 下,并确保 clusterissuer 和证书在同一个命名空间中创建。

apiVersion: cert-manager.io/v1
kind: Certificate
Metadata:
  name: grafana-tls
  namespace: grafana
type: "kubernetes.io/tls" 
spec: 
  secretName: grafana-tls
  issuerRef: 
    name: letsencrypt-prod 
    kind: <ClusterIssuer | Issuer > 
dnsNames: 
   - mydomain.com

參閱类似问题以获取更多信息。

相关内容