Argo Workflows supprime périodiquement l'état des workflows et les ressources associées. Configurez une politique de persistance pour archiver les workflows dans une base de données MySQL afin de consulter leurs journaux même après la suppression des workflows ou de leurs pods.
Cette rubrique utilise ApsaraDB RDS for MySQL comme backend de base de données.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Un cluster Alibaba Cloud Container Service avec Argo Workflows installé
L'accès au namespace
argodans le clusterLes permissions nécessaires pour créer des Secrets et modifier des ConfigMaps dans le cluster
Étape 1 : Configuration d'ApsaraDB RDS for MySQL
Créez une instance ApsaraDB RDS for MySQL, créez une base de données sur cette instance et configurez un compte de base de données. L'instance RDS doit se trouver dans le même Virtual Private Cloud (VPC) que le cluster. Configurez une liste d'autorisation IP sur l'instance pour autoriser l'accès entrant depuis le bloc CIDR du VPC.
Pour obtenir les étapes détaillées, consultez Créer une instance ApsaraDB RDS for MySQL et configurer une base de données.
Une fois la configuration terminée, notez le nom d'utilisateur et le mot de passe du compte de base de données.
Pour connaître les tarifs d'ApsaraDB RDS for MySQL, consultez Éléments facturables .
Étape 2 : Ajout des paramètres de persistance
Ajoutez les paramètres de persistance à la ConfigMap d'Argo Workflows. Par défaut, vous devez redémarrer manuellement le contrôleur Argo Workflows et Argo Server pour que ces paramètres prennent effet.
1. Création d'un Secret pour les identifiants de la base de données
Créez un Secret nommé argo-mysql-config dans le namespace argo pour stocker le nom d'utilisateur et le mot de passe de la base de données.
Option A : Utilisation de kubectl (recommandé)
kubectl create secret generic argo-mysql-config -n argo \
--from-literal=username=<database-username> \
--from-literal=password=<database-password>
Option B : Utilisation d'un manifeste 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.
Appliquez le manifeste :
kubectl apply -f secret.yaml
2. Mise à jour de la ConfigMap
Modifiez workflow-controller-configmap dans le namespace argo pour ajouter le bloc persistence sous 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
Paramètres clés :
| Paramètre | Description |
|---|---|
archive |
Définissez cette valeur sur true pour activer la persistance des workflows. |
archiveTTL |
Durée de conservation des workflows archivés. Dans cet exemple, la valeur est définie sur 30d, ce qui signifie que les workflows sont conservés pendant 30 jours. Cette durée ne comporte aucune limite supérieure. |
mysql.host |
Endpoint de l'instance ApsaraDB RDS for MySQL. |
mysql.port |
Port de la base de données. La valeur par défaut est 3306. |
mysql.database |
Nom de la base de données dans laquelle écrire les données du workflow. |
mysql.tableName |
Nom de la table principale des workflows. |
connectionPool.maxIdleConns |
Nombre maximal de connexions inactives dans le pool. |
connectionPool.maxOpenConns |
Nombre maximal de connexions ouvertes. La valeur 0 indique une absence de limite. |
connectionPool.connMaxLifetime |
Durée de vie maximale d'une connexion. La valeur 0s signifie que les connexions n'ont pas de durée de vie maximale. |
userNameSecret |
Référence à la clé du Secret contenant le nom d'utilisateur de la base de données. |
passwordSecret |
Référence à la clé du Secret contenant le mot de passe de la base de données. |
3. Redémarrage du contrôleur Argo Workflows et d'Argo Server
Redémarrez le contrôleur Argo Workflows et Argo Server pour appliquer les paramètres de persistance.
Étapes suivantes
Pour désactiver la persistance, définissez
archive: falsedans le blocpersistenceet redémarrez le contrôleur Argo Workflows ainsi qu'Argo Server.Pour consulter les workflows archivés, ouvrez l'interface utilisateur d'Argo Server et accédez à la section Archived Workflows.