You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Argo Workflow中指定本地脚本作为执行源码?

解决方案

方案1:用Kubernetes ConfigMap挂载本地源码

这是最直接的方式,无需外部存储,直接把本地脚本和依赖文件打包成ConfigMap,在Argo Workflow中挂载使用:

  1. 打包本地项目到ConfigMap
    假设你的项目结构是:

    my-python-project/
    ├── main.py
    ├── requirements.txt
    └── utils/
        └── helper.py
    

    执行命令把整个项目目录(或指定文件)打包成ConfigMap:

    kubectl create configmap python-project --from-file=./my-python-project/
    

    这样会把目录里所有文件都加入ConfigMap,包括依赖的utils子目录。

  2. 在Argo Workflow中挂载并执行
    编写Workflow YAML,将ConfigMap挂载到Pod的指定路径,然后安装依赖并执行脚本:

    apiVersion: argoproj.io/v1alpha1
    kind: Workflow
    metadata:
      generateName: python-script-
    spec:
      entrypoint: run-python
      templates:
      - name: run-python
        container:
          image: python:3.10-slim
          command: [bash]
          args:
          - -c
          - |
            pip install --no-cache-dir -r /app/requirements.txt
            python /app/main.py
          volumeMounts:
          - name: script-volume
            mountPath: /app
        volumes:
        - name: script-volume
          configMap:
            name: python-project
    

    当你修改本地代码后,只需更新ConfigMap即可:

    kubectl create configmap python-project --from-file=./my-python-project/ -o yaml --dry-run=client | kubectl replace -f -
    

方案2:用Argo Artifact直接上传本地文件(无需预存到S3)

如果不想维护ConfigMap,可以用Argo的Artifact功能,在提交Workflow时直接上传本地文件到Argo的Artifact仓库(比如MinIO),无需手动同步:

  1. 确保Argo已配置Artifact仓库(比如MinIO)
    如果还没配置,可以快速部署一个本地MinIO实例作为Argo的artifact存储。

  2. 编写支持Artifact的Workflow模板

    apiVersion: argoproj.io/v1alpha1
    kind: Workflow
    metadata:
      generateName: python-artifact-
    spec:
      entrypoint: run-python
      templates:
      - name: run-python
        inputs:
          artifacts:
          - name: project-files
            path: /app
        container:
          image: python:3.10-slim
          command: [bash]
          args:
          - -c
          - |
            pip install --no-cache-dir -r /app/requirements.txt
            python /app/main.py
    
  3. 提交Workflow时上传本地文件
    执行命令提交Workflow并指定本地项目目录作为artifact:

    argo submit workflow.yaml --artifact project-files=./my-python-project/
    

    这样Argo会自动把本地目录上传到Artifact仓库,然后在Pod中挂载到/app路径执行。修改代码后,重新提交即可自动同步最新版本。

方案3:用本地目录直接挂载(仅适用于单节点集群测试)

如果你的Argo运行在单节点Kubernetes集群(比如minikube),可以直接把本地目录挂载到Pod中,无需任何中间存储:

apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
  generateName: python-local-
spec:
  entrypoint: run-python
  templates:
  - name: run-python
    container:
      image: python:3.10-slim
      command: [bash]
      args:
      - -c
      - |
        pip install --no-cache-dir -r /app/requirements.txt
        python /app/main.py
      volumeMounts:
      - name: local-volume
        mountPath: /app
    volumes:
    - name: local-volume
      hostPath:
        path: /path/to/your/local/my-python-project
        type: Directory

注意:这个方案仅适合测试,多节点集群下无法保证Pod调度到挂载目录的节点,不建议生产环境使用。

内容的提问来源于stack exchange,提问作者A. Maman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 08:25:20