O Argo Workflows exclui periodicamente recursos relacionados a workflows dos clusters. Para manter o histórico e permitir análises e rastreamento, persista os dados do workflow em um banco de dados. Com a persistência configurada, os logs permanecem acessíveis mesmo após a exclusão dos workflows ou de seus pods. Este tópico usa o ApsaraDB RDS for MySQL como exemplo para descrever como persistir dados de workflow em um banco de dados.
Pré-requisitos
Antes de começar, verifique se você tem:
Um cluster de workflows do ACK Distributed Cloud Container Platform for Kubernetes
Uma instância do ApsaraDB RDS for MySQL. Para mais informações, consulte Crie uma instância do ApsaraDB RDS for MySQL
Um banco de dados e uma conta criados na instância do ApsaraDB RDS for MySQL. Para mais informações, consulte Crie contas e bancos de dados
A instância do ApsaraDB RDS for MySQL na mesma virtual private cloud (VPC) do cluster de workflows
O bloco CIDR da VPC adicionado à lista de permissões da instância do ApsaraDB RDS for MySQL
Crie um Secret para credenciais do banco de dados
Crie um Secret chamado argo-mysql-config no cluster de workflows para armazenar o nome de usuário e a senha do banco de dados.
Execute o seguinte comando:
kubectl create secret generic argo-mysql-config \
--namespace=default \
--from-literal=username=<database-username> \
--from-literal=password=<database-password>
Substitua <database-username> e <database-password> pelas credenciais da conta do banco de dados criada nos pré-requisitos.
Esse comando cria um Secret equivalente ao seguinte manifesto YAML:
apiVersion: v1
kind: Secret
metadata:
name: argo-mysql-config # Secret name referenced by the persistence configuration
namespace: default
type: Opaque
stringData:
username: <database-username> # Replace with your database username
password: <database-password> # Replace with your database password
Configure definições de persistência
Adicione o bloco persistence ao ConfigMap workflow-controller-configmap.
O ConfigMapworkflow-controller-configmapestá armazenado no namespace que usa o ID do cluster como nome. Definahostcomo o endpoint da instância do ApsaraDB RDS for MySQL. Definadatabasecomo o nome do banco de dados criado nos pré-requisitos. Definaarchivecomotruepara ativar o arquivamento de workflows.archiveTTLespecifica por quanto tempo os workflows arquivados são retidos. Por exemplo,30dretém workflows por 30 dias. Os valores válidos não se limitam a um conjunto fixo.
A tabela a seguir descreve os principais parâmetros:
|
Parâmetro |
Descrição |
Valor de exemplo |
|
|
Número máximo de conexões ociosas no pool |
|
|
|
Número máximo de conexões abertas. |
|
|
|
Tempo de vida máximo da conexão. |
|
|
|
Período de retenção para workflows arquivados |
|
|
|
Se o arquivamento de workflows está ativado |
|
|
|
Endpoint do ApsaraDB RDS for MySQL |
|
|
|
Porta do MySQL |
|
|
|
Nome do banco de dados |
|
|
|
Nome da tabela para dados de workflow |
|
|
|
Nome do Secret que armazena o nome de usuário do banco de dados |
|
|
|
Chave no Secret para o nome de usuário |
|
|
|
Nome do Secret que armazena a senha do banco de dados |
|
|
|
Chave no Secret para a senha |
|
persistence: |
connectionPool:
maxIdleConns: 100
maxOpenConns: 0
connMaxLifetime: 0s
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
Próximos passos
Após persistir os workflows, use a CLI do Argo para visualizar logs de workflow mesmo depois que os workflows forem excluídos. Para mais informações, consulte Configure o Log Service.