我在 k8s 中部署了一个 flink Operator 版本 1.10,flink 本身 (FlinkDeployment) 部署为集群会话,我想部署几个不同的 FlinkSessionJobs,并且对于每个 FlinkSessionJobs,我需要定义自己的凭据以连接到 Kafka 主题和数据库,我如何将它们传递给 flink 作业?
我的 Kafka 部署为单独的集群,数据库也是如此。 起初我想在k8s中创建一个秘密并在
中从中传递值起初我想在 k8s 中创建一个 Secret 并在 FlinkSessionJob 清单中传递其中的值 例如,像这样: 环境:
但据我了解,FlinkSessionJob 清单不支持 env 参数,因此无法通过这种方式传递凭据。
这是我的 FlinkDeployment 清单:
apiVersion: flink.apache.org/v1beta1
kind: FlinkDeployment
metadata:
name: basic-cluster
spec:
image: flink:1.19
flinkVersion: v1_19
flinkConfiguration:
taskmanager.numberOfTaskSlots: "24"
serviceAccount: flink
jobManager:
resource:
memory: "1024m"
cpu: 0.5
podTemplate:
spec:
securityContext:
runAsUser: 1000
runAsNonRoot: true
taskManager:
resource:
memory: "1024m"
cpu: 0.5
podTemplate:
spec:
securityContext:
runAsUser: 1000
runAsNonRoot: true
ingress:
template: "flink-test-pull.ru/{{name}}(/|$)(.*)"
className: "nginx"
annotations:
nginx.ingress.kubernetes.io/rewrite-target: "/$2"
nginx.ingress.kubernetes.io/auth-type: basic
nginx.ingress.kubernetes.io/auth-secret: basic-auth
nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required - flink'
这是我的 FlinkSessionJob 示例:
apiVersion: flink.apache.org/v1beta1
kind: FlinkSessionJob
metadata:
name: flink-job-example
spec:
deploymentName: basic-cluster
job:
jarURI: https://URL_to_my_app-0.0.1.jar
parallelism: 2
upgradeMode: stateless
我在描述中描述了所有内容
FlinkSessionJob 清单不支持 env 参数
确实如此,通过
podTemplate.spec.env