Chesnay Schepler created FLINK-21128:
----------------------------------------
Summary: Rethink how Kubernetes interfaces with our docker image
Key: FLINK-21128
URL:
https://issues.apache.org/jira/browse/FLINK-21128 Project: Flink
Issue Type: Improvement
Components: Deployment / Kubernetes, Deployment / Scripts
Reporter: Chesnay Schepler
Fix For: 1.13.0
Our native Kubernetes integration assembles a {{java}} command that is passed to the docker-script, which first does some magical stuff to create the classpath
{code}
# Set the Flink related environments
export _FLINK_HOME_DETERMINED=true
. $FLINK_HOME/bin/config.sh
export FLINK_CLASSPATH="`constructFlinkClassPath`:$INTERNAL_HADOOP_CLASSPATHS"
{code}
and then evaluates the given java command.
This magical stuff is a bit problematic for a few reasons:
1) it is _only_ required for Kubernetes to work; it should not be executed in any other case
2) it appears to be required for running anything in Flink that is not part of the docker-entrypoint API (e.g., jobmanager) when it isn't.
3) it unnecessarily spreads kubernetes-specific logic across the flink and flink-docker repositories.
A simple change would be to introduce dedicated Kubernetes scripts into the distribution, which for starters will just import {{config.sh}}, export FLINK_CLASSPATH and evaluate the given command.
In the long-run it would be good if we would not create a java command but instead relied on the existing scripts which do exactly that already.
As is stands we're duplicating code across the distribution and the Kubernetes module, which already caused troubles when we did the log4j2 migration.
Ideally we find a way to reuse the existing code in the Kubernetes module for generating these commands in the existing scripts, e.g., by moving them to the BashJavaUtils.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)