O Argo Workflows exclui periodicamente recursos relacionados a workflows, incluindo registros de status de execução. Para manter o histórico e permitir análise e rastreamento após a exclusão dos workflows ou de seus pods, persista os dados em um banco de dados externo.
Este tópico descreve como configure uma instância do ApsaraDB RDS for MySQL como backend de persistência para o Argo Workflows em execução em um cluster ACK.
Pré-requisitos
Antes de começar, verifique se você tem:
Um cluster ACK com o Argo Workflows instalado no namespace
argoPermissões para crie Secrets e modifique ConfigMaps no namespace
argo
Etapa 1: Configure o banco de dados ApsaraDB RDS for MySQL
Crie uma instância do ApsaraDB RDS for MySQL. Para obter as etapas detalhadas, consulte Criar uma instância RDS MySQL.
Crie um banco de dados na instância e configure uma conta de banco de dados.
-
Configure a virtual private cloud (VPC) da instância. A VPC deve ser a mesma utilizada pelo cluster ACK.
ImportanteAdicione o bloco CIDR dessa VPC à lista de permissões de IP da instância RDS. Caso contrário, o controlador do Argo Workflow não conseguirá se conectar ao banco de dados.
Anote o endpoint do banco de dados, o nome do banco de dados, o nome de usuário e a senha para usar na próxima etapa.
Para obter detalhes sobre o faturamento do RDS, consulte Itens faturáveis.
Etapa 2: Crie um Secret para as credenciais do banco de dados
No namespace argo, crie um Secret chamado argo-mysql-config para armazenar as credenciais do banco de dados:
apiVersion: v1
kind: Secret
metadata:
name: argo-mysql-config
namespace: argo
type: Opaque
stringData:
username: <your-database-username> # Replace with your RDS database account
password: <your-database-password> # Replace with your RDS database password
Aplique o Secret:
kubectl apply -f argo-mysql-secret.yaml
Etapa 3: Adicionar a configuração de persistência ao ConfigMap
Modifique o workflow-controller-configmap no namespace argo. Adicione a seguinte configuração de persistência no campo 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.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 principais
|
Parâmetro |
Descrição |
|
|
Endpoint da instância do ApsaraDB RDS for MySQL |
|
|
Porta da instância RDS. A porta padrão do MySQL é |
|
|
Nome do banco de dados criado na Etapa 1 |
|
|
Obrigatório. Nome da tabela para armazenamento dos dados de workflow |
|
|
Habilita a persistência de workflow. Defina como |
|
|
Período de retenção para workflows arquivados. Sem valor máximo. Exemplo: |
|
|
Número máximo de conexões ociosas no pool de conexões |
|
|
Número máximo de conexões abertas. |
|
|
Tempo de vida máximo de uma conexão. |
Etapa 4: Reiniciar os componentes do Argo
Os componentes principais do Argo não detectam automaticamente alterações no ConfigMap. Reinicie o controlador do Argo Workflow e o Argo Server para aplicar a configuração de persistência:
kubectl rollout restart deployment workflow-controller -n argo
kubectl rollout restart deployment argo-server -n argo
Verifique a configuração
Após reiniciar os componentes, verifique se a configuração de persistência foi aplicada:
-
Verifique nos logs do controlador do Argo Workflow se há mensagens de conexão com o banco de dados:
kubectl logs deployment/workflow-controller -n argo | grep -i persist Execute um workflow de teste. Após a conclusão, confirme se os dados foram armazenados no banco de dados RDS.
Faturamento
A configuração da persistência de workflow gera os seguintes custos adicionais:
ApsaraDB RDS for MySQL: Taxas de instância baseadas na especificação e na capacidade de armazenamento selecionadas. Para mais detalhes, consulte Itens faturáveis.