From 049c1511fad1aa78e527cf571f84a574f7bfbfa4 Mon Sep 17 00:00:00 2001 From: Gallardot Date: Sun, 8 Oct 2023 17:27:10 +0800 Subject: [PATCH] [Improvement][K8S] K8S task support passing context parameters to downstream task (#14934) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [Improvement][K8S] K8S task support passing context parameters to downstream task Signed-off-by: Gallardot * [Improvement][K8S] K8S task support passing context parameters to downstream task Signed-off-by: Gallardot * chore: update doc img Signed-off-by: Gallardot * chore: update doc Signed-off-by: Gallardot * chore: add UT Signed-off-by: Gallardot * merge suggestion Co-authored-by: 旺阳 * merge suggestion Co-authored-by: 旺阳 * merge suggestion Co-authored-by: 旺阳 --------- Signed-off-by: Gallardot Co-authored-by: David Zollo Co-authored-by: 旺阳 Co-authored-by: 旺阳 Co-authored-by: xiangzihao <460888207@qq.com> --- docs/docs/en/guide/parameter/context.md | 11 ++++ docs/docs/zh/guide/parameter/context.md | 11 ++++ .../dev/parameter/k8s_context_param.png | Bin 0 -> 95702 bytes .../plugin/task/api/TaskConstants.java | 2 + .../plugin/task/api/k8s/AbstractK8sTask.java | 2 + .../task/api/k8s/AbstractK8sTaskExecutor.java | 6 ++- .../task/api/k8s/impl/K8sTaskExecutor.java | 6 +++ .../plugin/task/api/utils/VarPoolUtils.java | 47 ++++++++++++++++ .../task/api/k8s/K8sTaskExecutorTest.java | 8 +++ .../task/api/utils/VarPoolUtilsTest.java | 50 ++++++++++++++++++ .../plugin/task/k8s/K8sTask.java | 5 ++ .../plugin/task/k8s/K8sTaskTest.java | 13 +++++ .../task/components/node/fields/use-k8s.ts | 2 +- 13 files changed, 161 insertions(+), 2 deletions(-) create mode 100644 docs/img/new_ui/dev/parameter/k8s_context_param.png create mode 100644 dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/main/java/org/apache/dolphinscheduler/plugin/task/api/utils/VarPoolUtils.java create mode 100644 dolphinscheduler-task-plugin/dolphinscheduler-task-api/src/test/java/org/apache/dolphinscheduler/plugin/task/api/utils/VarPoolUtilsTest.java diff --git a/docs/docs/en/guide/parameter/context.md b/docs/docs/en/guide/parameter/context.md index b1d8be786b..ac86014c45 100644 --- a/docs/docs/en/guide/parameter/context.md +++ b/docs/docs/en/guide/parameter/context.md @@ -15,6 +15,7 @@ DolphinScheduler allows parameter transfer between tasks. Currently, transfer di * [Procedure](../task/stored-procedure.md) * [Python](../task/python.md) * [SubProcess](../task/sub-process.md) +* [Kubernetes](../task/kubernetes.md) When defining an upstream node, if there is a need to transmit the result of that node to a dependency related downstream node. You need to set an `OUT` direction parameter to [Custom Parameters] of the [Current Node Settings]. If it is a SubProcess node, there is no need to set a parameter in [Current Node Settings], but an `OUT` direction parameter needs to be set in the workflow definition of the subprocess. @@ -116,3 +117,13 @@ Save the workflow and run it. The result of the downstream task is as follows: ![context-subprocess05](../../../../img/new_ui/dev/parameter/context-subprocess05.png) Although the two parameters var1 and var2 are output in the A task, only the `OUT` parameter var1 is defined in the workflow definition, and the downstream task successfully outputs var1. It proves that the var1 parameter is passed in the workflow with reference to the expected value. + +#### Pass parameter from Kubernetes task to downstream + +Different programming languages may use different logging frameworks in Kubernetes tasks. To be compatible with these frameworks, DolphinScheduler provides a universal logging data format `${(key=value)dsVal}`. Users can output log data in the format `${(key=value)dsVal}` in the terminal logs of their applications, where `key` is the corresponding parameter prop and `value` is the value of that parameter. DolphinScheduler will capture the `${(key=value)dsVal}` in the output logs to capture the parameters and pass them downstream. + +For example + +![kubernetes_context_param](../../../../img/new_ui/dev/parameter/k8s_context_param.png) + +Another special consideration, not always can DolphinScheduler collect pod logs, if the user redirects the log output stream, DolphinScheduler can not collect logs for use and can not use the output parameter, either. diff --git a/docs/docs/zh/guide/parameter/context.md b/docs/docs/zh/guide/parameter/context.md index 16636b6b4e..efcd576a54 100644 --- a/docs/docs/zh/guide/parameter/context.md +++ b/docs/docs/zh/guide/parameter/context.md @@ -15,6 +15,7 @@ DolphinScheduler 允许在任务间进行参数传递,目前传递方向仅支 * [Procedure](../task/stored-procedure.md) * [Python](../task/python.md) * [SubProcess](../task/sub-process.md) +* [Kubernetes](../task/kubernetes.md) 当定义上游节点时,如果有需要将该节点的结果传递给有依赖关系的下游节点,需要在【当前节点设置】的【自定义参数】设置一个方向是 OUT 的变量。如果是 SubProcess 节点无需在【当前节点设置】中设置变量,需要在子流程的工作流定义中设置一个方向是 OUT 的变量。 @@ -115,3 +116,13 @@ Node_mysql 运行结果如下: ![context-subprocess05](../../../../img/new_ui/dev/parameter/context-subprocess05.png) 虽然在 A 任务中输出 var1 和 var2 两个参数,但是工作流定义中只定义了 var1 的 OUT 变量,下游任务成功输出 var1,证明var1 参数参照预期的值在该工作流中传递。 + +#### Kubernetes 任务传递参数 + +在Kubernetes任务中不同的程序开发语言可能会采用不同的日志框架,DolphinScheduler为了兼容不同的日志框架,提供了一种通用的日志数据格式,即 `${(key=value)dsVal}`,用户可以在应用程序的终端日志中输出以格式为 `${(key=value)dsVal}` 结束的日志数据,key 为对应参数的 prop,value 为该参数的值。DolphinScheduler会捕捉输出日志中的 `${(key=value)dsVal}`来进行参数捕捉,从而传递到下游。 + +如下图所示: + +![kubernetes_context_param](../../../../img/new_ui/dev/parameter/k8s_context_param.png) + +另外需要特别注意的是,并非总是可以收集pod日志,如果用户重定向日志输出流,我们既不能收集日志使用,也不能使用输出参数。 diff --git a/docs/img/new_ui/dev/parameter/k8s_context_param.png b/docs/img/new_ui/dev/parameter/k8s_context_param.png new file mode 100644 index 0000000000000000000000000000000000000000..20a394a80cbe617bc68676f542ae1919f5350476 GIT binary patch literal 95702 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 tcs = new HashMap<>(); + tcs.put("${(set_val=123)dsVal}", "set_val=123"); + tcs.put("1970-01-01 ${(set_val=123)dsVal}", "set_val=123"); + tcs.put("1970-01-01 ${(set_val=123)dsVal}123", null); + tcs.put("${(set_val=123}dsVal", null); + tcs.put("#{(set_val=123)dsVal}", "set_val=123"); + tcs.put("1970-01-01 #{(set_val=123)dsVal}", "set_val=123"); + tcs.put("1970-01-01 #{(set_val=123)dsVal}123", null); + tcs.put("#{(set_val=123)dsVal}123", null); + tcs.put("#{(set_val=123dsVal}", null); + + tcs.put("${(set_val=123)dsVal}${(set_val=456)dsVal}", "set_val=123)dsVal}${(set_val=456"); + tcs.put("1970-01-01$#{(set_val=123)dsVal}", "set_val=123"); + tcs.put("1970-01-01{(set_val=123)dsVal}123", null); + tcs.put("1970-01-01$#{(${(set_val=123)})dsVal}", "${(set_val=123)}"); + tcs.put("1970-01-01$#{(${(set_val=123\\)})dsVal}", "${(set_val=123\\)}"); + + for (String tc : tcs.keySet()) { + Assertions.assertEquals(tcs.get(tc), VarPoolUtils.findVarPool(tc)); + } + } +} diff --git a/dolphinscheduler-task-plugin/dolphinscheduler-task-k8s/src/main/java/org/apache/dolphinscheduler/plugin/task/k8s/K8sTask.java b/dolphinscheduler-task-plugin/dolphinscheduler-task-k8s/src/main/java/org/apache/dolphinscheduler/plugin/task/k8s/K8sTask.java index 39ce7343d8..9b42481c6c 100644 --- a/dolphinscheduler-task-plugin/dolphinscheduler-task-k8s/src/main/java/org/apache/dolphinscheduler/plugin/task/k8s/K8sTask.java +++ b/dolphinscheduler-task-plugin/dolphinscheduler-task-k8s/src/main/java/org/apache/dolphinscheduler/plugin/task/k8s/K8sTask.java @@ -102,6 +102,11 @@ public class K8sTask extends AbstractK8sTask { return JSONUtils.toJsonString(k8sTaskMainParameters); } + @Override + protected void dealOutParam(String result) { + this.k8sTaskParameters.dealOutParam(result); + } + public List convertToNodeSelectorRequirements(List expressions) { if (CollectionUtils.isEmpty(expressions)) { return Collections.emptyList(); diff --git a/dolphinscheduler-task-plugin/dolphinscheduler-task-k8s/src/test/java/org/apache/dolphinscheduler/plugin/task/k8s/K8sTaskTest.java b/dolphinscheduler-task-plugin/dolphinscheduler-task-k8s/src/test/java/org/apache/dolphinscheduler/plugin/task/k8s/K8sTaskTest.java index 3416d0288c..7699cd489b 100644 --- a/dolphinscheduler-task-plugin/dolphinscheduler-task-k8s/src/test/java/org/apache/dolphinscheduler/plugin/task/k8s/K8sTaskTest.java +++ b/dolphinscheduler-task-plugin/dolphinscheduler-task-k8s/src/test/java/org/apache/dolphinscheduler/plugin/task/k8s/K8sTaskTest.java @@ -17,6 +17,8 @@ package org.apache.dolphinscheduler.plugin.task.k8s; +import static org.apache.dolphinscheduler.plugin.task.api.utils.VarPoolUtils.VAR_DELIMITER; + import org.apache.dolphinscheduler.common.utils.JSONUtils; import org.apache.dolphinscheduler.plugin.task.api.TaskExecutionContext; import org.apache.dolphinscheduler.plugin.task.api.enums.DataType; @@ -76,6 +78,7 @@ public class K8sTaskTest { k8sTaskParameters.setArgs(args); k8sTaskParameters.setCustomizedLabels(labels); k8sTaskParameters.setNodeSelectors(nodeSelectorExpressions); + k8sTaskParameters.setLocalParams(new ArrayList<>()); k8sTaskParameters.setPullSecret(pullSecret); TaskExecutionContext taskRequest = new TaskExecutionContext(); taskRequest.setTaskInstanceId(taskInstanceId); @@ -130,4 +133,14 @@ public class K8sTaskTest { Assertions.assertEquals(expectedList, nodeSelectorRequirements.get(0).getValues()); } + @Test + public void testDealOutParam() { + String result = "key=123" + VAR_DELIMITER; + k8sTask.getParameters().localParams.add(new Property("key", Direct.OUT, DataType.VARCHAR, "value")); + k8sTask.dealOutParam(result); + k8sTask.getParameters().getVarPool().forEach(property -> { + Assertions.assertNotEquals("value", property.getValue()); + Assertions.assertEquals("123", property.getValue()); + }); + } } diff --git a/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-k8s.ts b/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-k8s.ts index 66be87dfeb..b545d15463 100644 --- a/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-k8s.ts +++ b/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-k8s.ts @@ -113,7 +113,7 @@ export function useK8s(model: { [field: string]: any }): IJsonItem[] { field: 'nodeSelectors', name: 'node_selectors' }), - ...useCustomParams({ model, field: 'localParams', isSimple: true }) + ...useCustomParams({ model, field: 'localParams', isSimple: false }) ] }