尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Argo Workflows 快速上手:从零部署到运行你的第一个 Hello World 工作流

Argo Workflows 快速上手:从零部署到运行你的第一个 Hello World 工作流 云原生容器编排工作流自动化任务调度后端【免费下载链接】argo-workflowsWorkflow Engine for Kubernetes项目地址https://gitcode.com/gh_mirrors/ar/argo-workflows点击查看免费下载本文基于 Argo Workflows 官方 Quick Start 文档docs/quick-start.md整理并扩展面向希望快速体验 Kubernetes 原生工作流引擎的开发者。读完本文你将能够在本地 Kubernetes 集群上完成 Argo Workflows 的安装、CLI 与 UI 的配置并成功提交、查询、观察和删除第一个示例工作流同时理解这些操作背后对应的仓库源码与清单结构。1. 写在前面本文能帮你完成什么Argo Workflows 是运行在 Kubernetes 之上的容器原生工作流引擎Workflow Engine for Kubernetes。Quick Start 的目标非常明确让用户在最短时间内跑通安装 → 提交工作流 → 查看结果的完整链路而不必先深入了解 CRD、控制器等底层细节。完成本文的步骤后你将掌握在一个本地或测试用 Kubernetes 集群上用一条命令部署 Argo Workflows安装argo命令行工具并用它提交、列出、查看和观察工作流通过浏览器访问 Argo Workflows UI用图形化方式提交工作流理解hello-world示例工作流的结构以及 Quick Start 清单中各个组件的用途。注意本文所有操作步骤均来自官方 Quick Start 文档并在说明中补充了当前仓库内对应的源码与清单位置方便你进一步深入阅读。2. 前置条件你需要一个 Kubernetes 集群在安装 Argo Workflows 之前你至少需要一个可用的 Kubernetes 集群已配置好并能够访问该集群的kubectl命令行工具。如果你只是想在本地快速测试官方推荐以下任一方式搭建本地集群工具说明minikube最流行的本地单节点集群方案跨平台支持良好kind基于 Docker 的 Kubernetes 集群适合 CI 场景k3s / k3d轻量级发行版 k3s 及其 Docker 封装 k3d资源占用低、启动快Docker Desktop桌面版自带 Kubernetes 开关开启即可使用集群就绪后先用kubectl cluster-info或kubectl get nodes确认kubectl与集群的连接正常再进入下一步。开发环境 vs 生产环境Quick Start 的安装方式只适用于快速体验不适合生产环境。官方文档明确给出了如下警告这些说明旨在帮助你快速入门并不适合生产环境。生产环境的安装请参考 installation.md。生产部署通常需要考虑高可用、持久化数据库、TLS 证书、SSO 认证、资源配额与安全加固等要素这些内容在安装文档中有专门讲解。3. 安装 Argo Workflows3.1 指定版本号安装的第一步是确定你要安装的版本并将其写入环境变量。你需要根据自己的实际需求修改下面的命令ARGO_WORKFLOWS_VERSIONvX.Y.Z例如安装某个具体版本时将vX.Y.Z替换为对应的版本标签如v3.5.5。版本号将用于获取与之匹配的清单文件。3.2 应用 Quick Start 清单接下来创建命名空间并应用 quick-start 清单kubectl create namespace argo kubectl apply --server-side -n argo -f https://github.com/argoproj/argo-workflows/releases/download/${ARGO_WORKFLOWS_VERSION}/quick-start-minimal.yaml第一条命令创建名为argo的命名空间用于隔离 Argo Workflows 的所有组件。第二条命令使用--server-side标志进行服务端应用server-side apply这可以避免客户端三方合并冲突并保证大型 CRD 清单能够被 Kubernetes 正确接受。如果你无法从 Release 下载清单也可以直接使用本仓库内维护的、与源码同源生成的清单文件例如 manifests/quick-start-minimal.yaml并将其中的版本替换为你期望的版本kubectl apply --server-side -n argo -f manifests/quick-start-minimal.yaml注意仓库中的清单是与当前源码版本对应的实际部署时建议使用与你目标版本一致的清单。3.3 Quick Start 清单里到底有什么Quick Start 清单并不是手工维护的一个大文件而是由Kustomize 构建产物自动生成的。从仓库的 Makefile 可以看出manifests/quick-start-minimal.yaml: /dev/null kubectl kustomize --load-restrictorLoadRestrictionsNone manifests/quick-start/minimal | ./hack/manifests/auto-gen-msg.sh manifests/quick-start-minimal.yaml也就是说manifests/quick-start-minimal.yaml是由manifests/quick-start/minimal目录下的 Kustomize 配置渲染而来并自动添加自动生成、请勿编辑的头部注释文件第一行即是# This is an auto-generated file. DO NOT EDIT。Kustomize 的层次结构如下最外层入口 manifests/quick-start/minimal/kustomization.yaml 引入../base与../../base/crds/full完整的 CRD 定义并应用一份 ConfigMap 覆盖基础层 manifests/quick-start/base/kustomization.yaml 聚合了以下几类资源../../cluster-install-no-crdsworkflow-controller、argo-server 的 Deployment / Service / RBAC 等核心组件minio内置的对象存储作为默认的 artifact工件仓库httpbin一个用于演示 HTTP 模板的测试服务webhooks工作流事件绑定所需的 Webhook 配置默认的argo-server-sso-secret、ServiceAccount Token Secretemissary 执行器executor的 Role 与 RoleBinding以及 pod-manager、workflow-manager、agent、artifactgc、cluster-workflow-template 等一组 RBAC 角色。此外manifests/quick-start/base/overlays/argo-server-deployment.yaml为 argo-server 注入了--auth-mode server与--auth-mode client两种认证模式便于本地快速体验。值得注意的还有基础层中的overlays/workflow-controller-configmap.yaml它预设了 controller 的默认行为其中包含executor为执行器容器预留的资源请求CPU 10m、内存 64MiartifactRepository将 artifact 仓库指向内置的 minioendpointminio:9000insecure 模式并开启日志归档archiveLogs: truemetricsConfig开启 metrics 端点路径/metrics端口 9090namespaceParallelism命名空间级并行度 10links与columns为 UI 提供工作流/日志的外部链接模板与展示列。3.4 其他 Quick Start 变体除了最小化安装quick-start-minimal仓库还提供了面向不同场景的清单变体参见 Makefilequick-start-mysql.yaml使用 MySQL 作为工作流归档与节点状态存储quick-start-postgres.yaml使用 PostgreSQL 作为后端存储quick-start-telemetry.yaml额外包含 OpenTelemetry Collector 等遥测组件。它们与 minimal 版使用相同的基础层仅在存储或可观测性组件上做叠加对应的 Kustomize 目录分别位于 manifests/quick-start/mysql、manifests/quick-start/postgres 与 manifests/quick-start/telemetry。3.5 验证安装应用清单后可以执行下面的命令确认各组件已经就绪kubectl get pods -n argo正常情况下你会看到argo-server与workflow-controller等相关 Pod 处于Running状态。同时集群中会注册一组argoproj.io组的 CRDCustomResourceDefinition例如workflows、cronworkflows、workflowtemplates、clusterworkflowtemplates、workfloweventbindings等它们在 manifests/base/crds 目录下都有对应的 YAML 定义其余 quick-start 清单还会通过kustomize build manifests/quick-start/base/crds/full引入完整版本。4. 安装 Argo Workflows CLI为了让日常交互更高效官方推荐安装argo命令行工具。你可以通过它更轻松地操作 Argo Workflows具体用法参见 argo-cli.mdCLI 的详细参考见 argo.md。该文档给出了最常用的几个命令一览argo submit hello-world.yaml # 提交一个工作流规格到 Kubernetes argo list # 列出当前的工作流 argo get hello-world-xxx # 获取某个工作流的详细信息 argo logs hello-world-xxx # 打印工作流的日志 argo delete hello-world-xxx # 删除工作流也可以直接用kubectl来操作工作流参见 kubectl.md但argoCLI 提供了语法检查、更友好的输出格式并且输入更简短。注意工作流名称末尾的随机字符是 Argo 自动追加的来自generateName因此argo get hello-world-xxx中的xxx需要替换为实际名称或者使用下文介绍的latest快捷方式。5. 提交一个示例工作流5.1 通过 CLI 提交使用以下命令提交官方示例工作流argo submit -n argo --watch https://raw.githubusercontent.com/argoproj/argo-workflows/main/examples/hello-world.yaml-n argo指定提交到argo命名空间--watch标志会实时观察工作流的运行过程直到工作流完成并报告成功或失败观察随之停止。如果你无法访问远程 URL可以直接使用本仓库中的 examples/hello-world.yamlargo submit -n argo --watch examples/hello-world.yaml这个示例工作流非常简短完整内容如下apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: generateName: hello-world- labels: workflows.argoproj.io/archive-strategy: false annotations: workflows.argoproj.io/description: | This is a simple hello world example. spec: entrypoint: hello-world templates: - name: hello-world container: image: busybox command: [echo] args: [hello world]对这份清单的解读apiVersion: argoproj.io/v1alpha1与kind: Workflow这是 Argo Workflows 的核心 CRD 类型之一metadata.generateName: hello-world-前缀 随机字符的工作流命名机制。Argo 会为每次提交追加一段随机字符使每次运行都拥有唯一名称spec.entrypoint: hello-world指定工作流的入口模板spec.templates定义模板列表。本例只有一个名为hello-world的模板它运行一个busybox容器执行echo hello world。提交之后workflow-controller控制器会读取该 Workflow 对象为模板创建对应的 Pod并由 emissary 执行器负责在 Pod 内驱动容器运行、上报状态。整个处理链路可以在仓库 workflow/controller 目录的源码中看到端到端的实现。5.2 列出所有工作流运行以下命令可以列出所有已提交的工作流argo list -n argo输出中的每个工作流名称都以hello-world-为前缀后跟随机字符。这些随机字符保证了工作流名称的唯一性帮助你区分同一工作流的多次运行。如果你再次提交同一个工作流下一次运行的名称后缀会完全不同。5.3 查看工作流详情使用argo get查看某次工作流运行的详细信息argo get -n argo latest这里有两个关键点输出内容与提交时展示的信息一致节点状态、阶段、耗时等latest是一个快捷方式用于直接定位最新一次工作流运行免去手动复制完整名称。5.4 观察工作流日志使用下面的命令观察工作流运行的日志argo logs -n argo latest日志同样支持latest快捷方式会打印出工作流各节点的容器输出。对hello-world来说你应当能看到hello world这行输出。更多关于脚本与结果输出的用法可以参考 scripts-and-results.md。5.5 通过 UI 提交如果你更习惯使用图形化界面Argo Workflows 自带的 Web UI 也提供了完整的提交流程。第一步端口转发。将 argo-server 的 2746 端口转发到本地kubectl -n argo port-forward service/argo-server 2746:2746如果你是通过Helm Chart安装的 Argo Workflows服务名不叫argo-server而是argo-workflows-server请将上面的命令改为kubectl -n argo port-forward service/argo-workflows-server 2746:2746第二步访问 UI。在浏览器中打开https://localhost:2746。这里有两个必须注意的细节URL 使用的是https而不是http。如果访问http会在服务端直接报错由于 UI 默认使用自签名证书浏览器会提示 TLS 证书错误你需要手动点击继续访问/高级来批准该证书。第三步提交工作流。在 UI 中依次操作点击 Submit New Workflow选择Edit using full workflow options使用完整工作流选项编辑文本框中已经预置了一个示例工作流直接点击 Create即可启动运行。提交后你可以在 UI 的工作流列表中看到新创建的工作流及其实时状态。6. 安装后的进一步学习路径完成 Quick Start 后你可以按以下方向继续深入无需集群的在线实训如果你不想搭建 Kubernetes 集群官方还提供了 Killercoda 在线课程可直接在浏览器中动手练习工作流基础概念阅读 workflow-concepts.md 了解工作流、模板、节点、步骤等核心概念循序渐进的实战示例walk-through 系列文档从 Hello World 开始逐步覆盖参数、条件判断、循环、DAG、制品、Secret 等常用特性更多官方示例仓库 examples 目录下收录了大量可直接运行的 YAML 示例例如 steps.yaml、dag-diamond.yaml、loops.yaml 等生产部署需要将 Argo Workflows 用于生产环境时务必参考 installation.md 了解完整的部署与加固方案CLI 完整参考argo.md 列出了所有argo子命令的用法。7. 小结本文沿着官方 Quick Start 的路径带你完成了 Argo Workflows 的完整上手流程准备 Kubernetes 集群 → 用 Quick Start 清单完成安装 → 安装argoCLI → 通过 CLI 与 UI 两种方式提交示例工作流并掌握了argo submit、argo list、argo get latest、argo logs latest四个最常用的操作命令。与此同时我们还深入仓库源码了解了 Quick Start 清单的 Kustomize 生成机制、其中内置的 minio / httpbin / webhooks 等组件、controller 的默认配置以及hello-world工作流清单本身的完整语义。现在你已经有能力在此基础上提交更复杂的工作流继续探索 Argo Workflows 的 DAG、循环、制品与参数等高级能力了。赞分享云原生容器编排工作流自动化任务调度后端【免费下载链接】argo-workflowsWorkflow Engine for Kubernetes项目地址https://gitcode.com/gh_mirrors/ar/argo-workflows点击查看免费下载相关推荐Apache DolphinScheduler 快速上手从零创建并运行你的第一个工作流Apache DolphinScheduler 快速上手从零创建并运行你的第一个工作流 本指南是 Apache DolphinScheduler 的入门实战教任务调度数据编排工作流自动化后端大数据StateMachine 与 Sourcery 完美集成自动化生成 Swift 枚举的 StateMachineHashable 实现StateMachine 与 Sourcery 完美集成自动化生成 Swift 枚举的 StateMachineHashable 实现 StateMachin软件架构gRPC-Go Hello World 快速入门运行你的第一个 gRPC 服务gRPC Go Hello World 快速入门运行你的第一个 gRPC 服务 本文以 gRPC Go 仓库中的 helloworld 示例 example后端RPC框架创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表