GKE部署Docker应用时如何配置HTTPS负载均衡及域名SSL证书
现有TCP LoadBalancer实现HTTPS访问的方案
可以实现,共有两种可选路径:
- 路径1:SSL卸载放在应用侧实现,无需调整现有负载均衡配置。直接将自定义域名解析到现有TCP LB的公网IP,在Web应用容器内配置对应域名的SSL证书即可。缺点是SSL加解密会占用容器算力,证书更新需要同步到所有应用副本。
- 路径2:在TCP LB和应用之间新增Nginx/Ingress层做SSL卸载,无需替换现有TCP LB,缺点是运维复杂度更高。
GKE应用接入GCP原生HTTPS LoadBalancer分步操作
你之前使用type: LoadBalancer类型的Service默认创建的是4层TCP负载均衡,要接入7层HTTPS负载均衡推荐直接使用GKE原生Ingress资源实现,操作步骤如下:
- 前置准备
- 提前准备好需绑定的自定义域名,SSL证书可选择上传自有证书,也可使用GCP托管的免费证书(需完成域名所有权验证)
- 确认GKE集群已启用HttpLoadBalancing附加组件,默认标准集群均已开启该配置。
- 调整应用Service配置
将原有的LoadBalancer类型Service改为ClusterIP类型,后续Ingress会直接对接ClusterIP,无需保留公网TCP LB,配置示例:
apiVersion: v1 kind: Service metadata: name: your-app-service spec: type: ClusterIP selector: app: your-app ports: - port: 80 targetPort: <容器内服务监听端口>
执行kubectl apply -f <配置文件名>提交配置即可。
- 创建SSL证书资源(使用GCP托管证书场景)
创建ManagedCertificate资源完成证书自动签发,配置示例:
apiVersion: networking.gke.io/v1 kind: ManagedCertificate metadata: name: your-app-cert spec: domains: - <你的自定义域名,例如example.com>
提交配置后等待GCP完成域名所有权验证和证书签发,通常耗时10-30分钟。
- 创建Ingress资源关联HTTPS负载均衡
创建Ingress配置,关联之前创建的Service和证书资源,配置示例:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: your-app-ingress annotations: networking.gke.io/managed-certificates: your-app-cert kubernetes.io/ingress.global-static-ip-name: <提前预留的静态公网IP名称,可选配置> spec: defaultBackend: service: name: your-app-service port: number: 80
提交配置后GKE会自动创建全局HTTPS负载均衡,关联对应后端服务和SSL证书,通常耗时5-10分钟生效。如果需要强制HTTP请求自动跳转到HTTPS,可在annotations中添加kubernetes.io/ingress.allow-http: "false"即可。
- 验证配置
待Ingress状态中显示分配的公网IP后,将自定义域名解析到该IP,访问https://<你的域名>即可验证HTTPS访问是否正常。
内容的提问来源于stack exchange,提问作者user3279954
相关产品推荐
相关产品推荐

