向GKE ALB Ingress添加GCP托管证书后仅显示80端口问题咨询
问题分析与解决方法
这不是预期行为,问题根源在于你的Ingress清单未配置TLS字段,导致Kubernetes无法在Ingress资源中记录443端口的存在。
原因说明
GKE的GCE Ingress控制器在处理ingress.gcp.kubernetes.io/pre-shared-cert注解时,会自动在GCP端为传统ALB配置443端口和指定证书,但不会自动更新Kubernetes Ingress资源的spec.tls字段。而kubectl get ingress显示的端口信息是基于Ingress资源的spec和status字段,因此缺少TLS配置块时,只会显示默认的80端口。
你提到直接在GCP负载均衡器控制台添加证书后,kubectl get ingress能显示443端口,这是因为手动修改LB后,GCE控制器会将LB的状态同步到Ingress资源的status字段,但这种方式不符合Kubernetes声明式配置的最佳实践,不推荐长期使用。
解决步骤
修改你的Ingress清单,添加spec.tls字段,指定对应的域名即可。由于你使用的是GCP预共享证书,不需要创建实际的Kubernetes Secret,只需填写一个占位的secretName(控制器会优先使用注解指定的GCP证书,忽略该占位Secret)。
修改后的完整Ingress清单:
ingress: enabled: true annotations: ingress.gcp.kubernetes.io/pre-shared-cert: certificate-name-ssl kubernetes.io/ingress.class: 'gce' hosts: - host: api.hostname.com paths: - backend: service: name: my-service port: number: 8080 - path: / pathType: Prefix tls: - hosts: - api.hostname.com secretName: dummy-gcp-cert-secret # 占位名称,无需实际创建
应用修改后的清单:
kubectl apply -f your-ingress-manifest.yaml
验证结果:
运行kubectl get ingress,此时应该能同时看到80和443端口,且GCP ALB的证书配置依然正常生效。
内容的提问来源于stack exchange,提问作者Waseem Mir
相关产品推荐
相关产品推荐

