O Argo Workflows exclui periodicamente estados de workflows e recursos associados. Configure uma política de persistência para arquivar workflows em um banco de dados MySQL e visualize os logs mesmo após a exclusão dos workflows ou de seus pods.
Este tópico usa o ApsaraDB RDS for MySQL como backend de banco de dados.
Pré-requisitos
Antes de começar, verifique se você tem:
Um cluster do Alibaba Cloud Container Service com o Argo Workflows instalado
Acesso ao namespace
argono clusterPermissões para criar Secrets e modificar ConfigMaps no cluster
Etapa 1: Configurar o ApsaraDB RDS for MySQL
Crie uma instância do ApsaraDB RDS for MySQL, crie um banco de dados nessa instância e configure uma conta de banco de dados. A instância RDS deve estar na mesma Virtual Private Cloud (VPC) do cluster. Configure uma lista de permissões de IP na instância para permitir acesso de entrada do bloco CIDR da VPC.
Para obter instruções detalhadas, consulte Criar uma instância do ApsaraDB RDS for MySQL e configurar um banco de dados.
Após concluir a configuração, anote o nome de usuário e a senha da conta do banco de dados.
Para informações sobre preços do ApsaraDB RDS for MySQL, consulte Itens faturáveis .
Etapa 2: Adicionar configurações de persistência
Adicione as configurações de persistência ao ConfigMap do Argo Workflows. Por padrão, reinicie manualmente o controller do Argo Workflows e o Argo Server para aplicar as alterações.
1. Criar um Secret para credenciais do banco de dados
Crie um Secret chamado argo-mysql-config no namespace argo para armazenar o nome de usuário e a senha do banco de dados.
Opção A: Usar kubectl (recomendado)
kubectl create secret generic argo-mysql-config -n argo \
--from-literal=username=<database-username> \
--from-literal=password=<database-password>
Opção B: Usar um manifesto 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 o manifesto:
kubectl apply -f secret.yaml
2. Atualizar o ConfigMap
Edite o workflow-controller-configmap no namespace argo para adicionar o bloco persistence em 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
Principais parâmetros:
|
Parâmetro |
Descrição |
|
|
Defina como |
|
|
Período de retenção dos workflows arquivados. Neste exemplo, o valor é |
|
|
Endpoint da instância do ApsaraDB RDS for MySQL. |
|
|
Porta do banco de dados. O padrão é |
|
|
Nome do banco de dados para gravação dos dados dos workflows. |
|
|
Nome da tabela principal de workflows. |
|
|
Número máximo de conexões ociosas no pool. |
|
|
Quantidade máxima de conexões abertas. O valor |
|
|
Tempo de vida máximo das conexões. O valor |
|
|
Referência à chave do Secret que contém o nome de usuário do banco de dados. |
|
|
Referência à chave do Secret que contém a senha do banco de dados. |
3. Reiniciar o controller do Argo Workflows e o Argo Server
Reinicie o controller do Argo Workflows e o Argo Server para aplicar as configurações de persistência.
Próximos passos
Para desativar a persistência, defina
archive: falseno blocopersistencee reinicie o controller do Argo Workflows e o Argo Server.Para visualizar workflows arquivados, abra a interface do Argo Server e acesse a seção Archived Workflows.