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

如何为Kubernetes配置Ngrok Ingress Controller前缀路由及排障

Ngrok免费域名搭配Kubernetes Ingress的最佳实践

问题原因解析

你第一个Ingress配置报错的核心原因是:Ngrok免费版提供的随机域名不支持自定义子域名。免费版给出的dominant-hawk-factual.ngrok-free.app是二级域名,无法直接添加server.这类子域名前缀,因此Ngrok Ingress控制器会判定该Ingress规则无效,直接跳过处理。

可行解决方案与最佳实践

方案1:同域名不同路径路由(推荐免费场景)

这是你当前可用的方案,将多个服务映射到同一个Ngrok域名的不同路径下,配置示例如下:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ngrok-ingress-depl
  namespace: theblock
  annotations:
    # 可选:如果服务期望接收根路径请求,添加重写注解将/server路径转为/
    ngrok.com/rewrite-path: "/server(/|$)(.*) -> /$2"
spec:
  ingressClassName: ngrok
  rules:
    - host: dominant-hawk-factual.ngrok-free.app
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: app-service
                port:
                  number: 8000
          - path: /server
            pathType: Prefix
            backend:
              service:
                name: server-service
                port:
                  number: 3000
  • 注意:如果server-service仅处理根路径请求,必须添加路径重写注解,否则服务会收到带/server前缀的请求,可能导致接口匹配失败。

方案2:升级Ngrok付费版(适合生产/长期使用)

如果必须使用子域名路由,升级到Ngrok付费版后可以:

  • 绑定自定义域名,并创建任意子域名(如server.yourdomain.com)
  • 在Ngrok控制台完成域名解析配置后,直接使用你第一个报错的Ingress格式即可正常运行。

方案3:多个独立Ngrok免费域名(临时测试场景)

给每个服务单独创建Ngrok隧道,获取不同的免费随机域名,然后分别配置Ingress资源:

# app-service对应的Ingress
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: app-ngrok-ingress
  namespace: theblock
spec:
  ingressClassName: ngrok
  rules:
    - host: app-random-xxx.ngrok-free.app
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: app-service
                port:
                  number: 8000

# server-service对应的Ingress
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: server-ngrok-ingress
  namespace: theblock
spec:
  ingressClassName: ngrok
  rules:
    - host: server-random-yyy.ngrok-free.app
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: server-service
                port:
                  number: 3000
  • 缺点:每个域名都是随机生成的,需要单独记录,管理成本较高,仅适合临时测试。

额外注意事项

  • 移除冗余配置:Kubernetes v1.19+版本推荐使用spec.ingressClassName字段,无需保留kubernetes.io/ingress.class注解,避免配置冲突。
  • 保持控制器版本更新:确保Ngrok Ingress控制器是最新版本,避免因版本兼容性导致规则校验失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 23:46:11