如何将凭证从kafka和数据库传递到FlinkSessionJob

问题描述 投票:0回答:1

我在 k8s 中部署了一个 flink Operator 版本 1.10,flink 本身 (FlinkDeployment) 部署为集群会话,我想部署几个不同的 FlinkSessionJobs,并且对于每个 FlinkSessionJobs,我需要定义自己的凭据以连接到 Kafka 主题和数据库,我如何将它们传递给 flink 作业?

我的 Kafka 部署为单独的集群,数据库也是如此。 起初我想在k8s中创建一个秘密并在

中从中传递值

起初我想在 k8s 中创建一个 Secret 并在 FlinkSessionJob 清单中传递其中的值 例如,像这样: 环境:

  • 名称:KAFKA_USERNAME 值来自: 秘密密钥参考: name: kafka-secrets # Kubernetes 中的秘密名称 key: 用户名 # 秘密中的密钥
  • 名称:KAFKA_PASSWORD 值来自: 秘密密钥参考: name: kafka-secrets # Kubernetes 中的秘密名称 key: 密码 # 密钥里面的秘密

但据我了解,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

我在描述中描述了所有内容

kubernetes apache-kafka apache-flink
1个回答
0
投票

FlinkSessionJob 清单不支持 env 参数

确实如此,通过

podTemplate.spec.env

© www.soinside.com 2019 - 2024. All rights reserved.