【问题标题】:Kubernetes ingress with backend serviceName regex/wildcard or selector具有后端 serviceName 正则表达式/通配符或选择器的 Kubernetes 入口
【发布时间】:2022-02-11 18:41:47
【问题描述】:

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

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

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

这个想法是,蓝绿色中的两者之一将是活跃的并且会有豆荚(蓝色或绿色)。

活动选择器的选择器将存储在顶级myflinkapp-14hdhsr服务中,选择器flink-application-version=blue。或绿色。如下:

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 .etc.

所以我不能在入口定义中使用静态服务名称。

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

flink-app-hash(即服务名称的哈希部分 - 14hdsr)也是顶级服务中标签的一部分。无论如何我可以利用它?

想知道这里是否可以应用默认后端?

使用 Flink 运算符的人是否以不同的方式解决了这个问题?

【问题讨论】:

    标签: kubernetes apache-flink kubernetes-ingress kubernetes-service blue-green-deployment


    【解决方案1】:

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

    而且它不会很快实施:Allow variable references in backend spec 处于绞刑阶段。

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

    【讨论】:

      猜你喜欢
      • 2011-02-12
      • 1970-01-01
      • 2018-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多