Argo Workflows elimina periódicamente los estados de los flujos de trabajo y sus recursos relacionados. Configure una política de persistencia para archivar los flujos de trabajo en una base de datos MySQL. De este modo, podrá consultar los registros del flujo de trabajo incluso después de que se eliminen los flujos o sus pods.
Este tema utiliza ApsaraDB RDS for MySQL como backend de la base de datos.
Requisitos previos
Antes de empezar, asegúrese de contar con lo siguiente:
Un clúster de Alibaba Cloud Container Service con Argo Workflows instalado.
Acceso al namespace
argodentro del clúster.Permisos para crear Secrets y modificar ConfigMaps en el clúster.
Paso 1: Configurar ApsaraDB RDS for MySQL
Cree una instancia de ApsaraDB RDS for MySQL, genere una base de datos en dicha instancia y configure una cuenta de base de datos. La instancia de RDS debe encontrarse en la misma Virtual Private Cloud (VPC) que el clúster. Además, configure una lista blanca de IP en la instancia para permitir el acceso entrante desde el bloque CIDR de la VPC.
Para conocer los pasos detallados, consulte Create an ApsaraDB RDS for MySQL instance and configure a database.
Una vez finalizada la configuración, anote el nombre de usuario y la contraseña de la cuenta de la base de datos.
Para consultar los precios de ApsaraDB RDS for MySQL, consulte Billable items .
Paso 2: Agregar la configuración de persistencia
Agregue los parámetros de persistencia al ConfigMap de Argo Workflows. De forma predeterminada, es necesario reiniciar manualmente el controlador de Argo Workflows y Argo Server para que los cambios surtan efecto.
1. Crear un Secret para las credenciales de la base de datos
Cree un Secret llamado argo-mysql-config en el namespace argo para almacenar el nombre de usuario y la contraseña de la base de datos.
Opción A: Usar kubectl (recomendado)
kubectl create secret generic argo-mysql-config -n argo \
--from-literal=username=<database-username> \
--from-literal=password=<database-password>
Opción B: Usar un manifiesto YAML
apiVersion: v1
kind: Secret
metadata:
name: argo-mysql-config
namespace: argo
type: Opaque
stringData:
username: <database-username> # Replace with the actual username.
password: <database-password> # Replace with the actual password.
Aplique el manifiesto:
kubectl apply -f secret.yaml
2. Actualizar el ConfigMap
Edite workflow-controller-configmap en el namespace argo para agregar el bloque persistence dentro de 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
Parámetros principales:
|
Parámetro |
Descripción |
|
|
Establézcalo en |
|
|
Periodo de retención de los flujos de trabajo archivados. En este ejemplo se establece en |
|
|
Endpoint de la instancia de ApsaraDB RDS for MySQL. |
|
|
Puerto de la base de datos. El valor predeterminado es |
|
|
Nombre de la base de datos donde se escribirán los datos del flujo de trabajo. |
|
|
Nombre de la tabla principal del flujo de trabajo. |
|
|
Número máximo de conexiones inactivas en el pool. |
|
|
Número máximo de conexiones abiertas. El valor |
|
|
Tiempo de vida máximo de la conexión. El valor |
|
|
Referencia a la clave del Secret que contiene el nombre de usuario de la base de datos. |
|
|
Referencia a la clave del Secret que contiene la contraseña de la base de datos. |
3. Reiniciar el controlador de Argo Workflows y Argo Server
Reinicie el controlador de Argo Workflows y Argo Server para que la configuración de persistencia surta efecto.
Pasos siguientes
Para deshabilitar la persistencia, establezca
archive: falseen el bloquepersistencey reinicie el controlador de Argo Workflows junto con Argo Server.Para consultar los flujos de trabajo archivados, abra la interfaz de Argo Server y vaya a la sección Archived Workflows.