使用后端serviceName regex/通配符或选择器的Kubernetes入口 [英] Kubernetes ingress with backend serviceName regex/wildcard or selector

本文介绍了使用后端serviceName regex/通配符或选择器的Kubernetes入口的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,我们有一个使用Flink运算符获得的蓝绿色部署的Flink应用程序。

Flinkk8soperator用于Apache Flink。运营商部署后启动以下三个K8服务:

my-flinkapp-14hdhsr (Top level service)
my-flinkapp-green
my-flinkapp-blue

设想是蓝绿色中的两个中的一个将处于活动状态,并且将具有Pod(蓝色或绿色)。

并且活动的选择器将与选择器flink-application-version=blue一起存储在顶层myflinkapp-14hdhsr服务中。或者是绿色的。具体如下:

Labels:  flink-app=my-flinkapp
         flink-app-hash=14hdhsr
         flink-application-version=blue
Annotations:       <none>
Selector:          flink-app=my-flinkapp,flink-application-version=blue,flink-deployment-type=jobmanager,

我有一个如下定义的入口,我要使用它指向顶级服务。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$2
    nginx.ingress.kubernetes.io/configuration-snippet: |
      proxy_set_header Accept-Encoding "";
      sub_filter '<head>' '<head> <base href="/happy-flink-ui/">';
    nginx.ingress.kubernetes.io/use-regex: "true"
    nginx.ingress.kubernetes.io/auth-url: "https://$host/oauth2/auth"
    nginx.ingress.kubernetes.io/auth-signin: "https://$host/oauth2/start?rd=$escaped_request_uri"
  name: flink-secure-ingress-my-flink-app
  namespace: happy-flink-flink
spec:
  rules:
    - host: flinkui-myapp.foo.com
      http:
        paths:
          - path: /happy-flink-ui(/|$)(.*)
            backend:
              serviceName: my-flinkapp-14hdhsr // This works but....
              servicePort: 8081

我面临的问题是顶层服务在末尾不断更改散列,因为Flink操作符在每次部署时都会更改它。例如。myflinkapp-89hddew等

所以我不能在入口定义中包含静电服务名称。

所以我想知道入口是否可以基于选择器或服务名称的正则表达式选择服务,这可以说明顶级应用服务名称加上末尾的散列。

flink-app-hash(即服务名称的散列部分-14hdsr)也是顶级服务中标签的一部分。不管怎样,我可以利用这一点吗?

不知道是否可以在此应用默认后端?

使用Flink运算符的人是否使用不同的方法解决此问题?

推荐答案

不幸的是,无法在.backend.serviceName内部使用任何类型的regex/wildcards/jsonpath/variables/references。 您只能在path中使用正则表达式:Ingress Path Matching

且不会很快实施:Allow variable references in backend spec处于挂起阶段。

听到任何可能的解决方案将非常有趣。它以前在堆栈上讨论过,但是没有任何进展:https://stackoverflow.com/a/60810435/9929015

这篇关于使用后端serviceName regex/通配符或选择器的Kubernetes入口的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆