工作流的相关资源(例如运行状态等)会被定期清理,如果您希望对工作流的运行过程进行分析和回溯,可以通过配置持久化策略将工作流持久化存储到数据库中。此时,即使工作流被删除或者其运行的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以应用新的配置。
在集群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
编辑
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天。重启Argo Workflow Controller和Argo Server,使变更的配置生效。