如何在 Tectonic kubernetes 设置中禁用 Ingress 对错误的拦截
How to disable interception of errors by Ingress in a Tectonic kubernetes setup
我在 Kubernetes 设置中有几个 NodeJS 后端 运行 作为 pods,上面有 Ingress 管理的 nginx。
这些后端是 API 服务器,在正常操作期间可以 return 400、404 或 500 响应。这些响应将为客户提供有意义的数据;除了状态代码之外,响应在正文中还有一个 JSON 序列化结构,通知错误原因或建议解决方案。
但是,Ingress 会拦截这些错误响应,并return 一个错误页面。因此客户端收不到服务试图提供的信息。
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>
我已经在 Tectonic 1.7.9-tectonic.4 上解决了这个问题。
在 Tectonic web UI 中,转到工作负载 -> 配置映射并按命名空间构造系统过滤。
在显示的配置映射中,您应该会看到一个名为 "tectonic-custom-error" 的配置映射。
打开它并转到 YAML 编辑器。
在数据字段中,您应该有这样一个条目:
custom-http-errors: '404, 500, 502, 503'
配置哪些 HTTP 响应将被捕获并与自定义 Tectonic 错误页面一起显示。
如果您不想要其中的某些内容,只需将其删除或全部清除。
保存更新的配置映射后,它应该会立即生效。
当然,您可以从命令行使用 kubectl edit:
$> kubectl edit cm tectonic-custom-error --namespace=tectonic-system
希望这对您有所帮助:)
我在 Kubernetes 设置中有几个 NodeJS 后端 运行 作为 pods,上面有 Ingress 管理的 nginx。
这些后端是 API 服务器,在正常操作期间可以 return 400、404 或 500 响应。这些响应将为客户提供有意义的数据;除了状态代码之外,响应在正文中还有一个 JSON 序列化结构,通知错误原因或建议解决方案。
但是,Ingress 会拦截这些错误响应,并return 一个错误页面。因此客户端收不到服务试图提供的信息。
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>
我已经在 Tectonic 1.7.9-tectonic.4 上解决了这个问题。
在 Tectonic web UI 中,转到工作负载 -> 配置映射并按命名空间构造系统过滤。
在显示的配置映射中,您应该会看到一个名为 "tectonic-custom-error" 的配置映射。
打开它并转到 YAML 编辑器。
在数据字段中,您应该有这样一个条目:
custom-http-errors: '404, 500, 502, 503'
配置哪些 HTTP 响应将被捕获并与自定义 Tectonic 错误页面一起显示。
如果您不想要其中的某些内容,只需将其删除或全部清除。
保存更新的配置映射后,它应该会立即生效。
当然,您可以从命令行使用 kubectl edit:
$> kubectl edit cm tectonic-custom-error --namespace=tectonic-system
希望这对您有所帮助:)