You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从Skaffold+K8s原生清单迁移到DevSpace后Ingress无法工作问题咨询

问题1:Ingress访问返回404的修复方案

你遇到的404问题核心是ingress-nginx v1.0.0版本已完全废弃extensions/v1beta1和networking.k8s.io/v1beta1版本的Ingress API,仅支持networking.k8s.io/v1,DevSpace默认生成的旧版本API资源不会被ingress-nginx识别加载,导致路由规则不生效。
修复步骤如下:

  1. 在devspace.yaml的全局配置段指定Ingress使用的API版本,强制生成v1版本资源:
# devspace.yaml 根配置
versions:
  ingress: networking.k8s.io/v1
  1. 所有Ingress路径必须配置pathType字段(v1版本Ingress必填参数),可选值为Prefix/Exact/ImplementationSpecific,示例配置:
# 若使用组件级Ingress配置,需补充pathType
components:
  - name: frontend
    ingress:
      rules:
        - host: dev.your-domain.local
          paths:
            - path: /
              pathType: Prefix
              servicePort: 3000
  1. 配置修改完成后执行devspace render验证生成的Ingress资源版本、路径、service关联信息是否正确,也可通过kubectl logs -n ingress-nginx deploy/ingress-nginx-controller查看controller日志排查其他路由错误。
问题2:配置全局统一Ingress的方案

DevSpace默认会为每个配置了ingress字段的组件生成独立Ingress资源,实现全局统一Ingress可选择以下两种方案:

方案1:加载自定义Ingress原生清单(最稳定,兼容原有Skaffold配置逻辑)

  • 将你之前正常运行的networking.k8s.io/v1版本Ingress清单保存为项目内的单独文件,例如./k8s/global-ingress.yaml
  • 在devspace.yaml中配置加载该自定义清单,同时删除所有组件配置中的ingress字段,避免自动生成多余的Ingress资源:
manifests:
  - path: ./k8s/*.yaml

方案2:使用DevSpace全局Ingress配置(无需额外维护独立清单)

直接在devspace.yaml根级别配置统一的ingress段,而非在每个组件下分别配置,DevSpace只会生成一个全局Ingress资源:

# devspace.yaml 根级别全局Ingress配置
ingress:
  name: global-app-ingress
  apiVersion: networking.k8s.io/v1
  rules:
    - host: dev.your-domain.local
      paths:
        - path: /
          pathType: Prefix
          serviceName: frontend
          servicePort: 3000
        - path: /api
          pathType: Prefix
          serviceName: backend-api
          servicePort: 8080
        - path: /admin
          pathType: Prefix
          serviceName: admin-service
          servicePort: 80

内容的提问来源于stack exchange,提问作者strumpy_strudel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 00:27:02