【发布时间】: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