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

如何通过Kubernetes Service配置AWS ELB实现HTTPS后端协议?

解决AWS ELB后端HTTPS端口实例协议配置问题

我之前也碰到过完全一样的问题!你现在的配置里,全局的service.beta.kubernetes.io/aws-load-balancer-backend-protocol把所有后端端口的实例协议都设成了HTTP,这就是为什么HTTPS端口转发到后端还是用HTTP的原因。要实现HTTPS端口对应后端用HTTPS协议,只需要用端口级的专属注解来覆盖全局配置就行。

具体修改方案

直接在Service的annotations里添加针对443端口的后端协议注解,修改后的完整YAML如下:

kind: Service
apiVersion: v1
metadata:
  name: my_app
  namespace: my_namespace
  labels:
    dns: route53
  annotations:
    domainName: my_app.my.domain.com
    # 全局设置HTTP端口的后端协议(也可以换成单独给80端口加注解)
    service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
    # 重点:给443端口单独指定后端协议为HTTPS
    service.beta.kubernetes.io/aws-load-balancer-backend-protocol-443: https
    service.beta.kubernetes.io/aws-load-balancer-ssl-ports: https
    service.beta.kubernetes.io/aws-load-balancer-ssl-cert: "arn:aws:iam::accountId:server-certificate/CertificateName"
    service.beta.kubernetes.io/aws-load-balancer-internal: 0.0.0.0/0
spec:
  type: LoadBalancer
  selector:
    app: my_app
    version: my_version
  ports:
  - protocol: TCP
    port: 80
    targetPort: non_secure_port_name
    name: http
  - protocol: TCP
    port: 443
    targetPort: secure_port_name
    name: https

关键细节解释

  • service.beta.kubernetes.io/aws-load-balancer-backend-protocol-<port>是Kubernetes为AWS ELB提供的端口级配置注解,<port>对应你Service里定义的端口号(这里就是443)。用它可以单独指定某个端口的后端实例协议,覆盖全局配置。
  • 如果你想更清晰,也可以去掉全局的service.beta.kubernetes.io/aws-load-balancer-backend-protocol,分别给80和443端口加各自的注解:
    service.beta.kubernetes.io/aws-load-balancer-backend-protocol-80: http
    service.beta.kubernetes.io/aws-load-balancer-backend-protocol-443: https
    

验证方法

部署修改后的Service后,你可以通过AWS控制台或者aws elb describe-load-balancers命令查看ELB的监听配置:HTTPS(443)端口的后端实例协议应该已经变成HTTPS了,不需要再手动调整ELB。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:23:42