Ingress是Kubernetes中管理外部访问的API资源,通过域名和路径将HTTP/HTTPS请求路由到集群内服务。它需配合Ingress Controller(如Nginx)实现第7层负载均衡,支持TLS加密、路径重写等功能。部署.NET服务时,先创建Deployment和ClusterIP服务,再部署Ingress Controller,最后定义Ingress规则将api.example.com/api转发至后端服务,并配置TLS证书。确保DNS指向Ingress IP后即可通过HTTPS访问,常见问题包括控制器未就绪、服务名称不匹配或路径类型错误,需逐一排查。

Kubernetes 的 Ingress 是一种 API 资源,用于管理对集群内服务的外部访问,通常通过 HTTP/HTTPS 提供基于域名和路径的路由。它充当第7层(应用层)负载均衡器,可以将外部请求转发到不同的后端服务,比如你的 .NET Web API 或前端应用。
为什么使用 Ingress?
Ingress 能够:
暴露多个服务通过一个统一的公网 IP支持基于域名(如 api.example.com、app.example.com)的路由配置 TLS 加密(HTTPS)实现路径重写、流量控制等高级功能
注意:Ingress 只是定义规则,需要配合 Ingress Controller(如 Nginx、Traefik、Istio)才能真正生效。
部署 .NET 服务并配置 Ingress
以 ASP.NET Core 应用为例,展示从部署到接入 Ingress 的完整流程。
1. 编写 .NET 服务的 Deployment 和 Service
先确保你的 .NET 服务已容器化,并创建对应的 Deployment 和 ClusterIP 类型的服务。
# deployment.yamlapiVersion: apps/v1kind: Deploymentmetadata: name: dotnet-apispec: replicas: 2 selector: matchLabels: app: dotnet-api template: metadata: labels: app: dotnet-api spec: containers: - name: dotnet-api image: your-registry/dotnet-api:latest ports: - containerPort: 80---# service.yamlapiVersion: v1kind: Servicemetadata: name: dotnet-api-servicespec: selector: app: dotnet-api ports: - protocol: TCP port: 80 targetPort: 80 type: ClusterIP
应用配置:
kubectl apply -f deployment.yaml -f service.yaml
2. 部署 Ingress Controller(以 Nginx 为例)
如果没有安装 Ingress Controller,需先部署。常用的是 Kubernetes 社区版 Nginx Ingress:
helm install nginx-ingress ingress-nginx/ingress-nginx
安装后会创建一个 LoadBalancer 类型的服务,对外暴露 80/443 端口。
3. 创建 Ingress 规则
编写 Ingress 资源,将外部请求路由到 .NET 服务。
# ingress.yamlapiVersion: networking.k8s.io/v1kind: Ingressmetadata: name: dotnet-ingress annotations: nginx.ingress.kubernetes.io/rewrite-target: / nginx.ingress.kubernetes.io/ssl-redirect: "true"spec: ingressClassName: nginx # 对应 Ingress Controller 的 class tls: - hosts: - api.example.com secretName: example-tls-secret # 提前创建 TLS 证书 Secret rules: - host: api.example.com http: paths: - path: /api pathType: Prefix backend: service: name: dotnet-api-service port: number: 80
说明:
host:指定访问域名path:匹配路径前缀,如 /api 转发到后端服务rewrite-target:确保路径正确转发(避免 404)TLS:启用 HTTPS,需提前用 kubectl 创建 tls secret
创建 TLS Secret 示例:
kubectl create secret tls example-tls-secret –cert=tls.crt –key=tls.key
应用 Ingress:
kubectl apply -f ingress.yaml
4. 验证访问
确保你的 DNS 将 api.example.com 指向 Ingress Controller 的公网 IP。
访问测试:
https://api.example.com/api/weatherforecast
如果一切正常,请求会经过 Ingress 被转发到 .NET 服务。
常见问题与建议
确认 Ingress Controller 已运行且有外部 IP检查服务名称和端口是否与 Ingress 中一致路径类型 pathType 使用 Prefix 或 Exact,注意语义差异.NET 服务内部不要依赖特定路径前缀,路径重写由 Ingress 处理开启日志或使用 kubectl describe ingress dotnet-ingress 排错
基本上就这些。只要 Deployment、Service、Ingress 三层配置正确,.NET 服务就能通过域名安全对外提供服务。
以上就是什么是 Kubernetes 的 Ingress,如何配置 .NET 服务?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1440444.html
微信扫一扫
支付宝扫一扫