工作流程的相關資源(例如運行狀態等)會被定期清理,如果您希望對工作流程的運行過程進行分析和回溯,可以通過配置持久化策略將工作流程持久化儲存到資料庫中。此時,即使工作流程被刪除或者其啟動並執行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參數
說明
hostRDS執行個體地址。
database前文建立的RDS資料庫的名稱。
archive需要設定為
true,即啟用工作流程的持久化功能。archiveTTL持久化的儲存時間,取值大小無限制。本樣本設定為
30d,表示工作流程持久化到資料庫中可以儲存30天。重啟Argo Workflow Controller和Argo Server,使變更的配置生效。