This is an automated email from the ASF dual-hosted git repository. pdallig pushed a commit to branch branch-0.10 in repository https://gitbox.apache.org/repos/asf/zeppelin.git
The following commit(s) were added to refs/heads/branch-0.10 by this push: new cd8d1ce [ZEPPELIN-5558] Add k8s interpreter user as a label cd8d1ce is described below commit cd8d1cec4c80c7d8f4a00f8b28597bf28a631aef Author: Philipp Dallig <philipp.dal...@gmail.com> AuthorDate: Tue Oct 12 09:36:23 2021 +0200 [ZEPPELIN-5558] Add k8s interpreter user as a label This PR adds a property for the k8s template that contains the user and uses the information to add an additional label to the interpreter pod. Kubernetes admins can now quite quickly see which user has started the interpreter pod. - Improvement * https://issues.apache.org/jira/browse/ZEPPELIN-5558 * CI * Does the licenses files need update? No * Is there breaking changes for older versions? No * Does this needs documentation? No Author: Philipp Dallig <philipp.dal...@gmail.com> Closes #4249 from Reamer/k8s_user and squashes the following commits: e2429e7ea [Philipp Dallig] Add k8s interpreter user as a label (cherry picked from commit 27dde459fad08ead19a9d99b4d37a2c05deb8c12) Signed-off-by: Philipp Dallig <philipp.dal...@gmail.com> --- k8s/interpreter/100-interpreter-spec.yaml | 1 + .../zeppelin/interpreter/launcher/K8sRemoteInterpreterProcess.java | 4 +++- .../interpreter/launcher/K8sRemoteInterpreterProcessTest.java | 2 ++ .../k8s-standard/src/test/resources/k8s-specs/interpreter-spec.yaml | 1 + 4 files changed, 7 insertions(+), 1 deletion(-) diff --git a/k8s/interpreter/100-interpreter-spec.yaml b/k8s/interpreter/100-interpreter-spec.yaml index 3b27ad5..c82ffa9 100644 --- a/k8s/interpreter/100-interpreter-spec.yaml +++ b/k8s/interpreter/100-interpreter-spec.yaml @@ -23,6 +23,7 @@ metadata: app: {{zeppelin.k8s.interpreter.pod.name}} interpreterGroupId: {{zeppelin.k8s.interpreter.group.id}} interpreterSettingName: {{zeppelin.k8s.interpreter.setting.name}} + user: {{ zeppelin.k8s.interpreter.user }} {% if zeppelin.k8s.server.uid is defined %} ownerReferences: - apiVersion: v1 diff --git a/zeppelin-plugins/launcher/k8s-standard/src/main/java/org/apache/zeppelin/interpreter/launcher/K8sRemoteInterpreterProcess.java b/zeppelin-plugins/launcher/k8s-standard/src/main/java/org/apache/zeppelin/interpreter/launcher/K8sRemoteInterpreterProcess.java index 09f4999..e67af92 100644 --- a/zeppelin-plugins/launcher/k8s-standard/src/main/java/org/apache/zeppelin/interpreter/launcher/K8sRemoteInterpreterProcess.java +++ b/zeppelin-plugins/launcher/k8s-standard/src/main/java/org/apache/zeppelin/interpreter/launcher/K8sRemoteInterpreterProcess.java @@ -291,6 +291,7 @@ public class K8sRemoteInterpreterProcess extends RemoteInterpreterManagedProcess // k8s template properties k8sProperties.put("zeppelin.k8s.namespace", getNamespace()); + k8sProperties.put("zeppelin.k8s.interpreter.user", String.valueOf(userName).trim()); k8sProperties.put("zeppelin.k8s.interpreter.pod.name", getPodName()); k8sProperties.put("zeppelin.k8s.interpreter.serviceAccount", getServiceAccount()); k8sProperties.put("zeppelin.k8s.interpreter.container.name", interpreterGroupName.toLowerCase()); @@ -306,6 +307,7 @@ public class K8sRemoteInterpreterProcess extends RemoteInterpreterManagedProcess k8sProperties.put("zeppelin.k8s.server.uid", ownerUID()); k8sProperties.put("zeppelin.k8s.server.pod.name", ownerName()); } + Map<String, String> k8sEnv = new HashMap<>(getEnv()); // environment variables k8sEnv.put(ENV_SERVICE_DOMAIN, getEnv().getOrDefault(ENV_SERVICE_DOMAIN, System.getenv(ENV_SERVICE_DOMAIN) == null ? "local.zeppelin-project.org" : System.getenv(ENV_SERVICE_DOMAIN))); @@ -345,7 +347,7 @@ public class K8sRemoteInterpreterProcess extends RemoteInterpreterManagedProcess getPodName(), k8sEnv.get(ENV_SERVICE_DOMAIN) )); - + // Resources of Interpreter Pod if (properties.containsKey(SPARK_DRIVER_MEMORY)) { String memory; diff --git a/zeppelin-plugins/launcher/k8s-standard/src/test/java/org/apache/zeppelin/interpreter/launcher/K8sRemoteInterpreterProcessTest.java b/zeppelin-plugins/launcher/k8s-standard/src/test/java/org/apache/zeppelin/interpreter/launcher/K8sRemoteInterpreterProcessTest.java index eafad5a..d2dfdc6 100644 --- a/zeppelin-plugins/launcher/k8s-standard/src/test/java/org/apache/zeppelin/interpreter/launcher/K8sRemoteInterpreterProcessTest.java +++ b/zeppelin-plugins/launcher/k8s-standard/src/test/java/org/apache/zeppelin/interpreter/launcher/K8sRemoteInterpreterProcessTest.java @@ -123,6 +123,7 @@ public class K8sRemoteInterpreterProcessTest { assertEquals("12321:12321" , p.get("zeppelin.k8s.interpreter.rpc.portRange")); assertEquals("zeppelin.server.service" , p.get("zeppelin.k8s.server.rpc.service")); assertEquals(12320 , p.get("zeppelin.k8s.server.rpc.portRange")); + assertEquals("null", p.get("zeppelin.k8s.interpreter.user")); assertEquals("v1", p.get("my.key1")); assertEquals("V1", envs.get("MY_ENV1")); @@ -218,6 +219,7 @@ public class K8sRemoteInterpreterProcessTest { // then assertEquals("spark-container:1.0", p.get("zeppelin.k8s.spark.container.image")); assertEquals(String.format("//4040-%s.%s", intp.getPodName(), "mydomain"), p.get("zeppelin.spark.uiWebUrl")); + assertEquals("mytestUser", p.get("zeppelin.k8s.interpreter.user")); envs = (HashMap<String, String>) p.get("zeppelin.k8s.envs"); assertTrue( envs.containsKey("SPARK_HOME")); diff --git a/zeppelin-plugins/launcher/k8s-standard/src/test/resources/k8s-specs/interpreter-spec.yaml b/zeppelin-plugins/launcher/k8s-standard/src/test/resources/k8s-specs/interpreter-spec.yaml index 94717c2..5ca0637 100644 --- a/zeppelin-plugins/launcher/k8s-standard/src/test/resources/k8s-specs/interpreter-spec.yaml +++ b/zeppelin-plugins/launcher/k8s-standard/src/test/resources/k8s-specs/interpreter-spec.yaml @@ -23,6 +23,7 @@ metadata: app: {{zeppelin.k8s.interpreter.pod.name}} interpreterGroupId: {{zeppelin.k8s.interpreter.group.id}} interpreterSettingName: {{zeppelin.k8s.interpreter.setting.name}} + user: {{ zeppelin.k8s.interpreter.user }} {% if zeppelin.k8s.server.uid is defined %} ownerReferences: - apiVersion: v1