持久化工作流

工作流的相关资源在工作流集群中会被定期清理,如果您想对工作流的运行过程进行分析和回溯,可以通过配置持久化策略将工作流持久化存储到数据库中。这样即使工作流被删除或者工作流运行的Pod被删除,您也可以查看到工作流的日志。本文以阿里云RDS MySQL数据库为例,为您介绍如何配置工作流持久化到数据库的策略。

配置使用RDS

  1. 创建阿里云RDS MySQL实例。具体操作,请参见快速创建RDS MySQL实例

    重要

    设置网络时,选择的VPC和工作流集群所使用的VPC要保持一致,设置白名单时需放开该VPC网段。

  2. 创建数据库和账号。具体操作,请参见创建数据库和账号

  3. 执行以下命令在工作流集群中创建一个名为argo-mysql-config的Secret,用于保存数据库的账号和密码。

    kubectl create secret generic

    Screct内容如下:

    说明

    username和password需要分别替换为您上一步骤实际创建的数据库账号和密码。

    apiVersion: v1
    stringData:
      username: database-username
      password: database-password
    kind: Secret
    metadata:
      name: argo-mysql-config
      namespace: default
    type: Opaque
  4. 编辑workflow-controller-configmap,增加持久化配置。

    说明
    • workflow-controller-configmap文件位于以集群ID命名的命名空间中。

    • host为RDS实例地址RDS MySQL实例的地址。

    • database为数据库的名称。

    • archive需要设置为true

    • archiveTTL为持久化的保存时间,本示例设置为30d,表示工作流持久化到数据库中可以保存30天。该参数取值大小无限制。

      persistence: |
        connectionPool:
          maxIdleConns: 100
          maxOpenConns: 0
          connMaxLifetime: 0s     # 0 means connections don't have a max lifetime.
        archiveTTL: 30d
        archive: true
        mysql:
          host: rm-xxx.mysql.cn-beijing.rds.aliyuncs.com
          port: 3306
          database: argo-workflow
          tableName: argo_workflows
          userNameSecret:
            name: argo-mysql-config
            key: username
          passwordSecret:
            name: argo-mysql-config
            key: password

相关文档

如果工作流已持久化到数据库中,即使工作流被删除,您也可以通过Argo CLI查看工作流的日志。具体信息,请参见使用日志服务