服务器错误:cert-manager 的转换 webhook。io/v1alpha2 for cert-manager ClusterIssuer
Error from server: conversion webhook for cert-manager.io/v1alpha2 for cert-manager ClusterIssuer
当我尝试使用 NGINX Ingress 控制器和 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 手动应用到您的集群时,证书管理器图表不接受不同的命名空间。 install 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
当我尝试使用 NGINX Ingress 控制器和 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 手动应用到您的集群时,证书管理器图表不接受不同的命名空间。 install 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