繁体   English   中英

来自服务器的错误:cert-manager.io/v1alpha2 的转换 webhook 用于 cert-manager ClusterIssuer

[英]Error from server: conversion webhook for cert-manager.io/v1alpha2 for cert-manager ClusterIssuer

当我尝试使用 NGINX Ingress controller 和cert-manager为我的集群应用程序配置 TLS Let's Encrypt 证书时,ClusterIssuer 出现问题。

我的 ClusterIssuer 定义如下:

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

当我通过 kubectl 检查 clusterissuer 时,它说 ClusterIssuer 是READY

$ kubectl get clusterissuer --namespace mynamespace

回复:

NAME               READY   AGE
letsencrypt-prod   True    13s

但是当我描述 ClusterIssuer 时,我得到了一个错误。

$ kubectl describe clusterissuer letsencrypt-prod --namespace mynamespace

回复:

Error from server: conversion webhook for cert-manager.io/v1alpha2, Kind=ClusterIssuer failed: Post https://cert-manager-webhook.cert-manager.svc:443/convert?timeout=30s: service "cert-manager-webhook" not found

我使用Helm 3安装了 cert-manager,并手动添加了 CRD。

如何解决这个问题?

将 CRD 手动应用于集群时,cert-manager chart 不接受不同的命名空间。 无需先手动应用它们,而是将 CRD 作为 Helm 3 版本的一部分进行安装

$ helm repo add jetstack https://charts.jetstack.io

$ helm repo update

$ helm install \
  cert-manager jetstack/cert-manager \
  --namespace mynamespace \
  --version v0.15.1 \
  --set installCRDs=true

我通过在metadata下添加namespace: cert-manager解决了这个问题

它看起来像这样:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM