如何在GKE的kubernetes_ingress_v1中配置HTTP自动重定向到HTTPS
实现GKE Ingress HTTP自动重定向到HTTPS
你当前的GKE Ingress已支持HTTP和HTTPS访问,要实现HTTP请求自动重定向至HTTPS,只需在Ingress的元数据中添加特定注解,让GKE Ingress控制器处理重定向逻辑。
修改后的Terraform配置
resource "kubernetes_ingress_v1" "ingress" { wait_for_load_balancer = true metadata { name = "ingress" # 添加重定向所需的注解 annotations = { # 强制将HTTP请求重定向到HTTPS "kubernetes.io/ingress.force-ssl-redirect" = "true" # 可选:若要完全禁用HTTP访问(直接拒绝而非重定向),可添加下面一行 # "kubernetes.io/ingress.allow-http" = "false" } } spec { default_backend { service { name = kubernetes_service.frontend_service.metadata[0].name port { number = 80 } } } rule { http { path { backend { service { name = kubernetes_service.api_service.metadata[0].name port { number = 80 } } } path = "/api/*" } path { backend { service { name = kubernetes_service.api_service.metadata[0].name port { number = 80 } } } path = "/api" } } } tls { secret_name = "tls-secret" } } depends_on = [kubernetes_secret_v1.tls-secret, kubernetes_service.frontend_service, kubernetes_service.api_service] }
关键说明
kubernetes.io/ingress.force-ssl-redirect: "true":该注解会让GKE的Ingress控制器自动拦截所有HTTP请求,并返回301重定向到对应的HTTPS地址。- 确保你的TLS密钥
tls-secret已正确配置并关联到Ingress,这是重定向生效的前提(Ingress需先支持HTTPS才能完成重定向)。 - 若你希望直接拒绝HTTP请求而非重定向,可添加
kubernetes.io/ingress.allow-http: "false"注解,但这会导致HTTP请求直接返回拒绝响应,而非重定向到HTTPS。
内容的提问来源于stack exchange,提问作者Ranjith Ramachandra
相关产品推荐
相关产品推荐

