You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AKS集群使用Cert-Manager配置自签名证书时证书未就绪问题

配置流程问题诊断

整体配置思路符合cert-manager自签名证书的签发规范(自签名根ClusterIssuer→签发CA证书→基于CA证书创建业务签发ClusterIssuer→签发业务证书),但存在3处配置错误导致业务证书无法签发、Ingress加载默认假证书:

  • 集群级ClusterIssuer读取CA Secret的命名空间不匹配:CA类型的ClusterIssuer默认会从cert-manager命名空间读取指定的CA Secret,你第一步签发的CA证书存储的Secrethello-deployment-tls-ca-key-pair默认生成在default命名空间,因此第二个ClusterIssuerhello-deployment-tls处于不可用状态,无法签发业务证书。
  • 业务证书不包含访问用的公网IP:你需要通过公网IP直接访问服务,但当前业务证书仅配置了dnsNames字段,IP需要通过ipAddresses字段单独声明,就算证书签发成功也会因域名不匹配触发浏览器告警,Ingress也会回退到默认证书。
  • API版本适配问题:cert-manager.io/v1alpha2属于已废弃的旧版本API,如果你使用的是cert-manager v1.0+版本,需要统一更换为cert-manager.io/v1版本API,避免兼容性问题。
解决方案

步骤1:修复CA类型Issuer的Secret读取问题

两种方案二选一即可:
方案A:将CA Secret同步到cert-manager命名空间

kubectl get secret hello-deployment-tls-ca-key-pair -n default -o yaml | sed 's/namespace: default/namespace: cert-manager/' | kubectl apply -f -

方案B:将集群级ClusterIssuer改为命名空间级Issuer,不需要跨命名空间读取Secret,修改clusterissuer2.yml内容如下:

apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
 name: hello-deployment-tls
 namespace: default
spec:
 ca:
   secretName: hello-deployment-tls-ca-key-pair

修改后业务证书的issuerRef字段也要对应调整kind: Issuer。

步骤2:更新业务证书配置,添加公网IP

修改certificate2.yml,补充公网IP配置、升级API版本:

apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: selfsigned-certificate2
  namespace: default
spec:
  secretName: hello-deployment-tls-ca-key-pair2
  dnsNames:
  - "*.default.svc.cluster.local"
  - "*.default.com"
  # 替换为你的AKS公网IP
  ipAddresses:
  - "xx.xx.xx.xx"
  isCA: false
  issuerRef:
    # 如果选方案B此处改为Issuer
    kind: ClusterIssuer
    name: hello-deployment-tls

重新应用配置后删除异常的旧Certificate资源触发重签发:

kubectl delete certificate selfsigned-certificate2
kubectl apply -f certificate2.yml

步骤3:验证签发状态

先查看ClusterIssuer/Issuer是否就绪:

# 方案A执行
kubectl describe clusterissuer hello-deployment-tls
# 方案B执行
kubectl describe issuer hello-deployment-tls -n default

确认Issuer状态为Ready后,查看业务证书状态,1分钟内应该变为Ready:

kubectl get certificate selfsigned-certificate2

步骤4:验证Ingress证书加载

证书就绪后重启nginx ingress控制器Pod触发证书重载,再次访问公网IP即可看到你签发的自签名证书,不再显示Fake证书:

kubectl rollout restart deployment nginx-ingress-controller -n ingress-nginx

注:自签名证书默认不被浏览器信任,需要手动将第一步生成的CA根证书导入到系统/浏览器的信任根证书存储中,即可消除不安全告警。

内容的提问来源于stack exchange,提问作者X T

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 13:09:00