使用 helm 进行证书管理器更新每次都会失败

问题描述 投票:0回答:1

背景 我正在执行一项续订 SSL Let's Encrypt 证书的任务,因为它们在几天前意外过期。我正在使用的服务器位于 Azure AKS(Azure Kubernetes 服务)上,并且 SSL 是使用 Azure 应用程序网关配置的。我们已经使用 helm 设置了 cert-manager 来自动更新证书。我们已经设置了 ca 注入器,以及用于 MutatingWebhookConfiguration 和 ValidatingWebhookConfiguration 的管理器 Webhook。

版本: 头盔版本:3.9.3 证书管理器版本:0.13.0 AKS 版本:1.27.7

这是在 cert-manager 命名空间中配置的内容。

NAME                      READY   UP-TO-DATE   AVAILABLE 
cert-manager              1/1     1            1           
cert-manager-cainjector   0/1     1            0          
cert-manager-webhook      1/1     1            1           

CA 注入器在日志中抛出以下错误:

1 start.go:82] starting ca-injector v0.13.0 (revision 6d9200f9d)
1 start.go:147] error registering core-only controllers: no matches for kind "MutatingWebhookConfiguration" in version "admissionregistration.k8s.io/v1beta1"

describe 命令的输出如下:

k describe po ca-injector
Name:             cert-manager-cainjector-123
Namespace:        cert-manager
Priority:         0
Service Account:  cert-manager-cainjector
Node:             aks-agentpool-vmss
Start Time:       Fri, 09 Feb 2024 13:17:19 +0100
Labels:           app=cainjector
                  app.kubernetes.io/instance=cert-manager
                  app.kubernetes.io/managed-by=Helm
                  app.kubernetes.io/name=cainjector
                  helm.sh/chart=cert-manager-v0.13.0
                  pod-template-hash=nb
Annotations:      <none>
Status:           Running
IP:               IP-address
IPs:
  IP:           pod-ip-here
Controlled By:  ReplicaSet/cert-manager-cainjector-1234
Containers:
  cert-manager:
    Container ID:  containerd:
    Image:         quay.io/jetstack/cert-manager-cainjector:v0.13.0
    Image ID:      quay.io/jetstack/cert-manager-cainjector@sha256:46f539739694d01cb058dac7f37d7160689f9933825e179ec46a08a6b6f681de
    Port:          <none>
    Host Port:     <none>
    Args:
      --v=2
      --leader-election-namespace=kube-system
    State:          Waiting
      Reason:       CrashLoopBackOff
    Last State:     Terminated
      Reason:       Error
      Exit Code:    255
      Started:      Fri, 09 Feb 2024 13:43:52 +0100
      Finished:     Fri, 09 Feb 2024 13:43:53 +0100
    Ready:          False
    Restart Count:  10
    Environment:
      POD_NAMESPACE:  cert-manager (v1:metadata.namespace)
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-hmlfw (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             False 
  ContainersReady   False 
  PodScheduled      True 
Volumes:
  kube-api-access-hmlfw:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   BestEffort
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type     Reason     Age                  From               Message
  ----     ------     ----                 ----               -------
  Normal   Scheduled  31m                  default-scheduler  Successfully assigned cert-manager/cert-manager-cainjector-123 to aks-agentpool
  Normal   Pulling    31m                  kubelet            Pulling image "quay.io/jetstack/cert-manager-cainjector:v0.13.0"
  Normal   Pulled     31m                  kubelet            Successfully pulled image "quay.io/jetstack/cert-manager-cainjector:v0.13.0" in 1.736009777s (1.736016777s including waiting)
  Normal   Created    29m (x5 over 31m)    kubelet            Created container cert-manager
  Normal   Started    29m (x5 over 31m)    kubelet            Started container cert-manager
  Normal   Pulled     29m (x4 over 31m)    kubelet            Container image "quay.io/jetstack/cert-manager-cainjector:v0.13.0" already present on machine
  Warning  BackOff    73s (x139 over 31m)  kubelet            Back-off restarting failed container cert-manager in pod cert-manager-cainjector_cert-manager(..)

到目前为止我做了什么 我尝试使用 helm cmd 升级 cert-manager 版本:

helm upgrade cert-manager jetstack/cert-manager --namespace cert-manager --set installCRDs=true --set version=1.11.5

我收到以下错误:

Error: UPGRADE FAILED: unable to build kubernetes objects from current release manifest: [resource mapping not found for name: "cert-manager-cainjector" namespace: "" from "": no matches for kind "ClusterRole" in version "rbac.authorization.k8s.io/v1beta1"
ensure CRDs are installed first, resource mapping not found for name: "cert-manager-controller-issuers" namespace: "" from "": no matches for kind "ClusterRole" in version "rbac.authorization.k8s.io/v1beta1"
ensure CRDs are installed first, resource mapping not found for name: "cert-manager-controller-clusterissuers" namespace: "" from "": no matches for kind "ClusterRole" in version "rbac.authorization.k8s.io/v1beta1"
ensure CRDs are installed first, resource mapping not found for name: "cert-manager-controller-certificates" namespace: "" from "": no matches for kind "ClusterRole" in version "rbac.authorization.k8s.io/v1beta1"
ensure CRDs are installed first, resource mapping not found for name: "cert-manager-controller-orders" namespace: "" from "": no matches for kind "ClusterRole" in version "rbac.authorization.k8s.io/v1beta1"
ensure CRDs are installed first, resource mapping not found for name: "cert-manager-controller-challenges" namespace: "" from "": no matches for kind "ClusterRole" in version "rbac.authorization.k8s.io/v1beta1"
ensure CRDs are installed first, resource mapping not found for name: "cert-manager-controller-ingress-shim" namespace: "" from "": no matches for kind "ClusterRole" in version "rbac.authorization.k8s.io/v1beta1"
ensure CRDs are installed first, resource mapping not found for name: "cert-manager-cainjector" namespace: "" from "": no matches for kind "ClusterRoleBinding" in version "rbac.authorization.k8s.io/v1beta1"
ensure CRDs are installed first, resource mapping not found for name: "cert-manager-controller-issuers" namespace: "" from "": no matches for kind "ClusterRoleBinding" in version "rbac.authorization.k8s.io/v1beta1"
ensure CRDs are installed first, resource mapping not found for name: "cert-manager-controller-clusterissuers" namespace: "" from "": no matches for kind "ClusterRoleBinding" in version "rbac.authorization.k8s.io/v1beta1"
ensure CRDs are installed first, resource mapping not found for name: "cert-manager-controller-certificates" namespace: "" from "": no matches for kind "ClusterRoleBinding" in version "rbac.authorization.k8s.io/v1beta1"
ensure CRDs are installed first, resource mapping not found for name: "cert-manager-controller-orders" namespace: "" from "": no matches for kind "ClusterRoleBinding" in version "rbac.authorization.k8s.io/v1beta1"
ensure CRDs are installed first, resource mapping not found for name: "cert-manager-controller-challenges" namespace: "" from "": no matches for kind "ClusterRoleBinding" in version "rbac.authorization.k8s.io/v1beta1"
ensure CRDs are installed first, resource mapping not found for name: "cert-manager-controller-ingress-shim" namespace: "" from "": no matches for kind "ClusterRoleBinding" in version "rbac.authorization.k8s.io/v1beta1"
ensure CRDs are installed first, resource mapping not found for name: "cert-manager-webhook:auth-delegator" namespace: "" from "": no matches for kind "ClusterRoleBinding" in version "rbac.authorization.k8s.io/v1beta1"
ensure CRDs are installed first, resource mapping not found for name: "cert-manager-cainjector:leaderelection" namespace: "kube-system" from "": no matches for kind "Role" in version "rbac.authorization.k8s.io/v1beta1"
ensure CRDs are installed first, resource mapping not found for name: "cert-manager:leaderelection" namespace: "kube-system" from "": no matches for kind "Role" in version "rbac.authorization.k8s.io/v1beta1"
ensure CRDs are installed first, resource mapping not found for name: "cert-manager-cainjector:leaderelection" namespace: "kube-system" from "": no matches for kind "RoleBinding" in version "rbac.authorization.k8s.io/v1beta1"
ensure CRDs are installed first, resource mapping not found for name: "cert-manager:leaderelection" namespace: "kube-system" from "": no matches for kind "RoleBinding" in version "rbac.authorization.k8s.io/v1beta1"
ensure CRDs are installed first, resource mapping not found for name: "cert-manager-webhook:webhook-authentication-reader" namespace: "kube-system" from "": no matches for kind "RoleBinding" in version "rbac.authorization.k8s.io/v1beta1"
ensure CRDs are installed first, resource mapping not found for name: "cert-manager-webhook" namespace: "" from "": no matches for kind "MutatingWebhookConfiguration" in version "admissionregistration.k8s.io/v1beta1"
ensure CRDs are installed first, resource mapping not found for name: "cert-manager-webhook" namespace: "" from "": no matches for kind "ValidatingWebhookConfiguration" in version "admissionregistration.k8s.io/v1beta1"
ensure CRDs are installed first]

我已检查所有 CRD、角色、角色绑定、集群角色和集群角色绑定版本,以确保它们是最新的。所有验证和突变 CRD 均位于 .k8s.io/v1 上。

我对下一步该做什么有点困惑,我在另一个线程上看到人们倾向于删除所有 CRD 并重新安装和重新配置证书管理器和机密等..不确定这是否是正确的方法,因为它听起来甚至有风险有备份。

您建议我如何处理这个问题? 谢谢!

kubernetes ssl https ssl-certificate azure-aks
1个回答
0
投票

在升级/安装 Helm 之前,您可以尝试单独重新安装

cert-manager
CRD。

kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.11.5/cert-manager.crds.yaml

然后,升级

cert-manager
,无需 Helm 处理 CRD。

helm upgrade cert-manager jetstack/cert-manager --namespace cert-manager --version=1.11.5

如果以上方法不起作用,您可能需要重新安装

cert-manager

在某些情况下,可能需要完全卸载并重新安装证书管理器。一个例子是,当一个非常旧的证书管理器版本需要更新时,一次升级一个次要版本是不可行的,这是我们默认推荐的升级策略。

文档:https://cert-manager.io/docs/installation/reinstall/

© www.soinside.com 2019 - 2024. All rights reserved.