Argo Workflows は定期的にワークフローリソースをワークフロークラスターから削除します。分析やトレーシングのためにワークフロー履歴を保持するには、ワークフローデータをデータベースに永続化してください。永続化が設定されると、ワークフローやその Pod が削除された後でも、ワークフローログに引き続きアクセスできます。本トピックでは、ApsaraDB RDS for MySQL を例として、ワークフローデータをデータベースに永続化する方法を説明します。
前提条件
作業を開始する前に、以下の要件を満たしていることを確認してください。
ACK Distributed Cloud Container Platform for Kubernetes のワークフロークラスター
ApsaraDB RDS for MySQL インスタンス。詳細については、「ApsaraDB RDS for MySQL インスタンスの作成」をご参照ください。
ApsaraDB RDS for MySQL インスタンス用のデータベースおよびアカウント。詳細については、「アカウントとデータベースの作成」をご参照ください。
ApsaraDB R D S for MySQL インスタンスがワークフロークラスターと同じ仮想プライベートクラウド (VPC) 内にあること
VPC の CIDR ブロックが ApsaraDB RDS for MySQL インスタンスのホワイトリストに追加済みであること
データベース認証情報用のシークレットの作成
ワークフロークラスター内に、データベースのユーザー名とパスワードを格納するための argo-mysql-config という名前のシークレットを作成します。
次のコマンドを実行します。
kubectl create secret generic argo-mysql-config \
--namespace=default \
--from-literal=username=<database-username> \
--from-literal=password=<database-password><database-username> および <database-password> は、前提条件で作成したデータベースアカウントの認証情報に置き換えてください。
このコマンドにより、次の YAML マニフェストと同等のシークレットが作成されます。
apiVersion: v1
kind: Secret
metadata:
name: argo-mysql-config # 永続化構成から参照されるシークレット名
namespace: default
type: Opaque
stringData:
username: <database-username> # データベースのユーザー名に置き換えてください
password: <database-password> # データベースのパスワードに置き換えてください永続化設定の構成
workflow-controller-configmap ConfigMap に persistence ブロックを追加します。
workflow-controller-configmapConfigMap は、クラスター ID を名前空間名として使用する名前空間内に格納されています。
hostには、ApsaraDB RDS for MySQL インスタンスのエンドポイントを指定します。
databaseには、前提条件で作成したデータベースの名前を指定します。
archiveをtrueに設定すると、ワークフローのアーカイブが有効になります。
archiveTTLは、アーカイブされたワークフローの保持期間を指定します。たとえば、30dはワークフローを 30 日間保持します。有効な値は固定セットに限定されません。
次の表に、主なパラメーターを示します。
| パラメーター | 説明 | 例 |
|---|---|---|
connectionPool.maxIdleConns | 接続プール内の最大アイドル接続数 | 100 |
connectionPool.maxOpenConns | 最大オープン接続数。0 は無制限を意味します。 | 0 |
connectionPool.connMaxLifetime | 接続の最大生存時間。0s は制限なしを意味します。 | 0s |
archiveTTL | アーカイブされたワークフローの保持期間 | 30d |
archive | ワークフローのアーカイブを有効にするかどうか | true |
mysql.host | ApsaraDB RDS for MySQL のエンドポイント | rm-xxx.mysql.cn-beijing.rds.aliyuncs.com |
mysql.port | MySQL ポート | 3306 |
mysql.database | データベース名 | argo-workflow |
mysql.tableName | ワークフローデータ用のテーブル名 | argo_workflows |
mysql.userNameSecret.name | データベースユーザー名を格納するシークレット名 | argo-mysql-config |
mysql.userNameSecret.key | ユーザー名のシークレットを入力 | username |
mysql.passwordSecret.name | データベースパスワードを格納するシークレット名 | argo-mysql-config |
mysql.passwordSecret.key | パスワードにシークレットを入力してください | password |
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次のステップ
ワークフローが永続化された後は、ワークフローが削除された後でも Argo CLI を使用してワークフローログを表示できます。詳細については、「Log Service の構成」をご参照ください。