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



摘要:

我们有一个golang应用程序,可以根据请求向kubernetes集群提交Argo工作流。我想把一个yaml文件传递给其中一个步骤,我想知道有什么选择。

环境:

  • Argo:v2.4.2
  • K8s:1.13.12-gke.25

其他详细信息:

最后,我想将此文件传递到测试步骤,如本例所示:

apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
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脚本,该脚本接收该文件的路径,然后访问它

要使用golang提交Argo工作流,我们使用以下依赖项:

  • https://github.com/argoproj/argo-workflows/tree/master/pkg/client
  • https://github.com/argoproj/argo-workflows/tree/master/pkg/apis

谢谢。

选项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 bucket和key作为参数传递。

Golang客户端

我不熟悉golang客户端,但当然支持传递参数,我认为也应该支持传递原始参数。

相关内容

  • 没有找到相关文章

最新更新