全部产品
Search
文档中心

容器服务 Kubernetes 版 ACK:持久化工作流

更新时间:Dec 13, 2024

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

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

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

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

说明

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

步骤二:增加持久化配置

您可以向Argo Workflows的ConfigMap中增加持久化相关的参数,以完成将工作流持久化到数据库中的配置。数据库配置为持久化配置。默认情况下,Argo核心组件无法自动Watch ConfigMap中数据库配置的变化。您需要在配置后手动重启Argo Workflow Controller和 Argo Server以应用新的配置。

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

    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 Controller和Argo Server,使变更的配置生效。