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

Kubernetes配置AWS SSL证书 解决Ingress重启证书丢失问题

核心问题

你的配置失效、重启后证书丢失是两个配置错误导致的:

  • AWS负载均衡器相关的注解前缀写错了。你现在用的nginx.ingress.kubernetes.io/是Nginx Ingress自身的注解标识,云厂商LB的配置注解必须用service.beta.kubernetes.io/aws-load-balancer-前缀,前缀不对控制器根本识别不到你的SSL配置,重启时自然会按默认值重置。
  • 端口配置逻辑冲突。你给443端口配置了SSL,但后端协议和targetPort都指向了Ingress的HTTPS端口,相当于LB和后端做双重加密,和你截图里AWS侧LB终结SSL的配置逻辑不匹配。
可直接复用的持久化配置

把你现有的Service配置替换成下面的内容,注意替换成你环境实际的证书ARN、命名空间和Pod选择器标签:

apiVersion: v1
kind: Service
metadata:
  name: nginx-ingress
  namespace: ingress-nginx # 替换为你实际部署Nginx Ingress控制器的命名空间
  annotations:
    # 所有AWS LB配置统一用官方要求的注解前缀
    service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:替换为证书所在区域:你的AWS账号ID:certificate/证书实际ID
    service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
    service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "443"
    # 以下为可选优化配置,可按需保留
    service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: "60"
spec:
  type: LoadBalancer
  selector:
    # 这里的标签必须和Nginx Ingress控制器Pod的标签完全匹配,否则选不到后端
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/component: controller
  ports:
  - name: http
    port: 80
    targetPort: http
    protocol: TCP
  - name: https
    port: 443
    # SSL卸载在LB层完成,后端直接走HTTP端口即可,不需要重复加密
    targetPort: http
    protocol: TCP
操作注意事项
  • 应用新配置前先删除旧的异常Service:执行kubectl delete svc nginx-ingress -n <你的Ingress命名空间>,避免旧配置残留冲突
  • 不要手动固定nodePort,手动指定的端口如果在Service重建时被其他资源占用,会触发LB配置重置
  • 确认你引用的ACM证书和K8s集群在同一个AWS区域,跨区域证书无法被LB正常挂载
  • 配置生效后无论重启Ingress控制器、重建Service,LB都会自动加载对应SSL证书,不需要手动重新配置

配置示例截图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 18:42:33