我们目前正在Kubernetes上以独立模式运行一个flink集群。我们想探索是否可以在AWS(KDA(上迁移到托管的flink。
但我似乎没有发现任何文档或指示可以注入环境变量?这些是否需要作为运行时参数提供?
相关的,是否可以覆盖我们当前在托管flink中的flink-conf.yml中指定的默认flink配置?
提前感谢!
我会回答我自己的问题,我似乎没有办法像在Kubernetes中使用configmap那样提供环境变量。相反,我们需要使用可以在KDA中定义的Runtime属性。然后可以使用KinesisAnalyticsRuntime.getApplicationProperties()
进行检索
例如:
val params: ParameterTool = ParameterTool.fromArgs(args)
val config = params.get("env", "") match {
case "local" => AppConfiguration.initialize(sys.env)
case _ => // KDA
val kdaProperties = KinesisAnalyticsRuntime.getApplicationProperties()
logger.error(
s"kdaProperties $kdaProperties",
Some(Map("kda" -> kdaProperties))
)
Option(kdaProperties.get("DevProperties")) match {
case Some(kdaProperties) =>
val kdaPropsToMap = kdaProperties.asScala.toMap
AppConfiguration.initialize(kdaPropsToMap)
case None =>
logger.error(s"could not read KDA runtime properties", Some(Map("kda" -> kdaProperties)))
throw new Error(
"unable to read KDA runtime properties"
) // scalafix:ok
}
}
在KDA中为Runtime属性定义的分组键用于获取这些属性。
这也意味着可以将flink-conf.yml配置为运行时属性,然后需要在运行时设置(我的理解是(