通过增加Ingress实现服务降级
近期遇到一个问题,产品升级过程过程中实现所有服务访问定向到升级页面,升级完成后,产品所有服务恢复正常,同时,针对部分服务进行过滤(监控、告警等),升级过程中仍保持可访问状态。
产品通过Nginx-ingress-controller提供http服务,通过升级前创建ingress,升级后删除ingress实现升级过程中的重定向吗,ingress yaml如下:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingressName
namespace: myNameSpace
annotations:
kubernetes.io/ingress.class: “nginx”
ingress.kubernetes.io/use-regex: “true”
ingress.kubernetes.io/server-snippet: |
if ($uri !~* "(.css)|(.png)") {
rewrite /(.) /getUpgradePage;
}
if ($uri ~ "(.*css)|(.png)") {
rewrite (.) /$1;
}
spec:
rules:
- http:
paths:
//这里不支持标准的正则,例如(!?.*png)(!?.css),无法创建ingress
- path: /(.)
backend:
serviceName: gate