持久化工作流

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

步骤一:配置RDS MySQL实例并新建数据库

您需要创建一个阿里云RDS MySQL实例,并在该实例中新建数据库并配置账号。完成RDS MySQL实例的VPC时,需要和集群使用的VPC保持一致,后续设置IP白名单时也需放行该VPC网段。具体操作,第一步:快捷创建RDS MySQL实例与配置数据库

配置完成后,请记录数据库账号和密码,供后续步骤使用。

说明

关于RDS的计费说明,请参见计费项

步骤二:增加持久化配置

您可以通过向Argo WorkflowsConfigMap中增加持久化相关参数,将工作流持久化到数据库中。默认情况下,您需要在配置后手动重启Argo Workflow ControllerArgo Server组件以生效新配置。

  1. 在集群argo命名空间中创建一个名为argo-mysql-configSecret,用于保存数据库的账号和密码。

    apiVersion: v1
    stringData:
      username: database-username # 替换为实际的RDS数据库账号。
      password: database-password # 替换为实际的RDS数据库密码。
    kind: Secret
    metadata:
      name: argo-mysql-config
      namespace: argo
    type: Opaque
  2. 编辑workflow-controller-configmap(位于argo命名空间中),在data字段中增加持久化配置。

    data:  
      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

    参数

    说明

    host

    RDS实例地址。

    database

    前文创建的RDS数据库的名称。

    archive

    需要设置为true,即启用工作流的持久化功能。

    archiveTTL

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

  3. 重启Argo Workflow ControllerArgo Server,使变更的配置生效。