如何让Kubernetes Ingress使用HTTP而非HTTPS对外提供服务?
将Docker Desktop内置K8s的Ingress改为HTTP访问的配置步骤
你的问题核心是Docker Desktop自带的Nginx Ingress默认开启了HTTP到HTTPS的强制重定向,只要调整Ingress的注解和确认端口映射即可解决,具体操作如下:
1. 修改Ingress配置,禁用HTTPS重定向
在你的Ingress资源的metadata.annotations中添加nginx.ingress.kubernetes.io/ssl-redirect: "false",这会让Nginx Ingress不再把HTTP请求跳转到HTTPS。修改后的Ingress配置如下:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: my-ingress annotations: nginx.ingress.kubernetes.io/ssl-redirect: "false" # 关键配置,禁用HTTPS重定向 spec: ingressClassName: nginx rules: - http: paths: - path: / pathType: Prefix backend: service: name: my-service port: number: 8080
2. 确认Ingress Controller的端口映射
Docker Desktop内置的Nginx Ingress Controller默认已经将集群内的80端口映射到本地的80端口,你可以通过以下命令验证:
kubectl get svc -n ingress-nginx
输出中应该能看到ingress-nginx-controller的PORT(S)列包含80:3XXXX/TCP(3XXXX是随机NodePort,但Docker Desktop会自动把本地80转发到这个端口)。如果没有80端口映射,重启Docker Desktop的Kubernetes组件即可自动恢复。
3. 应用修改并测试
执行以下命令更新Ingress配置:
kubectl apply -f your-ingress-file.yaml
之后直接用http://localhost访问你的Spring Boot应用即可,无需加HTTPS。
额外说明
- 你的Deployment和Service配置没有问题,Spring Boot的8080端口已经正确暴露和转发。
- 如果之前配置过TLS证书(比如Ingress里加了
tls字段),记得删除对应的TLS配置,否则Ingress还是会优先处理HTTPS请求。
内容的提问来源于stack exchange,提问作者askwer
相关产品推荐
相关产品推荐

