Argo workflow 拉取git 并使用pvc共享文件

文章目录

  • 拉取 Git 仓库并读取文件
  • 使用 Kubernetes Persistent Volumes(通过 volumeClaimTemplates)以及任务之间如何共享数据

拉取 Git 仓库并读取文件

在 Argo Workflows 中,如果你想要一个任务拉取 Git 仓库中的文件,另一个任务读取该文件,你可以按照以下方式构建工作流:

第一个任务(拉取 Git 仓库):这个任务将使用 git 命令克隆指定的 Git 仓库。
第二个任务(读取 Git 文件):这个任务会读取第一个任务拉取的 Git 仓库中的文件。
我们将使用 Argo Workflows 中的 Artifact 机制来传递 Git 仓库中的文件,gitclone.yaml


apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:generateName: git-file-processing-
spec:entrypoint: git-file-exampletemplates:- name: git-file-exampledag:tasks:- name: clone-git-repotemplate: clone-repo- name: read-git-filetemplate: print-filedepends: "clone-git-repo"arguments:artifacts:- name: git-filesfrom: "{{tasks.clone-git-repo.outputs.artifacts.repo-artifact}}"- name: clone-repocontainer:image: alpine:latestcommand: [sh, -c]args:- |apk add --no-cache gitgit clone https://gitee.com/qfxcoffee/shield.git /tmp/repooutputs:artifacts:- name: repo-artifactpath: /tmp/repo- name: print-fileinputs:artifacts:- name: git-filespath: /tmp/git-filescontainer:image: alpine:latestcommand: [sh, -c]args:- |cat /tmp/git-files/pom.xml

正确读取到文件

在这里插入图片描述

解释:

  1. 工作流结构 (git-file-example)
    这个工作流包含两个任务:
    clone-git-repo:拉取 Git 仓库并保存到 /tmp/repo 路径。
    read-git-file:读取 clone-git-repo 任务拉取的 Git 仓库中的文件。
  2. clone-repo 任务
    这个任务使用 alpine 镜像,首先安装 git,然后通过 git clone 命令将 Git 仓库克隆到容器的 /tmp/repo 路径下。
    它将 /tmp/repo 目录作为 artifact 输出,名为 repo-artifact。
  3. print-file 任务
    这个任务从 clone-repo 任务中获取名为 repo-artifact 的 artifact。
    它将 Git 仓库中的文件读取并通过 cat 命令输出。你可以根据需要修改路径和文件名(例如 cat /tmp/git-files/.txt)。
  4. depends 和 arguments
    read-git-file 任务依赖于 clone-git-repo 任务,因此设置了 depends: “clone-git-repo”。
    通过 arguments 传递 artifact,from: “{{tasks.clone-git-repo.outputs.artifacts.repo-artifact}}” 表示 read-git-file 任务将从 clone-git-repo 任务的输出中获取文件。

使用 Kubernetes Persistent Volumes(通过 volumeClaimTemplates)以及任务之间如何共享数据

在 Argo Workflows 中,使用 Persistent Volume Claim (PVC) 来共享文件是一个常见的场景。PVC 允许不同的任务或 Pod 之间共享持久存储,因此可以实现文件共享。下面是如何通过 PVC 在 Argo Workflows 中共享文件的步骤和示例。

  1. 创建 PVC(Persistent Volume Claim)
    你可以通过 volumeClaimTemplates 来在 Argo Workflow 中动态创建 PVC。这个 PVC 会被多个任务或容器共享。

  2. 配置 Argo Workflow 使用 PVC
    在 Argo Workflow 中,volumeClaimTemplates 用于定义和创建 PVC。然后,通过 volumeMounts 将 PVC 挂载到容器中,使得任务可以访问共享的存储。

  3. 示例:通过 PVC 共享文件
    假设我们有两个任务:一个任务负责将文件克隆到 PVC 中,另一个任务从 PVC 中读取这些文件并处理。创建文件volume.yaml

apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:generateName: pvs-demo-
spec:entrypoint: mainvolumeClaimTemplates:- metadata:name: shared-workdir  # 共享的 PVC 名称spec:accessModes: ["ReadWriteMany"]  # 多个 Pod 可以同时读取和写入resources:requests:storage: 1Gitemplates:- name: maindag:tasks:- name: git-clonetemplate: git-clone- name: process-filestemplate: process-filesdependencies: [git-clone]  # 依赖 git-clone 任务- name: git-clonecontainer:image: alpinecommand: [sh, -c]args:- |echo 'Cloning repository...'apk add --no-cache gitgit clone https://gitee.com/qfxcoffee/shield.git /srcls -la /srccp -r /src/. /mnt/  # 将文件复制到挂载的 PVC 中volumeMounts:- name: shared-workdir  # 挂载 PVCmountPath: /mnt  # 挂载到容器的 /mnt 目录- name: process-filescontainer:image: alpinecommand: [sh, -c]args:- |echo 'Processing files...'ls -la /mnt  # 查看挂载的目录内容# 可以在这里对文件进行处理,例如文本替换、文件处理等volumeMounts:- name: shared-workdir  # 挂载相同的 PVCmountPath: /mnt  # 挂载到容器的 /mnt 目录

解释:
volumeClaimTemplates:

这里定义了一个名为 shared-workdir 的 PVC,使用了 accessModes: [“ReadWriteMany”],这意味着多个 Pod 可以同时读写该 PVC。
它会在 Workflow 运行时自动创建 PVC。
PVC 的存储请求为 1Gi,表示需要 1GB 的存储空间。
git-clone 任务:

该任务使用 git clone 命令从 Git 仓库克隆文件,并将其复制到挂载的 PVC (/mnt) 中。

使用 volumeMounts 将 PVC 挂载到容器的 /mnt 目录,这样文件就可以存储在 PVC 中并供其他任务访问。

process-files 任务:

该任务使用 ls 查看挂载到 /mnt 目录中的文件,并可以对其进行进一步的处理(例如分析或转换文件内容)。
同样通过 volumeMounts 将 PVC 挂载到 /mnt 目录,以便访问文件。

  1. 共享文件的工作原理
    同一个 PVC:通过 volumeClaimTemplates 创建的 PVC 在 Workflow 中的多个任务之间共享。
    不同任务共享同一个 PVC:多个任务可以通过 volumeMounts 将该 PVC 挂载到容器中,提供一个共享的文件存储区域。
    ReadWriteMany 模式:accessModes 设置为 ReadWriteMany,这允许多个 Pod 同时访问和写入该 PVC(通常要求支持该模式的存储后端,如 NFS 或某些云存储)。

  2. 注意事项
    存储后端支持:确保你使用的存储后端(如 NFS、GlusterFS、Ceph 等)支持 ReadWriteMany 模式。如果使用 ReadWriteOnce,则只能有一个 Pod 进行写入。
    PVC 清理:通过 volumeClaimTemplates 创建的 PVC 会在 Workflow 完成后被自动清理。如果你希望保留 PVC,可以通过手动创建 PVC 或修改 persistentVolumeReclaimPolicy 来实现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/59811.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jmeter中的后置处理器(三)

9--XPath2 Extractor 功能特点 数据提取:使用 XPath2 表达式从 XML 响应中提取特定的数据。动态参数传递:将提取的数据存储为变量,供后续请求使用。支持丰富的表达式:支持复杂的 XPath2 表表达式,提供丰富的数据提取…

【MySQL-1】MySQL数据库的基本操作

目录 1. 整体学习思维导图 2. 数据库的创建 2.1 创建一个数据库 2.2 创建一个指定字符集和校验规则的数据库 3. 字符集和校验规则 3.1 查看系统默认字符集以及校验规则 3.2 查看数据库所支持的字符集和校验规则 3.3 不同校验规则所带来的影响 4. 操作数据库 4.1查…

UE5遇到问题记录—在sequence制作时如何让角色隐藏/显示?

遇到问题: 在sequence制作时如何让角色隐藏/显示? 解决办法: 在角色通道添加轨道:actor hide in game即可,添加后有可视性,打勾或者取消来控制角色的可见性。

文献阅读11.17

扩散波模型的物理信息神经网络 文献摘要 扩散波模型(DWM)是浅水方程的非线性二阶简化形式,利用DWM正问题的解可以预测水位和流量的变化。求解其逆问题可以根据观测结果确定关键参数(如曼宁系数、降雨强度等)。文章将改进后的PINN应用于DWM的正解和逆解。在正演问题…

【网络安全 | 漏洞挖掘】在重置密码流程利用请求头实现ATO

未经许可,不得转载。 文章目录 HTTP Host头漏洞发现漏洞利用漏洞影响HTTP Host头 HTTP Host头是HTTP/1.1中一个强制性的请求头,它指定了用户要访问的域名。 例如,如果用户访问 https://example.com,浏览器会发出如下带有Host头的请求: GET / HTTP/1.1 Host: example.co…

计算机网络中的数据包传输机制详解

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 计算机网络中的数据包传输机制详解 计算机网络中的数据包传输机制详解 计算机网络中的数据包传输机制详解 引言 数据包的基本概念…

Android AOSP 架构和各层次开发内容介绍

一、系统架构总况​​​​ 官方文档:架构概览 | Android Open Source Project (google.cn)https://source.android.google.cn/docs/core/architecture?hlzh-cn 下面是Google Android 提供的最新架构层次图: 图. AOSP 的软件堆栈层次 System API 表示…

shell编程--永久环境变量和字符串显位

环境变量 echo $HOME 在终端输出后会显示家目录有个root变量 我们会提出个疑问为什么平时我们在终端输入sl 或者which等等命令会输出一些内容呢,这是因为这些命令都有对应的环境变量。 我们查看一下环境变量 在终端输入: echo $PATH 我们看一下输出…

【QT】解决生成的exe文件出现“无法定位程序入口”或“找不到xxx.dll”的问题

【QT】解决生成的exe文件出现“无法定位程序入口”或“找不到xxx.dll”的问题 零、问题 使用QT编译好项目后,想直接在文件资源管理器中运行exe程序或想分享出去给别人使用发现出现如下问题: 系统错误:找不到xxx.dll。 无法找到入口&#x…

【网络】什么是路由器 (Router )网关设备(Gateway)?

路由器(Router),又称路径器或网关设备(Gateway),是一种重要的计算机网络设备。以下是关于路由器的详细解释: 一、路由器的定义与功能 定义:路由器是连接因特网中各局域网、广域网的…

GitLab 降级安装出现 500 错误,如何解决?

本文分享 GitLab 中文版在降级的过程中出现 500 错误的修复方法。 写在前面 强烈不建议大家自行降级,如果真有降级需求,要么自己能力过硬,要么寻求专业服务【https://dl.gitlab.cn/cm33bsfv】,要不出问题很麻烦! 问…

TensorFlow 2.0 windows11 GPU 训练环境配置

前言 在一切开始之前,请确保你的cmd命令行和powershell命令行可以正常打开。如果不能,建议重装系统。我不确定这是否会影响你最终的结果,毕竟windows的坑太多了。 安装顺序:visual studio -> cuda -> cudnn -> python…

前馈神经网络 (Feedforward Neural Network, FNN)

代码功能 网络定义: 使用 torch.nn 构建了一个简单的前馈神经网络。 隐藏层使用 ReLU 激活函数,输出层使用 Sigmoid 函数(适用于二分类问题)。 数据生成: 使用经典的 XOR 问题作为数据集。 数据点为二维输入&#xff…

《操作系统 - 清华大学》3 -3:连续内存分配:内存碎片与分区的动态分配

文章目录 0. 概述1. 内存碎片问题2. 动态分配3. 首次适配算法4. 最优适配算法5. 最差适配算法 0. 概述 内存分配是操作系统管理过程中很重要的环节,首先需要考虑的是一块连续区域分配的过程,这个过程中会有很多问题,首先比较关注的一个问题是…

[Mysql基础]表的查询

一、表的增删改查 CRUD : Create(创建), Retrieve(读取),Update(更新),Delete(删除) 1.1 插入否则更新 由于 主键 或者 唯一键 对应的值已经存在而导致插入失败 -- 创建一张学生表 CREATE TABLE students (id INT UNSIGNED PR…

信息安全工程师(83)Windows操作系统安全分析与防护

一、Windows操作系统安全分析 系统漏洞: Windows操作系统由于其复杂性和广泛使用,可能存在一些已知或未知的漏洞。这些漏洞可能会被黑客利用,进行恶意攻击。微软会定期发布系统更新和补丁,以修复这些漏洞,提高系统的安…

Excel超级处理器:高效实现2种批量生成二维码方式

在Excel数据处理中,二维码的批量生成是一个常见且重要的需求。借助Excel超级处理器这一强大的插件,用户可以轻松实现二维码的两种主要批量生成方式:直接在单元格中显示二维码图片,以及直接生成二维码图片并保存在文件夹中。超级处…

vue+svg圆形进度条组件

vuesvg圆形进度条组件 一、实现思路二、ProgressCircle.vue三、父组件使用四、实现效果 一、实现思路 使用svg的circle元素画两个圆形&#xff0c;一个圆形控制进度&#xff0c;一个绘制底色 二、ProgressCircle.vue 代码示例&#xff1a; <template><!-- 圆形进度…

react+hook+vite项目使用eletron打包成桌面应用+可以热更新

使用Hooks-Admin的架构 Hooks-Admin: &#x1f680;&#x1f680;&#x1f680; Hooks Admin&#xff0c;基于 React18、React-Router V6、React-Hooks、Redux、TypeScript、Vite2、Ant-Design 开源的一套后台管理框架。https://gitee.com/HalseySpicy/Hooks-Adminexe桌面应用…

如何基于Tesseract实现图片的文本识别

在前一篇文章基础上&#xff0c;如何将报告图片中的文本解析出来&#xff0c;最近研究了基于Tesseract的OCR方案&#xff0c;Tesseract OCR是一个开源的OCR引擎&#xff0c;主要结合开源的tesseract和pytesseract&#xff0c;实现了jpg/png等格式图片文本识别&#xff0c;供大家…