使用本地脚本作为Argo工作流的源



我有一个python脚本,我想使用Argo工作流在云上执行。

目前,我交替地将源代码复制到工作流本身(使用复制和粘贴),这是不方便的,并导致问题。第二个选项是将我的项目目录上传到s3存储桶,然后将源代码下载到Argo pod,然后运行命令。这两种方法都需要在我修改脚本后同步源代码的一些操作。

是否有一种方法来指定在Argo工作流从哪里应该采取的源代码?比如说,不是创建一个从.yml文件中指定的字符串中获取源的脚本模板,而是通过指定本地路径从本地文件中获取源?

  • 最好不要使用Git
  • 另外,如果可能的话,希望解决方案支持附加额外的依赖源代码文件

如果您有比.yml文件中使用的简单脚本更复杂的东西,那么为您的工作流预构建的容器模板使用docker映像可能是值得的。映像将命名为my-script,入口点将命名为my-entrypoint假设脚本是python语言,名为script.py,您可以拥有以下文件:

workflow.yml

apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: workflow-name-
spec:
entrypoint: my-entrypoint 
templates:
- name: my-entrypoint
container:
image: my-script
command: python3
args:
- script.py

script.py

import requests
response = requests.get('www.google.com')
print(response.status_code)

requirements.txt

requests

Dockerfile

FROM python:3.11.1-slim
COPY . .
RUN pip3 install -r requirements.txt
CMD python3 script.py

假设您可以将映像构建到集群(在minikube的情况下)。你运行:

docker build -t my-script .

如果您决定进行测试,这种方法还可以使您的代码可测试。为此,没有必要使用Git,尽管我鼓励您使用它进行协作和版本控制。另外,Dockerfile中的COPY命令将目录中的所有文件复制到映像中,这样您就可以随时获得其他信息。我不建议您以这种方式复制实际数据,而是使用argoparametersartifacts

查看https://argoproj.github.io/argo-workflows/workflow-concepts/获取更多信息

相关内容

  • 没有找到相关文章

最新更新