全部產品
Search
文件中心

Container Service for Kubernetes:持久化工作流程

更新時間:Dec 14, 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,使變更的配置生效。