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

EKS使用Cilium CNI时cert-manager ClusterIssuer报地址不允许错误

问题概述

在使用Cilium作为CNI的EKS集群中,cert-manager的ClusterIssuer资源状态异常,报错为Post "": Address is not allowed,日志关联字段为clusterissuername。
通过Helm配合Kustomize完成cert-manager部署后,基于ACME协议的ClusterIssuer触发上述错误:执行kubectl get clusterissuer查看资源时,资源无状态字段写入,READY列始终为空。

关联配置

故障ClusterIssuer清单

---
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: acme-prod
spec:
  acme:
    email: abdiakhate@example.com
    server: https://acme-v02.api.letsencrypt.org/directory
    privateKeySecretRef:
      name: acme-prod-account-key
    solvers:
      - dns01:
          route53:
            region: us-east-1
            accessKeyID: AKIAS2ETUR
            secretAccessKeySecretRef:
              name: credentials-secret
              key: secret-access-key
        selector:
          dnsZones:
            - "exemple.net"

ArgoCD部署cert-manager清单

---
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: cert-manager
  namespace: argocd
spec:
  destination:
    namespace: cert-manager
    server: 'https://kubernetes.default.svc'
  source:
    repoURL: 'https://charts.jetstack.io'
    targetRevision: v1.7.1
    chart: cert-manager
    helm:
      valueFiles:
        - values.yaml
      values: |
        installCRDs: true
  project: default
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
    syncOptions:
      - CreateNamespace=true

错误参考截图

cert-manager报错截图1
cert-manager报错截图2

根因定位

故障确由Cilium默认网络规则与cert-manager v1.7.1版本的已知bug共同触发:

  1. Cilium在EKS环境替换kube-proxy的运行模式下,默认开启Kubernetes API访问地址合法性校验,会直接拦截目标地址为空的API请求
  2. cert-manager v1.7.1在初始化ACME类型ClusterIssuer时,存在未正确赋值目标地址就发起注册请求的逻辑缺陷,该空地址请求被Cilium拦截后,ClusterIssuer的状态同步流程直接中断,无法写入READY状态。

排查步骤
  1. 拉取cert-manager Pod日志过滤对应资源的报错,确认拦截行为:
    kubectl logs -n cert-manager -l app.kubernetes.io/name=cert-manager | grep "clusterissuername.*acme-prod"
    
    日志中可明确看到空地址POST请求的拒绝记录,请求拦截方为Cilium L7代理。
  2. 校验Cilium运行配置,确认拦截规则启用状态:
    cilium config view | grep -E "enable-l7-proxy|enforce-k8s-api-allowed-ips"
    
    若两个配置项值均为true,即可确认故障触发条件完全匹配。

解决方案

按需选择以下任意一种方案即可修复:

  • 方案1:升级cert-manager到v1.8.0及以上稳定版本,新版本已经修复初始化阶段发起空地址请求的缺陷,不会触发Cilium的拦截规则。
  • 方案2:无法升级cert-manager时,调整Cilium配置关闭Kubernetes API空地址拦截校验:
    cilium config set enforce-k8s-api-allowed-ips false
    
    滚动重启所有Cilium Agent Pod等待配置生效后,cert-manager会在1-2分钟内自动重试ClusterIssuer同步流程,READY状态将自动更新为True。
  • 方案3:通过Cilium网络策略放通cert-manager Pod的出站流量,跳过L7代理校验:
    apiVersion: "cilium.io/v2"
    kind: CiliumNetworkPolicy
    metadata:
      name: cert-manager-egress-allow
      namespace: cert-manager
    spec:
      endpointSelector:
        matchLabels:
          app.kubernetes.io/name=cert-manager
      egress:
      - toEntities:
        - all
    

内容的提问来源于stack exchange,提问作者Alioune Badara Diakhaté

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 04:39:42