为了账号安全,请及时绑定邮箱和手机立即绑定

将 yaml 文件注入 Argo 工作流程步骤的最佳方法是什么?

将 yaml 文件注入 Argo 工作流程步骤的最佳方法是什么?

Go
牧羊人nacy 2022-05-23 15:57:08
概括:我们有一个 golang 应用程序,可以根据请求将 Argo 工作流提交到 kubernetes 集群。我想将 yaml 文件传递给其中一个步骤,我想知道这样做的选项是什么。环境:阿尔戈:v2.4.2K8s:1.13.12-gke.25额外细节:最终,我想将此文件传递给测试步骤,如下例所示:apiVersion: argoproj.io/v1alpha1kind: Workflowmetadata:  generateName: test-spec:  entrypoint: test  templates:  - name: test    container:      image: gcr.io/testproj/test:latest      command: [bash]      source: |        python test.py --config_file_path=/path/to/config.yaml此步骤中使用的图像将具有一个 python 脚本,该脚本接收该文件的路径然后访问它。
查看完整描述

1 回答

?
皈依舞

TA贡献1851条经验 获得超3个赞

选项1:将文件作为参数传递

工作流程参数通常是一小段文本或数字。但是,如果您的 yaml 文件相当小,您可以对其进行字符串编码并将其作为参数传递。


apiVersion: argoproj.io/v1alpha1

kind: Workflow

metadata:

  generateName: test-

spec:

  entrypoint: test

  arguments:

    parameters:

    - name: yaml

      value: "string-encoded yaml"

  templates:

  - name: test

    container:

      image: gcr.io/testproj/test:latest

      command: [bash]

      source: |

        # In this case, the string-encoding should be BASH-compatible.

        python test.py --config_file_as_string="{{inputs.parameters.message}}"

选项 2:将文件作为工件传递

Argo 支持多种类型的工件。对于您的用例来说,最简单的可能是原始参数类型。


apiVersion: argoproj.io/v1alpha1

kind: Workflow

metadata:

  generateName: test-

spec:

  entrypoint: test

  templates:

  - name: test

    inputs:

      artifacts:

      - name: yaml

        path: /path/to/config.yaml

        raw:

          data: |

            this is

            the raw file

            contents

    container:

      image: gcr.io/testproj/test:latest

      command: [bash]

      source: |

        python test.py --config_file_path=/path/to/config.yaml

此外raw,Argo 支持“S3、Artifactory、HTTP 和 [和] Git”工件(我认为还有其他)。


例如,如果您选择使用 S3,您可以从您的 golang 应用程序上传文件,然后将 S3 存储桶和密钥作为参数传递。


Golang 客户端

我对 golang 客户端不熟悉,但是传递参数肯定是支持的,我认为传入原始参数也应该支持。


查看完整回答
反对 回复 2022-05-23
  • 1 回答
  • 0 关注
  • 131 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信