首页 文章

如何在Tectonic kubernetes设置中禁用Ingress拦截错误

提问于
浏览
3

我有一些NodeJS后端在Kubernetes设置中作为pod运行,Ingress管理的nginx在它上面 .

这些后端是API服务器,在正常操作期间可以返回400,404或500个响应 . 这些回复将为客户提供有意义的数据;除了状态代码之外,响应在正文中具有JSON序列化结构,通知错误原因或建议解决方案 .

但是,Ingress将拦截这些错误响应,并返回错误页面 . 因此,客户端不会收到服务尝试提供的信息 .

在kubernetes-contrib存储库中有一个已关闭的票据,表明现在可以关闭错误拦截:https://github.com/kubernetes/contrib/issues/897 . 作为kubernetes / ingress的新手,我无法弄清楚如何在我的情况下应用此配置 .

作为参考,这是 kubectl get ingress <ingress-name> 的输出:(编辑名称和IP)

Name:             ingress-name-redacted
Namespace:        default
Address:          127.0.0.1
Default backend:  default-http-backend:80 (<none>)
Rules:
  Host                                Path  Backends
  ----                                ----  --------
  public.service.example.com
                                      /   service-name:80 (<none>)
Annotations:
  rewrite-target:         /
  service-upstream:       true
  use-port-in-redirects:  true
Events:                   <none>

1 回答

  • 4

    我在Tectonic 1.7.9-tectonic上解决了这个问题 .

    在Tectonic Web UI中,转到Workloads - > Config Maps并按命名空间tectonic-system过滤 .

    在显示的配置映射中,您应该看到一个名为“tectonic-custom-error”的配置映射 .

    打开它然后转到YAML编辑器 .

    在数据字段中,您应该有一个这样的条目:

    custom-http-errors:'404,500,502,503'

    它配置哪些HTTP响应将被捕获并显示在自定义Tectonic错误页面中 .

    如果你不想要其中的一些,只需删除它们,或清除它们 .

    它应该在您保存更新的配置映射后立即生效 .

    当然,您可以使用kubectl edit从命令行进行相同的操作:

    $> kubectl edit cm tectonic-custom-error --namespace = tectonic-system

    希望这可以帮助 :)

相关问题