什么是 Kubernetes 的 Ingress,如何配置 .NET 服务?

月夜之吻
发布: 2025-10-07 12:47:02
原创
186人浏览过
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,如何配置 .net 服务?

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.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: dotnet-api
spec:
  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.yaml
apiVersion: v1
kind: Service
metadata:
  name: dotnet-api-service
spec:
  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 服务。

琅琅配音
琅琅配音

全能AI配音神器

琅琅配音 208
查看详情 琅琅配音

# ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  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 服务?的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号