[英]Migrate Certificate from certmanager.k8s.io/v1alpha1 to cert-manager.io/v1
[英]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.