提问者:小点点

KubeFlow管道我们如何使用内联存储使用嵌入式iFrame创建静态超文本标记语言可视化?


我想知道如何使用内联存储为kubeflow管道创建一个简单的静态超文本标记语言可视化?
我的用例是我想传递一个包含简单iframe的原始html字符串。

文档中的示例不适合我(kfp sdk v1)。
这是我遵循的文档:https://www.kubeflow.org/docs/components/pipelines/sdk/output-viewer/#web-app

谢啦


共1个答案

匿名用户

更新:
我测试了kfp sdk v2的输出[超文本标记语言],它可以工作,但我遇到了其他问题。
首先,Kubeflow html查看器创建了一个带有空白src和srcdoc="您的静态html"的iframe。这使得在您的html中无法使用iframe,因为您有一个嵌套的iframe(来自html查看器的父级和来自实际html的嵌套)。

解决方案:

我找到了一个适用于所有用例的KFPSDKv1和v2的解决方案,我使用markdown可视化而不是超文本标记语言可视化。由于markdown支持内联超文本标记语言,我能够直接将我的html粘贴到markdown输出。与使用超文本标记语言可视化相比,这支持iframe。

以下是一些代码来说明解决方案:

from kfp.components import create_component_from_func


def markdown_vis(mlpipeline_ui_metadata_path: kfp.components.OutputPath()):
    import json

    metadata = {
    'outputs' : [
    {
      'storage': 'inline',
      'source': f"<iframe src=\"https://www.google.ca/\" frameborder=\"0\" allowFullScreen=\"true\" width=\"950\" height=\"600\"/>",
      'type': 'markdown',
    }]
    }

    with open(mlpipeline_ui_metadata_path, 'w') as metadata_file:
        json.dump(metadata, metadata_file)

markdown_op = create_component_from_func(markdown_vis)

我还测试了文档,它的工作原理:

  • KFP V1Doc:https://www.kubeflow.org/docs/components/pipelines/sdk/output-viewer/#markdown-1
  • KFP V2Doc:https://www.kubeflow.org/docs/components/pipelines/sdk/output-viewer/#markdown

相关问题