This is an automated email from the ASF dual-hosted git repository.
gyfora pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/flink-kubernetes-operator.git
The following commit(s) were added to refs/heads/main by this push:
new ff5c00c6 FLINK-31140 - Load additional dependencies in operator
classpath from user
ff5c00c6 is described below
commit ff5c00c695cdf844aca0c68242279da3afad124c
Author: Tamir Sagi <[email protected]>
AuthorDate: Thu Mar 2 17:08:50 2023 +0200
FLINK-31140 - Load additional dependencies in operator classpath from user
---
Dockerfile | 6 ++++--
docker-entrypoint.sh | 4 ++--
docs/content/docs/operations/plugins.md | 15 +++++++++++++++
3 files changed, 21 insertions(+), 4 deletions(-)
diff --git a/Dockerfile b/Dockerfile
index be926629..02c9f711 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -36,13 +36,16 @@ RUN cd /app/tools/license; mkdir jars; cd jars; \
# stage
FROM eclipse-temurin:11-jre-jammy
ENV FLINK_HOME=/opt/flink
-ENV FLINK_PLUGINS_DIR=/opt/flink/plugins
+ENV FLINK_PLUGINS_DIR=$FLINK_HOME/plugins
ENV OPERATOR_VERSION=1.5-SNAPSHOT
ENV OPERATOR_JAR=flink-kubernetes-operator-$OPERATOR_VERSION-shaded.jar
ENV AUTOSCALER_JAR=flink-kubernetes-operator-autoscaler-$OPERATOR_VERSION.jar
ENV WEBHOOK_JAR=flink-kubernetes-webhook-$OPERATOR_VERSION-shaded.jar
ENV
FLINK_KUBERNETES_SHADED_JAR=flink-kubernetes-standalone-$OPERATOR_VERSION-shaded.jar
+ENV OPERATOR_LIB=$FLINK_HOME/operator-lib
+RUN mkdir -p $OPERATOR_LIB
+
WORKDIR /flink-kubernetes-operator
RUN groupadd --system --gid=9999 flink && \
useradd --system --home-dir $FLINK_HOME --uid=9999 --gid=flink flink
@@ -63,7 +66,6 @@ RUN chown -R flink:flink $FLINK_HOME && \
chown flink:flink $FLINK_KUBERNETES_SHADED_JAR && \
chown flink:flink /docker-entrypoint.sh
-
ARG SKIP_OS_UPDATE=true
# Updating Debian
diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh
index 756b1d07..71ab065d 100755
--- a/docker-entrypoint.sh
+++ b/docker-entrypoint.sh
@@ -29,12 +29,12 @@ if [ "$1" = "help" ]; then
elif [ "$1" = "operator" ]; then
echo "Starting Operator"
- exec java -cp
./$FLINK_KUBERNETES_SHADED_JAR:./$OPERATOR_JAR:./$AUTOSCALER_JAR $LOG_CONFIG
$JVM_ARGS org.apache.flink.kubernetes.operator.FlinkOperator
+ exec java -cp
"./$FLINK_KUBERNETES_SHADED_JAR:./$OPERATOR_JAR:./$AUTOSCALER_JAR:$OPERATOR_LIB/*"
$LOG_CONFIG $JVM_ARGS org.apache.flink.kubernetes.operator.FlinkOperator
elif [ "$1" = "webhook" ]; then
echo "Starting Webhook"
# Adds the operator shaded jar on the classpath when the webhook starts
- exec java -cp
./$FLINK_KUBERNETES_SHADED_JAR:./$OPERATOR_JAR:./$WEBHOOK_JAR $LOG_CONFIG
$JVM_ARGS org.apache.flink.kubernetes.operator.admission.FlinkOperatorWebhook
+ exec java -cp
"./$FLINK_KUBERNETES_SHADED_JAR:./$OPERATOR_JAR:./$WEBHOOK_JAR:$OPERATOR_LIB/*"
$LOG_CONFIG $JVM_ARGS
org.apache.flink.kubernetes.operator.admission.FlinkOperatorWebhook
fi
args=("${args[@]}")
diff --git a/docs/content/docs/operations/plugins.md
b/docs/content/docs/operations/plugins.md
index 855b2deb..efbf34e7 100644
--- a/docs/content/docs/operations/plugins.md
+++ b/docs/content/docs/operations/plugins.md
@@ -109,3 +109,18 @@ In order to enable your custom `FlinkResourceListener` you
need to:
1. Implement the interface
2. Add your listener class to
`org.apache.flink.kubernetes.operator.listener.FlinkResourceListener` in
`META-INF/services`
3. Package your JAR and add it to the plugins directory of your operator
image (`/opt/flink/plugins`)
+
+
+## Additional Dependencies
+In some cases, users may need to add required dependencies onto the operator
classpath.
+
+When building the custom image, The additional dependencies shall be copied to
`/opt/flink/operator-lib` with the environment variable: `OPERATOR_LIB`
+That folder is added to classpath upon initialization.
+
+```shell script
+ FROM apache/flink-kubernetes-operator
+ ARG ARTIFACT1=custom-artifact1.jar
+ ARG ARTIFACT2=custom-artifact2.jar
+ COPY target/$ARTIFACT1 $OPERATOR_LIB
+ COPY target/$ARTIFACT2 $OPERATOR_LIB
+```