ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Argo Workflows 日志归档配置指南:从 archiveLogs 三级别联到专业日志设施集成

Argo Workflows 日志归档配置指南:从 archiveLogs 三级别联到专业日志设施集成 云原生容器编排工作流自动化任务调度后端【免费下载链接】argo-workflowsWorkflow Engine for Kubernetes项目地址https://gitcode.com/gh_mirrors/ar/argo-workflows点击查看免费下载Argo Workflows 提供了将 Pod 容器日志以工件artifact形式归档到对象存储的内置能力帮助用户在 Pod 被垃圾回收后仍能在 Argo UI 中查看历史日志。本文以docs/configure-archive-logs.md为骨架结合仓库源码与配置示例完整讲解archiveLogs在 workflow-controller ConfigMap、Workflow Spec、Template 三个层级的开启方式与优先级判定逻辑并给出将 Argo 与专业日志设施Loki、ELK 等对接的推荐方案。⚠️ 官方提醒Argo 内置的日志归档机制是朴素naive实现并非为日志的索引、搜索和存储而设计不建议将其作为生产级日志平台使用。该功能仅作为便利特性用于在 Argo UI 中快速查看已被垃圾回收 Pod 的日志。生产环境建议集成 Kubernetes 感知的专业日志设施见文末替代方案。开启归档的两个前提要启用自动流水线日志归档需要同时满足两个条件开启archiveLogs在 workflow-controller ConfigMap、Workflow Spec 或 Template 三个层级中的任一/多层配置具体判定逻辑见下节配置工件仓库Artifact Repository归档后的日志作为工件存储必须先通过 configure-artifact-repository.md 定义日志工件存储到哪里S3、GCS、OSS、Azure、HDFS、Artifactory 或插件仓库。工件仓库的存储键默认使用DefaultArchivePattern {{workflow.name}}/{{pod.name}}即按工作流名/Pod 名的路径组织日志对象见 pkg/apis/workflow/v1alpha1/artifact_repository_types.go。各仓库类型S3 的keyFormat、GCS/OSS 的keyFormat、Azure 的blobNameFormat等都支持引用 workflow 变量自定义路径格式。三级优先级判定archiveLogs可在三个层级配置按以下优先级生效workflow-controller config (on) workflow spec (on/off) template (on/off)即 Controller ConfigMap 的archiveLogs: true是总开关一旦开启则后续层级无法关闭只有 Controller 层未开启时才由 Workflow Spec 决定Spec 也未设置时才回落到 Template 层。Controller Config MapWorkflow SpecTemplate是否归档日志truetruetruetruetruetruefalsetruetruefalsetruetruetruefalsefalsetruefalsetruetruetruefalsetruefalsefalsefalsefalsetruetruefalsefalsefalsefalse这一判定逻辑在控制器源码中有着一一对应的实现。在 workflow/controller/workflowpod.go 的IsArchiveLogs方法中先取woc.artifactRepository.IsArchiveLogs()即 Controller 级 ConfigMap 的artifactRepository.archiveLogs若未开启再看woc.execWf.Spec.ArchiveLogsWorkflow Spec 级若仍未设置则回落到tmpl.ArchiveLocation.ArchiveLogsTemplate 级。同时addArchiveLocation会在构建 Pod 时把控制器默认工件仓库转换为模板的ArchiveLocation并写入最终的archiveLogs判定结果——这也是 Template 级配置archiveLocation.archiveLogs能够生效的底层机制。ArtifactRepository.IsArchiveLogs()与ToArtifactLocation()的具体实现见 pkg/apis/workflow/v1alpha1/artifact_repository_types.go其单元测试覆盖了 nil、true、false 三种取值artifact_repository_types_test.go。配置 Workflow Controller ConfigMap全局开关在 workflow-controller 的 ConfigMap 中通过artifactRepository.archiveLogs: true全局开启归档并同时配置默认工件仓库# 摘录自 docs/workflow-controller-configmap.yaml artifactRepository: | # archiveLogs 会将主容器日志作为工件归档 archiveLogs: true s3: # 按你的 S3 提供商选择对应 endpoint # AWS: s3.amazonaws.com # GCS: storage.googleapis.com # Minio: my-minio-endpoint.default:9000 endpoint: s3.amazonaws.com bucket: my-bucket region: us-west-2 # insecure 用于关闭 TLS主要针对未配置 TLS 的 Minio 安装 insecure: false # keyFormat 定义工件在 bucket 中的组织方式可引用 workflow 变量完整的 ConfigMap 字段说明参见 workflow-controller-configmap.md可参考的完整示例文件为 workflow-controller-configmap.yaml。配置 Workflow Spec单工作流级别在 Workflow 的spec.archiveLogs字段开启归档适用于单个工作流。归档位置继承控制器默认工件仓库apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: generateName: archive-location- spec: archiveLogs: true entrypoint: hello-world templates: - name: hello-world container: image: busybox command: [echo] args: [hello world]配置 Template模板级别在 Template 的archiveLocation.archiveLogs字段开启仅对使用了该模板的步骤生效并允许在该模板内指定独立的归档位置apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: generateName: archive-location- spec: entrypoint: hello-world templates: - name: hello-world container: image: busybox command: [echo] args: [hello world] archiveLocation: archiveLogs: true查看归档日志开启归档后即使 Pod 已被垃圾回收Pod GC其主容器日志仍以工件形式保存在对象存储中可在 Argo UI 的工作流详情页直接查看历史日志。归档日志的生命周期与工作流归档Workflow Archive机制配合使用可参照 workflow-archive.md。替代方案对接专业日志设施如前所述Argo 的日志存储朴素且无法与专为日志索引、搜索、存储优化的设施媲美。社区常用的开源组合包括采集collectionfluentd、promtail存储与查询storage queryingELKElasticsearch、loki可视化 UIgrafana用 Links 打通 Argo UI 与日志设施集成专业日志设施后可通过 links.md 配置自定义链接让用户从 Argo UI 直接跳转到日志平台对应的工作流/Pod 日志视图scope: workflow链接到某个工作流的日志scope: pod/scope: pod-logs链接到工作流中某个特定 Pod及其日志链接支持${metadata.name}、${metadata.namespace}、${metadata.labels}等元数据参数化以及${status.startedAt}、${status.finishedAt}、${status.startedAtEpoch}、${status.finishedAtEpoch}Unix 毫秒时间戳便于对接 Grafana 等支持 epoch 参数的平台v3.1等变量。links配置在 workflow-controller ConfigMap 中完整示例见 workflow-controller-configmap.yamllinks: | # 在工作流页面添加按钮例如链接到你的日志设施 - name: Example Workflow Link scope: workflow url: http://logging-facility?namespace${metadata.namespace}workflowName${metadata.name}startedAt${status.startedAt}finishedAt${status.finishedAt} # 在 Pod 旁边添加按钮例如仅针对该 Pod 链接到日志设施 - name: Example Pod Link scope: pod url: http://logging-facility?namespace${metadata.namespace}podName${metadata.name}startedAt${status.startedAt}finishedAt${status.finishedAt} - name: Pod Logs scope: pod-logs url: http://logging-facility?namespace${metadata.namespace}podName${metadata.name}startedAt${status.startedAt}finishedAt${status.finishedAt}该配置对应控制器端 config/config.go 中的Links []*wfv1.Link字段每个 link 的scope决定其在 Argo UI 中出现的位置与对应对象工作流、Pod、事件源、传感器、全局聊天入口或工作流列表视图。总结与选型建议快速查看历史日志、不想引入额外组件在 Controller ConfigMap 全局开启archiveLogs或在个别工作流/模板上按需开启生产级日志检索与分析请优先部署 Loki Promtail、ELK Fluentd 等专业设施再用links配置将 Argo UI 与日志平台打通实现工作流编排与日志检索各司其职的架构。赞分享云原生容器编排工作流自动化任务调度后端【免费下载链接】argo-workflowsWorkflow Engine for Kubernetes项目地址https://gitcode.com/gh_mirrors/ar/argo-workflows点击查看免费下载相关推荐Metabase 应用日志配置指南从查看日志到自定义 Log4j2 日志级别Metabase 应用日志配置指南从查看日志到自定义 Log4j2 日志级别 Metabase 默认会输出大量日志信息底层基于 Apache Log4j 2数据分析数据可视化后端数据库客户端企业应用wger后端日志配置设置健身平台日志的日志级别wger后端日志配置设置健身平台日志的日志级别 还在为健身应用wger的日志问题头疼想要精准控制日志输出级别却无从下手本文将为你详细解析wger的日志配置后端医疗健康GitBucket日志管理日志级别配置与集中式收集GitBucket日志管理日志级别配置与集中式收集 GitBucket作为一款由Scala驱动的Git平台其日志系统是排查问题、监控系统运行状态的关键组件。后端代码托管开发工具DevOps上一篇P4wnP1项目常见问题深度解析与技术指南下一篇Loco 快速上手指南用 Rust 构建 Web 应用的 Rust on Rails 框架创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表