如何在kubernetes中为Istio loadbalancer创建自定义错误页面

时间:2018-06-07 09:45:51

标签: istio

我似乎无法找到/了解如何更改kubernetes中Istio loadbalancer的默认错误登录页面。

例如503"没有健康的上游"页。

是否可以在Istio中更改这些内容?如果是这样我怎么去做呢?

提前致谢!

2 个答案:

答案 0 :(得分:1)

对于Istio上的“本机”方法,您必须等待。 Envoy团队将自定义错误响应添加为1.9.0版本里程碑。希望他们将其包含在发行版中,我们将在今年年底之前获得它。这样我们就可以在Istio上使用它。 https://github.com/envoyproxy/envoy/issues/1178

关于自定义方法,您可以使用将可以提供这些自定义错误页面的nginx(位于同一窗格中)放置在任何面向用户的应用程序前面。但是,您将无法更改Envoy代理本身给出的一些错误,例如503或404。

(尚不起作用,请参见下文)如果您还需要自定义Envoy给出的错误,则另一种方法是使用nginx-ingress-controller,它可以与Istio一起提供自定义错误页面。如果您想尝试,请查看此问题以及他们在第一个评论中引用的问题,这可能会有所帮助。 https://github.com/kubernetes/ingress-nginx/issues/2126

更新2018年11月21日

要使用这种方法,您还必须等待。 (可能不止是使节),我自己进行了测试,并且遇到了Nginx必须解决的问题才能使其正常工作。定义默认后端时,nginx直接从kubernetes服务获取端点(ip:port),然后尝试访问集群上的这些IP。它不是通过名称访问并让Istio路由该连接,而是它的工作方式。

看看这个https://github.com/kubernetes/ingress-nginx/issues/2318

答案 1 :(得分:0)

2020更新

Envoy现在已添加此功能。这是一个示例配置,该配置将您自己的错误字符串用于HTTP 503响应:

mappers:
- filter:
    status_code_filter:
      comparison:
        op: EQ
        value:
          default_value: 503
          runtime_key: key_b
  status_code: 503
  body:
    inline_string: "Custom 503 page content can go here"

有关如何进行自定义的更多详细信息,请查看文档--https://github.com/envoyproxy/envoy/blob/master/docs/root/configuration/http/http_conn_man/local_reply.rst