AWS EKS aws-load-balancer-controller自定义TLS证书x509错误及配置问题
已有自有TLS证书是否需要安装cert-manager
不需要。cert-manager的核心作用是自动化完成证书的签发、续期操作,你已经持有可用的自有TLS证书,可直接手动导入使用,无需部署cert-manager。
你当前遇到的x509报错与业务TLS证书无关,是aws-load-balancer-controller的webhook服务证书不匹配导致:该webhook是控制器内部用来和Kubernetes APIServer通信的组件,默认需要证书对aws-load-balancer-webhook-service.kube-system.svc域名生效,你使用的*.corp证书没有覆盖该内部域名,因此触发报错。
修复x509报错
按以下步骤操作即可解决:
- 先卸载当前已安装的aws-load-balancer-controller,清理残留的webhook配置:
kubectl delete mutatingwebhookconfigurations.admissionregistration.k8s.io aws-load-balancer-webhook kubectl delete validatingwebhookconfigurations.admissionregistration.k8s.io aws-load-balancer-webhook - 重新安装控制器时,建议直接开启控制器自带的自签webhook证书功能,该自签证书仅用于集群内部通信,不会影响对外业务的TLS配置,无需对接你的自有业务CA。
配置带自有TLS证书的流量路由
按以下步骤操作即可实现:
- 将你持有的自有业务TLS证书导入到AWS Certificate Manager(ACM)中,记录对应证书的ARN
- 编写Ingress资源配置文件,示例如下:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: business-ingress annotations: alb.ingress.kubernetes.io/scheme: internet-facing # Fargate场景下必须指定target-type为ip alb.ingress.kubernetes.io/target-type: ip alb.ingress.kubernetes.io/certificate-arn: "替换为你导入ACM的证书ARN" alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS":443}]' alb.ingress.kubernetes.io/ssl-redirect: "443" spec: ingressClassName: alb rules: - host: 替换为你的业务域名(需在证书的SAN范围内) http: paths: - path: / pathType: Prefix backend: service: name: 替换为你的后端业务服务名 port: number: 替换为服务端口 - 执行
kubectl apply -f 配置文件名.yaml即可,控制器会自动生成对应ALB,绑定你的TLS证书,实现HTTPS加密流量转发。
注意:业务域名必须与你导入ACM的证书覆盖的域名一致,否则用户访问时仍会触发证书不匹配报错。
内容的提问来源于stack exchange,提问作者Surya Teja
相关产品推荐
相关产品推荐

